void chanFileSystemDockWidget::renameFile() { QList<QTreeWidgetItem*> items = m_fileSystemTree->selectedItems(); if (items.isEmpty()) return; QTreeWidgetItem* parent = items.front(); QString fileName = QFileDialog::getSaveFileName(this, tr("edit name"), ".", tr("c/c++ header file(*.h)\n" "c/c++ header file(*.hpp)\n" "c source file(*.c)\n" "c++ source file(*.cpp)" )); if (fileName.isEmpty()) return; QTreeWidgetItem* item = items.front(); //修改了硬盘中的数据 if (!QFile::rename(item->data(0, FILE_NAME_KEY).toString(), fileName)) { QMessageBox::warning(this, "error", "failed to rename the file"); return; } if (QFile().exists(fileName)) { QMessageBox::warning(this, tr("error"), tr("failed to rename the file")); return; } //发射修改了的信号 emit renamedFile(item->data(0, FILE_NAME_KEY).toString(), fileName); QFileInfo info(fileName); item->setData(0, FILE_NAME_KEY, fileName); item->setText(0, info.completeBaseName()); QString suffix = info.completeSuffix(); if (suffix == "c") item->setIcon(0, QIcon(resourceFileName::pC)); else if (suffix == "cpp") item->setIcon(0, QIcon(resourceFileName::pCpp)); else if (suffix == "h" || suffix == "hpp") item->setIcon(0, QIcon(resourceFileName::pH)); }
TEST( ResourceDependenciesGraph, renamingFile ) { ResourceDependenciesGraph graph; FilePath file( "a.res" ); FilePath renamedFile( "a_renamed.res" ); FilePath res( "b.tmat" ); FilePath renamedRes( "b_renamed.tmat" ); graph.addDependency( file, res ); graph.onFileRenamed( file, renamedFile ); CPPUNIT_ASSERT_EQUAL( ( uint ) 0, graph.getAffectedResources( file ).size() ); CPPUNIT_ASSERT_EQUAL( ( uint ) 1, graph.getAffectedResources( renamedFile ).size() ); CPPUNIT_ASSERT_EQUAL( res.getRelativePath(), graph.getAffectedResources( renamedFile ).front().getRelativePath() ); CPPUNIT_ASSERT_EQUAL( ( uint ) 0, graph.getAffectedResources( res ).size() ); graph.onFileRenamed( res, renamedRes ); CPPUNIT_ASSERT_EQUAL( ( uint ) 1, graph.getAffectedResources( renamedFile ).size() ); CPPUNIT_ASSERT_EQUAL( renamedRes.getRelativePath(), graph.getAffectedResources( renamedFile ).front().getRelativePath() ); CPPUNIT_ASSERT_EQUAL( ( uint ) 0, graph.getAffectedResources( res ).size() ); CPPUNIT_ASSERT_EQUAL( ( uint ) 0, graph.getAffectedResources( renamedRes ).size() ); }
TEST( ResourceDependenciesGraph, removingDirectory ) { ResourceDependenciesGraph graph; FilePath file( "/directory1/a.res" ); FilePath renamedFile( "/renamedDirectory1/a.res" ); FilePath res( "/directory2/b.tmat" ); FilePath renamedRes( "/renamedDirectory2/b.tmat" ); FilePath dir1( "/directory1" ); FilePath renmamedDir1( "/renamedDirectory1" ); FilePath dir2( "/directory2" ); FilePath renmamedDir2( "/renamedDirectory2" ); graph.addDependency( file, res ); graph.onDirRenamed( dir1, renmamedDir1 ); CPPUNIT_ASSERT_EQUAL( ( uint ) 0, graph.getAffectedResources( file ).size() ); CPPUNIT_ASSERT_EQUAL( ( uint ) 1, graph.getAffectedResources( renamedFile ).size() ); CPPUNIT_ASSERT_EQUAL( res.getRelativePath(), graph.getAffectedResources( renamedFile ).front().getRelativePath() ); graph.onDirRenamed( dir2, renmamedDir2 ); CPPUNIT_ASSERT_EQUAL( ( uint ) 1, graph.getAffectedResources( renamedFile ).size() ); CPPUNIT_ASSERT_EQUAL( renamedRes.getRelativePath(), graph.getAffectedResources( renamedFile ).front().getRelativePath() ); }