diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index e626457b311..e87a4a78ed7 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -190,6 +190,22 @@ bool GenericProject::setFiles(const QStringList &filePaths) return saveRawFileList(newList); } +bool GenericProject::renameFile(const QString &filePath, const QString &newFilePath) +{ + QStringList newList = m_rawFileList; + + QHash::iterator i = m_rawListEntries.find(filePath); + if (i != m_rawListEntries.end()) { + int index = newList.indexOf(i.value()); + if (index != -1) { + QDir baseDir(QFileInfo(m_fileName).dir()); + newList.replace(index, baseDir.relativeFilePath(newFilePath)); + } + } + + return saveRawFileList(newList); +} + void GenericProject::parseProject(RefreshOptions options) { if (options & Files) { diff --git a/src/plugins/genericprojectmanager/genericproject.h b/src/plugins/genericprojectmanager/genericproject.h index 7352ba8cf9d..3d3a962ec6f 100644 --- a/src/plugins/genericprojectmanager/genericproject.h +++ b/src/plugins/genericprojectmanager/genericproject.h @@ -97,6 +97,7 @@ public: bool addFiles(const QStringList &filePaths); bool removeFiles(const QStringList &filePaths); bool setFiles(const QStringList &filePaths); + bool renameFile(const QString &filePath, const QString &newFilePath); enum RefreshOptions { Files = 0x01, diff --git a/src/plugins/genericprojectmanager/genericprojectnodes.cpp b/src/plugins/genericprojectmanager/genericprojectnodes.cpp index 75d07728e05..78b048a6cc3 100644 --- a/src/plugins/genericprojectmanager/genericprojectnodes.cpp +++ b/src/plugins/genericprojectmanager/genericprojectnodes.cpp @@ -175,7 +175,8 @@ QList GenericProjectNode::supported return QList() << AddNewFile << AddExistingFile - << RemoveFile; + << RemoveFile + << Rename; } bool GenericProjectNode::canAddSubProject(const QString &proFilePath) const @@ -226,9 +227,8 @@ bool GenericProjectNode::renameFile(const ProjectExplorer::FileType fileType, const QString &filePath, const QString &newFilePath) { Q_UNUSED(fileType) - Q_UNUSED(filePath) - Q_UNUSED(newFilePath) - return false; + + return m_project->renameFile(filePath, newFilePath); } QList GenericProjectNode::runConfigurationsFor(Node *node)