diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index 38cfe6eece2..e861df42c57 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -515,7 +515,7 @@ bool AndroidManager::createAndroidTemplatesIfNecessary(ProjectExplorer::Target * } } if (!androidFiles.isEmpty()) - qt4Project->rootProjectNode()->addFiles(ProjectExplorer::UnknownFileType, androidFiles); + qt4Project->rootProjectNode()->addFiles(androidFiles); int minApiLevel = 4; if (QtSupport::BaseQtVersion *qt = QtSupport::QtKitInformation::qtVersion(target->kit())) diff --git a/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.cpp b/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.cpp index 10df22e2ae8..ac9ae17b284 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.cpp @@ -74,39 +74,31 @@ bool AutotoolsProjectNode::removeSubProjects(const QStringList &proFilePaths) return false; } -bool AutotoolsProjectNode::addFiles(const FileType fileType, - const QStringList &filePaths, +bool AutotoolsProjectNode::addFiles( const QStringList &filePaths, QStringList *notAdded) { - Q_UNUSED(fileType); Q_UNUSED(filePaths); Q_UNUSED(notAdded); return false; } -bool AutotoolsProjectNode::removeFiles(const FileType fileType, - const QStringList &filePaths, +bool AutotoolsProjectNode::removeFiles(const QStringList &filePaths, QStringList *notRemoved) { - Q_UNUSED(fileType); Q_UNUSED(filePaths); Q_UNUSED(notRemoved); return false; } -bool AutotoolsProjectNode::deleteFiles(const FileType fileType, - const QStringList &filePaths) +bool AutotoolsProjectNode::deleteFiles(const QStringList &filePaths) { - Q_UNUSED(fileType); Q_UNUSED(filePaths); return false; } -bool AutotoolsProjectNode::renameFile(const FileType fileType, - const QString &filePath, +bool AutotoolsProjectNode::renameFile(const QString &filePath, const QString &newFilePath) { - Q_UNUSED(fileType); Q_UNUSED(filePath); Q_UNUSED(newFilePath); return false; diff --git a/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.h b/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.h index a443ad94d39..4257e2ad7fd 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.h +++ b/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.h @@ -64,17 +64,11 @@ public: bool canAddSubProject(const QString &proFilePath) const; bool addSubProjects(const QStringList &proFilePaths); bool removeSubProjects(const QStringList &proFilePaths); - bool addFiles(const ProjectExplorer::FileType fileType, - const QStringList &filePaths, - QStringList *notAdded = 0); - bool removeFiles(const ProjectExplorer::FileType fileType, - const QStringList &filePaths, - QStringList *notRemoved = 0); - bool deleteFiles(const ProjectExplorer::FileType fileType, - const QStringList &filePaths); - bool renameFile(const ProjectExplorer::FileType fileType, - const QString &filePath, - const QString &newFilePath); + bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0); + bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0); + bool deleteFiles(const QStringList &filePaths); + bool renameFile(const QString &filePath, + const QString &newFilePath); QList runConfigurationsFor(Node *node); private: diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp index 2d55f001e51..f4f35bd7e64 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp @@ -67,32 +67,28 @@ bool CMakeProjectNode::removeSubProjects(const QStringList &proFilePaths) return false; } -bool CMakeProjectNode::addFiles(const ProjectExplorer::FileType fileType, const QStringList &filePaths, QStringList *notAdded) +bool CMakeProjectNode::addFiles(const QStringList &filePaths, QStringList *notAdded) { - Q_UNUSED(fileType) Q_UNUSED(filePaths) Q_UNUSED(notAdded) return false; } -bool CMakeProjectNode::removeFiles(const ProjectExplorer::FileType fileType, const QStringList &filePaths, QStringList *notRemoved) +bool CMakeProjectNode::removeFiles(const QStringList &filePaths, QStringList *notRemoved) { - Q_UNUSED(fileType) Q_UNUSED(filePaths) Q_UNUSED(notRemoved) return false; } -bool CMakeProjectNode::deleteFiles(const ProjectExplorer::FileType fileType, const QStringList &filePaths) +bool CMakeProjectNode::deleteFiles(const QStringList &filePaths) { - Q_UNUSED(fileType) Q_UNUSED(filePaths) return false; } -bool CMakeProjectNode::renameFile(const ProjectExplorer::FileType fileType, const QString &filePath, const QString &newFilePath) +bool CMakeProjectNode::renameFile(const QString &filePath, const QString &newFilePath) { - Q_UNUSED(fileType) Q_UNUSED(filePath) Q_UNUSED(newFilePath) return false; diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h index 68738baca92..ef81cfae498 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h +++ b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h @@ -48,17 +48,13 @@ public: virtual bool addSubProjects(const QStringList &proFilePaths); virtual bool removeSubProjects(const QStringList &proFilePaths); - virtual bool addFiles(const ProjectExplorer::FileType fileType, - const QStringList &filePaths, + virtual bool addFiles( const QStringList &filePaths, QStringList *notAdded = 0); - virtual bool removeFiles(const ProjectExplorer::FileType fileType, - const QStringList &filePaths, + virtual bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0); - virtual bool deleteFiles(const ProjectExplorer::FileType fileType, - const QStringList &filePaths); - virtual bool renameFile(const ProjectExplorer::FileType fileType, - const QString &filePath, - const QString &newFilePath); + virtual bool deleteFiles(const QStringList &filePaths); + virtual bool renameFile(const QString &filePath, + const QString &newFilePath); virtual QList runConfigurationsFor(Node *node); }; diff --git a/src/plugins/genericprojectmanager/genericprojectnodes.cpp b/src/plugins/genericprojectmanager/genericprojectnodes.cpp index 192e1c9f459..687658c326b 100644 --- a/src/plugins/genericprojectmanager/genericprojectnodes.cpp +++ b/src/plugins/genericprojectmanager/genericprojectnodes.cpp @@ -259,37 +259,28 @@ bool GenericProjectNode::removeSubProjects(const QStringList &proFilePaths) return false; } -bool GenericProjectNode::addFiles(const FileType fileType, - const QStringList &filePaths, QStringList *notAdded) +bool GenericProjectNode::addFiles(const QStringList &filePaths, QStringList *notAdded) { - Q_UNUSED(fileType) Q_UNUSED(notAdded) return m_project->addFiles(filePaths); } -bool GenericProjectNode::removeFiles(const FileType fileType, - const QStringList &filePaths, QStringList *notRemoved) +bool GenericProjectNode::removeFiles(const QStringList &filePaths, QStringList *notRemoved) { - Q_UNUSED(fileType) Q_UNUSED(notRemoved) return m_project->removeFiles(filePaths); } -bool GenericProjectNode::deleteFiles(const FileType fileType, - const QStringList &filePaths) +bool GenericProjectNode::deleteFiles(const QStringList &filePaths) { - Q_UNUSED(fileType) Q_UNUSED(filePaths) return false; } -bool GenericProjectNode::renameFile(const FileType fileType, - const QString &filePath, const QString &newFilePath) +bool GenericProjectNode::renameFile(const QString &filePath, const QString &newFilePath) { - Q_UNUSED(fileType) - return m_project->renameFile(filePath, newFilePath); } diff --git a/src/plugins/genericprojectmanager/genericprojectnodes.h b/src/plugins/genericprojectmanager/genericprojectnodes.h index 35d2465a5c2..38ed7bdc17e 100644 --- a/src/plugins/genericprojectmanager/genericprojectnodes.h +++ b/src/plugins/genericprojectmanager/genericprojectnodes.h @@ -62,19 +62,10 @@ public: bool addSubProjects(const QStringList &proFilePaths); bool removeSubProjects(const QStringList &proFilePaths); - bool addFiles(const ProjectExplorer::FileType fileType, - const QStringList &filePaths, - QStringList *notAdded = 0); - - bool removeFiles(const ProjectExplorer::FileType fileType, - const QStringList &filePaths, - QStringList *notRemoved = 0); - bool deleteFiles(const ProjectExplorer::FileType fileType, - const QStringList &filePaths); - - bool renameFile(const ProjectExplorer::FileType fileType, - const QString &filePath, - const QString &newFilePath); + bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0); + bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0); + bool deleteFiles(const QStringList &filePaths); + bool renameFile(const QString &filePath, const QString &newFilePath); QList runConfigurationsFor(Node *node); diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index d9ce0097843..374e7050775 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -2844,16 +2844,9 @@ void ProjectExplorerPlugin::addExistingFiles(ProjectNode *projectNode, const QSt const QString dir = directoryFor(projectNode); QStringList fileNames = filePaths; - QHash fileTypeToFiles; - foreach (const QString &fileName, fileNames) { - FileType fileType = typeForFileName(Core::ICore::mimeDatabase(), QFileInfo(fileName)); - fileTypeToFiles.insertMulti(fileType, fileName); - } - QStringList notAdded; - foreach (const FileType type, fileTypeToFiles.uniqueKeys()) { - projectNode->addFiles(type, fileTypeToFiles.values(type), ¬Added); - } + projectNode->addFiles(fileNames, ¬Added); + if (!notAdded.isEmpty()) { QString message = tr("Could not add following files to project %1:\n").arg(projectNode->displayName()); QString files = notAdded.join(QString(QLatin1Char('\n'))); @@ -2919,7 +2912,7 @@ void ProjectExplorerPlugin::removeFile() ProjectNode *projectNode = fileNode->projectNode(); Q_ASSERT(projectNode); - if (!projectNode->removeFiles(fileNode->fileType(), QStringList(filePath))) { + if (!projectNode->removeFiles(QStringList(filePath))) { QMessageBox::warning(Core::ICore::mainWindow(), tr("Removing File Failed"), tr("Could not remove file %1 from project %2.").arg(filePath).arg(projectNode->displayName())); return; @@ -2947,7 +2940,7 @@ void ProjectExplorerPlugin::deleteFile() ProjectNode *projectNode = fileNode->projectNode(); QTC_ASSERT(projectNode, return); - projectNode->deleteFiles(fileNode->fileType(), QStringList(filePath)); + projectNode->deleteFiles(QStringList(filePath)); Core::DocumentManager::expectFileChange(filePath); if (Core::IVersionControl *vc = @@ -2988,7 +2981,7 @@ void ProjectExplorerPlugin::renameFile(Node *node, const QString &to) if (Core::FileUtils::renameFile(orgFilePath, newFilePath)) { // Tell the project plugin about rename ProjectNode *projectNode = fileNode->projectNode(); - if (!projectNode->renameFile(fileNode->fileType(), orgFilePath, newFilePath)) { + if (!projectNode->renameFile(orgFilePath, newFilePath)) { QMessageBox::warning(Core::ICore::mainWindow(), tr("Project Editing Failed"), tr("The file %1 was renamed to %2, but the project file %3 could not be automatically changed.") .arg(orgFilePath) diff --git a/src/plugins/projectexplorer/projectfilewizardextension.cpp b/src/plugins/projectexplorer/projectfilewizardextension.cpp index dca5a2c688b..9db36e72bad 100644 --- a/src/plugins/projectexplorer/projectfilewizardextension.cpp +++ b/src/plugins/projectexplorer/projectfilewizardextension.cpp @@ -472,8 +472,6 @@ bool ProjectFileWizardExtension::processProject( const QList &files, bool *removeOpenProjectAttribute, QString *errorMessage) { - typedef QMultiMap TypeFileMap; - *removeOpenProjectAttribute = false; QString generatedProject = generatedProjectFilePath(files); @@ -491,20 +489,13 @@ bool ProjectFileWizardExtension::processProject( } *removeOpenProjectAttribute = true; } else { - // Split into lists by file type and bulk-add them. - TypeFileMap typeFileMap; - const Core::MimeDatabase *mdb = Core::ICore::mimeDatabase(); - foreach (const Core::GeneratedFile &generatedFile, files) { - const QString path = generatedFile.path(); - typeFileMap.insert(typeForFileName(mdb, path), path); - } - foreach (FileType type, typeFileMap.uniqueKeys()) { - const QStringList typeFiles = typeFileMap.values(type); - if (!project->addFiles(type, typeFiles)) { - *errorMessage = tr("Failed to add one or more files to project\n'%1' (%2)."). - arg(project->path(), typeFiles.join(QString(QLatin1Char(',')))); - return false; - } + QStringList filePaths; + foreach (const Core::GeneratedFile &generatedFile, files) + filePaths << generatedFile.path(); + if (!project->addFiles(filePaths)) { + *errorMessage = tr("Failed to add one or more files to project\n'%1' (%2)."). + arg(project->path(), filePaths.join(QString(QLatin1Char(',')))); + return false; } } return true; diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index 3b81a0b498f..a84c21e7156 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -837,27 +837,3 @@ NodesWatcher::NodesWatcher(QObject *parent) : QObject(parent) { } - -// TODO Maybe put this in core, so that all can benefit -FileType typeForFileName(const Core::MimeDatabase *db, const QFileInfo &file) -{ - const Core::MimeType mt = db->findByFile(file); - if (!mt) - return UnknownFileType; - - const QString typeName = mt.type(); - if (typeName == QLatin1String(Constants::CPP_SOURCE_MIMETYPE) - || typeName == QLatin1String(Constants::C_SOURCE_MIMETYPE)) - return SourceType; - if (typeName == QLatin1String(Constants::CPP_HEADER_MIMETYPE) - || typeName == QLatin1String(Constants::C_HEADER_MIMETYPE)) - return HeaderType; - if (typeName == QLatin1String(Constants::RESOURCE_MIMETYPE)) - return ResourceType; - if (typeName == QLatin1String(Constants::FORM_MIMETYPE)) - return FormType; - if (mt.subClassesOf().contains(QLatin1String(Constants::QML_MIMETYPE)) - || typeName == QLatin1String(Constants::QML_MIMETYPE)) - return QMLType; - return UnknownFileType; -} diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index 90e965ee336..b324dff4eca 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -214,18 +214,10 @@ public: virtual bool removeSubProjects(const QStringList &proFilePaths) = 0; - virtual bool addFiles(const FileType fileType, - const QStringList &filePaths, - QStringList *notAdded = 0) = 0; - // TODO: Maybe remove fileType, can be detected by project - virtual bool removeFiles(const FileType fileType, - const QStringList &filePaths, - QStringList *notRemoved = 0) = 0; - virtual bool deleteFiles(const FileType fileType, - const QStringList &filePaths) = 0; - virtual bool renameFile(const FileType fileType, - const QString &filePath, - const QString &newFilePath) = 0; + virtual bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0) = 0; + virtual bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0) = 0; + virtual bool deleteFiles(const QStringList &filePaths) = 0; + virtual bool renameFile(const QString &filePath, const QString &newFilePath) = 0; // by default returns false virtual bool deploysFolder(const QString &folder) const; @@ -343,7 +335,4 @@ private: } // namespace ProjectExplorer -// HACK: THERE SHOULD BE ONE PLACE TO MAKE THE FILE ENDING->FILE TYPE ASSOCIATION -ProjectExplorer::FileType typeForFileName(const Core::MimeDatabase *db, const QFileInfo &file); - #endif // PROJECTNODES_H diff --git a/src/plugins/qbsprojectmanager/qbsnodes.cpp b/src/plugins/qbsprojectmanager/qbsnodes.cpp index 8606d73646b..7f2493a231f 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.cpp +++ b/src/plugins/qbsprojectmanager/qbsnodes.cpp @@ -286,32 +286,28 @@ bool QbsBaseProjectNode::removeSubProjects(const QStringList &proFilePaths) return false; } -bool QbsBaseProjectNode::addFiles(const ProjectExplorer::FileType fileType, const QStringList &filePaths, QStringList *notAdded) +bool QbsBaseProjectNode::addFiles(const QStringList &filePaths, QStringList *notAdded) { - Q_UNUSED(fileType); Q_UNUSED(filePaths); Q_UNUSED(notAdded); return false; } -bool QbsBaseProjectNode::removeFiles(const ProjectExplorer::FileType fileType, const QStringList &filePaths, QStringList *notRemoved) +bool QbsBaseProjectNode::removeFiles(const QStringList &filePaths, QStringList *notRemoved) { - Q_UNUSED(fileType); Q_UNUSED(filePaths); Q_UNUSED(notRemoved); return false; } -bool QbsBaseProjectNode::deleteFiles(const ProjectExplorer::FileType fileType, const QStringList &filePaths) +bool QbsBaseProjectNode::deleteFiles(const QStringList &filePaths) { - Q_UNUSED(fileType); Q_UNUSED(filePaths); return false; } -bool QbsBaseProjectNode::renameFile(const ProjectExplorer::FileType fileType, const QString &filePath, const QString &newFilePath) +bool QbsBaseProjectNode::renameFile(const QString &filePath, const QString &newFilePath) { - Q_UNUSED(fileType); Q_UNUSED(filePath); Q_UNUSED(newFilePath); return false; diff --git a/src/plugins/qbsprojectmanager/qbsnodes.h b/src/plugins/qbsprojectmanager/qbsnodes.h index 2070483493b..250793c5272 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.h +++ b/src/plugins/qbsprojectmanager/qbsnodes.h @@ -90,17 +90,10 @@ public: bool removeSubProjects(const QStringList &proFilePaths); - bool addFiles(const ProjectExplorer::FileType fileType, - const QStringList &filePaths, - QStringList *notAdded = 0); - bool removeFiles(const ProjectExplorer::FileType fileType, - const QStringList &filePaths, - QStringList *notRemoved = 0); - bool deleteFiles(const ProjectExplorer::FileType fileType, - const QStringList &filePaths); - bool renameFile(const ProjectExplorer::FileType fileType, - const QString &filePath, - const QString &newFilePath); + bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0); + bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0); + bool deleteFiles(const QStringList &filePaths); + bool renameFile(const QString &filePath, const QString &newFilePath); QList runConfigurationsFor(Node *node); diff --git a/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp b/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp index 70cd26e8265..01c43d173e5 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp @@ -198,26 +198,22 @@ bool QmlProjectNode::removeSubProjects(const QStringList &proFilePaths) return false; } -bool QmlProjectNode::addFiles(const ProjectExplorer::FileType /*fileType*/, - const QStringList &filePaths, QStringList * /*notAdded*/) +bool QmlProjectNode::addFiles(const QStringList &filePaths, QStringList * /*notAdded*/) { return m_project->addFiles(filePaths); } -bool QmlProjectNode::removeFiles(const ProjectExplorer::FileType /*fileType*/, - const QStringList & /*filePaths*/, QStringList * /*notRemoved*/) +bool QmlProjectNode::removeFiles(const QStringList & /*filePaths*/, QStringList * /*notRemoved*/) { return false; } -bool QmlProjectNode::deleteFiles(const ProjectExplorer::FileType /*fileType*/, - const QStringList & /*filePaths*/) +bool QmlProjectNode::deleteFiles(const QStringList & /*filePaths*/) { return true; } -bool QmlProjectNode::renameFile(const ProjectExplorer::FileType /*fileType*/, - const QString & /*filePath*/, const QString & /*newFilePath*/) +bool QmlProjectNode::renameFile(const QString & /*filePath*/, const QString & /*newFilePath*/) { return true; } diff --git a/src/plugins/qmlprojectmanager/qmlprojectnodes.h b/src/plugins/qmlprojectmanager/qmlprojectnodes.h index 6796467c5f5..d75d4ece21d 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectnodes.h +++ b/src/plugins/qmlprojectmanager/qmlprojectnodes.h @@ -63,20 +63,10 @@ public: virtual bool addSubProjects(const QStringList &proFilePaths); virtual bool removeSubProjects(const QStringList &proFilePaths); - virtual bool addFiles(const ProjectExplorer::FileType fileType, - const QStringList &filePaths, - QStringList *notAdded = 0); - - virtual bool removeFiles(const ProjectExplorer::FileType fileType, - const QStringList &filePaths, - QStringList *notRemoved = 0); - - virtual bool deleteFiles(const ProjectExplorer::FileType fileType, - const QStringList &filePaths); - - virtual bool renameFile(const ProjectExplorer::FileType fileType, - const QString &filePath, - const QString &newFilePath); + virtual bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0); + virtual bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0); + virtual bool deleteFiles(const QStringList &filePaths); + virtual bool renameFile(const QString &filePath, const QString &newFilePath); virtual QList runConfigurationsFor(Node *node); diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index 8d2efbe0ba8..b66cb033e3c 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -52,6 +52,7 @@ #include #include +#include #include #include @@ -921,7 +922,7 @@ bool Qt4PriFileNode::addSubProjects(const QStringList &proFilePaths) uniqueProFilePaths.append(simplifyProFilePath(proFile)); QStringList failedFiles; - changeFiles(ProjectExplorer::ProjectFileType, uniqueProFilePaths, &failedFiles, AddToProFile); + changeFiles(QLatin1String(Constants::PROFILE_MIMETYPE), uniqueProFilePaths, &failedFiles, AddToProFile); return failedFiles.isEmpty(); } @@ -929,20 +930,19 @@ bool Qt4PriFileNode::addSubProjects(const QStringList &proFilePaths) bool Qt4PriFileNode::removeSubProjects(const QStringList &proFilePaths) { QStringList failedOriginalFiles; - changeFiles(ProjectExplorer::ProjectFileType, proFilePaths, &failedOriginalFiles, RemoveFromProFile); + changeFiles(QLatin1String(Constants::PROFILE_MIMETYPE), proFilePaths, &failedOriginalFiles, RemoveFromProFile); QStringList simplifiedProFiles; foreach (const QString &proFile, failedOriginalFiles) simplifiedProFiles.append(simplifyProFilePath(proFile)); QStringList failedSimplifiedFiles; - changeFiles(ProjectExplorer::ProjectFileType, simplifiedProFiles, &failedSimplifiedFiles, RemoveFromProFile); + changeFiles(QLatin1String(Constants::PROFILE_MIMETYPE), simplifiedProFiles, &failedSimplifiedFiles, RemoveFromProFile); return failedSimplifiedFiles.isEmpty(); } -bool Qt4PriFileNode::addFiles(const FileType fileType, const QStringList &filePaths, - QStringList *notAdded) +bool Qt4PriFileNode::addFiles(const QStringList &filePaths, QStringList *notAdded) { // If a file is already referenced in the .pro file then we don't add them. // That ignores scopes and which variable was used to reference the file @@ -953,68 +953,103 @@ bool Qt4PriFileNode::addFiles(const FileType fileType, const QStringList &filePa accept(&visitor); const QStringList &allFiles = visitor.filePaths(); - QStringList qrcFiles; // the list of qrc files referenced from ui files - if (fileType == ProjectExplorer::FormType) { - foreach (const QString &formFile, filePaths) { - QStringList resourceFiles = formResources(formFile); - foreach (const QString &resourceFile, resourceFiles) - if (!qrcFiles.contains(resourceFile)) - qrcFiles.append(resourceFile); - } - } - - QStringList uniqueQrcFiles; - foreach (const QString &file, qrcFiles) { - if (!allFiles.contains(file)) - uniqueQrcFiles.append(file); - } - - QStringList uniqueFilePaths; - foreach (const QString &file, filePaths) { - if (!allFiles.contains(file)) - uniqueFilePaths.append(file); + typedef QMap TypeFileMap; + // Split into lists by file type and bulk-add them. + TypeFileMap typeFileMap; + const Core::MimeDatabase *mdb = Core::ICore::mimeDatabase(); + foreach (const QString file, filePaths) { + const Core::MimeType mt = mdb->findByFile(file); + typeFileMap[mt.type()] << file; } QStringList failedFiles; - changeFiles(fileType, uniqueFilePaths, &failedFiles, AddToProFile); - if (notAdded) - *notAdded = failedFiles; - changeFiles(ProjectExplorer::ResourceType, uniqueQrcFiles, &failedFiles, AddToProFile); - if (notAdded) - *notAdded += failedFiles; + foreach (const QString &type, typeFileMap.keys()) { + const QStringList typeFiles = typeFileMap.value(type); + QStringList qrcFiles; // the list of qrc files referenced from ui files + if (type == QLatin1String(ProjectExplorer::Constants::RESOURCE_MIMETYPE)) { + foreach (const QString &formFile, typeFiles) { + QStringList resourceFiles = formResources(formFile); + foreach (const QString &resourceFile, resourceFiles) + if (!qrcFiles.contains(resourceFile)) + qrcFiles.append(resourceFile); + } + } + + QStringList uniqueQrcFiles; + foreach (const QString &file, qrcFiles) { + if (!allFiles.contains(file)) + uniqueQrcFiles.append(file); + } + + QStringList uniqueFilePaths; + foreach (const QString &file, typeFiles) { + if (!allFiles.contains(file)) + uniqueFilePaths.append(file); + } + + changeFiles(type, uniqueFilePaths, &failedFiles, AddToProFile); + if (notAdded) + *notAdded += failedFiles; + changeFiles(QLatin1String(ProjectExplorer::Constants::RESOURCE_MIMETYPE), uniqueQrcFiles, &failedFiles, AddToProFile); + if (notAdded) + *notAdded += failedFiles; + } return failedFiles.isEmpty(); } -bool Qt4PriFileNode::removeFiles(const FileType fileType, const QStringList &filePaths, +bool Qt4PriFileNode::removeFiles(const QStringList &filePaths, QStringList *notRemoved) { QStringList failedFiles; - changeFiles(fileType, filePaths, &failedFiles, RemoveFromProFile); - if (notRemoved) - *notRemoved = failedFiles; + typedef QMap TypeFileMap; + // Split into lists by file type and bulk-add them. + TypeFileMap typeFileMap; + const Core::MimeDatabase *mdb = Core::ICore::mimeDatabase(); + foreach (const QString file, filePaths) { + const Core::MimeType mt = mdb->findByFile(file); + typeFileMap[mt.type()] << file; + } + foreach (const QString &type, typeFileMap.keys()) { + const QStringList typeFiles = typeFileMap.value(type); + changeFiles(type, typeFiles, &failedFiles, RemoveFromProFile); + if (notRemoved) + *notRemoved = failedFiles; + } return failedFiles.isEmpty(); } -bool Qt4PriFileNode::deleteFiles(const FileType fileType, const QStringList &filePaths) +bool Qt4PriFileNode::deleteFiles(const QStringList &filePaths) { QStringList failedFiles; - changeFiles(fileType, filePaths, &failedFiles, RemoveFromProFile); + typedef QMap TypeFileMap; + // Split into lists by file type and bulk-add them. + TypeFileMap typeFileMap; + const Core::MimeDatabase *mdb = Core::ICore::mimeDatabase(); + foreach (const QString file, filePaths) { + const Core::MimeType mt = mdb->findByFile(file); + typeFileMap[mt.type()] << file; + } + foreach (const QString &type, typeFileMap.keys()) { + const QStringList typeFiles = typeFileMap.value(type); + changeFiles(type, typeFiles, &failedFiles, RemoveFromProFile); + } return true; } -bool Qt4PriFileNode::renameFile(const FileType fileType, const QString &filePath, - const QString &newFilePath) +bool Qt4PriFileNode::renameFile(const QString &filePath, const QString &newFilePath) { if (newFilePath.isEmpty()) return false; bool changeProFileOptional = deploysFolder(QFileInfo(filePath).absolutePath()); - + const Core::MimeDatabase *mdb = Core::ICore::mimeDatabase(); + const Core::MimeType mt = mdb->findByFile(filePath); QStringList dummy; - changeFiles(fileType, QStringList() << filePath, &dummy, RemoveFromProFile); + + changeFiles(mt.type(), QStringList() << filePath, &dummy, RemoveFromProFile); if (!dummy.isEmpty() && !changeProFileOptional) return false; - changeFiles(fileType, QStringList() << newFilePath, &dummy, AddToProFile); + changeFiles(mt.type(), QStringList() << newFilePath, &dummy, AddToProFile); if (!dummy.isEmpty() && !changeProFileOptional) return false; return true; @@ -1086,7 +1121,7 @@ QStringList Qt4PriFileNode::formResources(const QString &formFile) const return resourceFiles; } -void Qt4PriFileNode::changeFiles(const FileType fileType, +void Qt4PriFileNode::changeFiles(const QString &mimeType, const QStringList &filePaths, QStringList *notChanged, ChangeType change) @@ -1137,12 +1172,11 @@ void Qt4PriFileNode::changeFiles(const FileType fileType, includeFile = parser.parsedProBlock(contents, m_projectFilePath, 1); } - const QStringList vars = varNames(fileType); + const QStringList vars = varNames(mimeType); QDir priFileDir = QDir(m_qt4ProFileNode->m_projectDir); if (change == AddToProFile) { // Use the first variable for adding. - // Yes, that's broken for adding objective c sources or other stuff. ProWriter::addFiles(includeFile, &lines, priFileDir, filePaths, vars.first()); notChanged->clear(); } else { // RemoveFromProFile @@ -1217,6 +1251,40 @@ QStringList Qt4PriFileNode::varNames(ProjectExplorer::FileType type) return vars; } +//! +//! \brief Qt4PriFileNode::varNames +//! \param mimeType +//! \return the qmake variable name for the mime type +//! Note: For adding the first variable in the list is used +//! For removal all variables returned a searched for the file +//! +QStringList Qt4PriFileNode::varNames(const QString &mimeType) +{ + QStringList vars; + if (mimeType == QLatin1String(ProjectExplorer::Constants::CPP_HEADER_MIMETYPE) + || mimeType == QLatin1String(ProjectExplorer::Constants::C_HEADER_MIMETYPE)) { + vars << QLatin1String("HEADERS"); + vars << QLatin1String("OBJECTIVE_HEADERS"); + } else if (mimeType == QLatin1String(ProjectExplorer::Constants::CPP_SOURCE_MIMETYPE) + || mimeType == QLatin1String(ProjectExplorer::Constants::C_SOURCE_MIMETYPE)) { + vars << QLatin1String("SOURCES"); + } else if (mimeType == QLatin1String(CppTools::Constants::OBJECTIVE_CPP_SOURCE_MIMETYPE)) { + vars << QLatin1String("OBJECTIVE_SOURCES"); + } else if (mimeType == QLatin1String(ProjectExplorer::Constants::RESOURCE_MIMETYPE)) { + vars << QLatin1String("RESOURCES"); + } else if (mimeType == QLatin1String(ProjectExplorer::Constants::FORM_MIMETYPE)) { + vars << QLatin1String("FORMS"); + } else if (mimeType == QLatin1String(ProjectExplorer::Constants::QML_MIMETYPE)) { + vars << QLatin1String("OTHER_FILES"); + } else if (mimeType == QLatin1String(Constants::PROFILE_MIMETYPE)) { + vars << QLatin1String("SUBDIRS"); + } else { + vars << QLatin1String("OTHER_FILES"); + vars << QLatin1String("ICON"); + } + return vars; +} + QStringList Qt4PriFileNode::dynamicVarNames(QtSupport::ProFileReader *readerExact, QtSupport::ProFileReader *readerCumulative, QtSupport::BaseQtVersion *qtVersion) diff --git a/src/plugins/qt4projectmanager/qt4nodes.h b/src/plugins/qt4projectmanager/qt4nodes.h index 58ba3bdb89e..b2e4967861f 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.h +++ b/src/plugins/qt4projectmanager/qt4nodes.h @@ -153,14 +153,10 @@ public: bool addSubProjects(const QStringList &proFilePaths); bool removeSubProjects(const QStringList &proFilePaths); - bool addFiles(const FileType fileType, const QStringList &filePaths, - QStringList *notAdded = 0); - bool removeFiles(const FileType fileType, const QStringList &filePaths, - QStringList *notRemoved = 0); - bool deleteFiles(const FileType fileType, - const QStringList &filePaths); - bool renameFile(const FileType fileType, - const QString &filePath, const QString &newFilePath); + bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0); + bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0); + bool deleteFiles(const QStringList &filePaths); + bool renameFile(const QString &filePath, const QString &newFilePath); bool folderChanged(const QString &changedFolder, const QSet &newFiles); @@ -175,7 +171,8 @@ public: static QSet recursiveEnumerate(const QString &folder); protected: void setIncludedInExactParse(bool b); - static QStringList varNames(FileType type); + static QStringList varNames(ProjectExplorer::FileType type); + static QStringList varNames(const QString &mimeType); static QStringList dynamicVarNames(QtSupport::ProFileReader *readerExact, QtSupport::ProFileReader *readerCumulative, QtSupport::BaseQtVersion *qtVersion); static QSet filterFilesProVariables(ProjectExplorer::FileType fileType, const QSet &files); static QSet filterFilesRecursiveEnumerata(ProjectExplorer::FileType fileType, const QSet &files); @@ -185,7 +182,7 @@ protected: RemoveFromProFile }; - void changeFiles(const FileType fileType, + void changeFiles(const QString &mimeType, const QStringList &filePaths, QStringList *notChanged, ChangeType change); diff --git a/src/plugins/valgrind/suppressiondialog.cpp b/src/plugins/valgrind/suppressiondialog.cpp index 8e1a4c25a47..e4ff3184e60 100644 --- a/src/plugins/valgrind/suppressiondialog.cpp +++ b/src/plugins/valgrind/suppressiondialog.cpp @@ -216,7 +216,7 @@ void SuppressionDialog::accept() if (!session->projectForFile(path)) { foreach (ProjectExplorer::Project *p, session->projects()) { if (path.startsWith(p->projectDirectory())) { - p->rootProjectNode()->addFiles(ProjectExplorer::UnknownFileType, QStringList() << path); + p->rootProjectNode()->addFiles(QStringList() << path); break; } }