diff options
author | Tobias Hunger <tobias.hunger@qt.io> | 2017-03-27 12:12:38 +0200 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@qt.io> | 2017-03-27 15:32:13 +0000 |
commit | fc5ce1e710500bb603ceafb9a2c005bbaf2f7cec (patch) | |
tree | 473544ed89fa3158c18f709445314f639f9485f8 /src/plugins/qmakeprojectmanager/qmakeproject.cpp | |
parent | d1a53045640fc37f00ae556e683a87927cdddf91 (diff) | |
download | qt-creator-fc5ce1e710500bb603ceafb9a2c005bbaf2f7cec.tar.gz |
ProjectExplorer: Handle project file list globally
Handle the generation of the list of files in a project globally, based
on the project tree.
Creator now has the concept of TreeManagers which can enrich the project
tree with additional data (e.g. the files found in a resource file), which
the project does not necessarily know about. So use that tree to find
the files that belong to a project instead of implementing similar features
in each project.
Change-Id: Ia375a914a1f2c0adaa427f9eda834eec2db07f68
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
Diffstat (limited to 'src/plugins/qmakeprojectmanager/qmakeproject.cpp')
-rw-r--r-- | src/plugins/qmakeprojectmanager/qmakeproject.cpp | 48 |
1 files changed, 1 insertions, 47 deletions
diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index a3c504e17f..0d76e07cdb 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -191,7 +191,6 @@ static QList<QmakeProject *> s_projects; */ QmakeProject::QmakeProject(const FileName &fileName) : - m_projectFiles(new QmakeProjectFiles), m_qmakeVfs(new QMakeVfs), m_cppCodeModelUpdater(new CppTools::CppProjectUpdater(this)) { @@ -230,7 +229,6 @@ QmakeProject::~QmakeProject() setRootProjectNode(nullptr); m_rootProFile.reset(); - delete m_projectFiles; m_cancelEvaluate = true; Q_ASSERT(m_qmakeGlobalsRefCnt == 0); delete m_qmakeVfs; @@ -241,32 +239,6 @@ QmakeProFile *QmakeProject::rootProFile() const return m_rootProFile.get(); } -void QmakeProject::updateFileList() -{ - QmakeProjectFiles files; - rootProjectNode()->forEachNode([&](FileNode *fileNode) { - const int type = static_cast<int>(fileNode->fileType()); - QStringList &targetList = fileNode->isGenerated() ? files.generatedFiles[type] : files.files[type]; - targetList.push_back(fileNode->filePath().toString()); - }, [&](FolderNode *folderNode) { - if (ProjectNode *projectNode = folderNode->asProjectNode()) - files.proFiles.append(projectNode->filePath().toString()); - if (dynamic_cast<ResourceEditor::ResourceTopLevelNode *>(folderNode)) - files.files[static_cast<int>(FileType::Resource)].push_back(folderNode->filePath().toString()); - }); - - for (QStringList &f : files.files) - f.removeDuplicates(); - for (QStringList &f : files.generatedFiles) - f.removeDuplicates(); - files.proFiles.removeDuplicates(); - - if (files != *m_projectFiles) { - *m_projectFiles = files; - emit fileListChanged(); - } -} - Project::RestoreResult QmakeProject::fromMap(const QVariantMap &map, QString *errorMessage) { RestoreResult result = Project::fromMap(map, errorMessage); @@ -576,7 +548,6 @@ void QmakeProject::decrementPendingEvaluateFutures() setAllBuildConfigurationsEnabled(true); m_asyncUpdateState = Base; - updateFileList(); updateCodeModels(); updateBuildSystemData(); if (activeTarget()) @@ -639,21 +610,6 @@ QString QmakeProject::displayName() const return projectFilePath().toFileInfo().completeBaseName(); } -QStringList QmakeProject::files(FilesMode fileMode) const -{ - QStringList files; - for (int i = 0; i < static_cast<int>(FileType::FileTypeSize); ++i) { - if (fileMode & SourceFiles) - files += m_projectFiles->files[i]; - if (fileMode & GeneratedFiles) - files += m_projectFiles->generatedFiles[i]; - } - - files.removeDuplicates(); - - return files; -} - // Find the folder that contains a file with a certain name (recurse down) static FolderNode *folderOf(FolderNode *in, const FileName &fileName) { @@ -1086,10 +1042,8 @@ void CentralizedFolderWatcher::delayedFolderChanged(const QString &folder) m_recursiveWatchedFolders += tmp; } - if (newOrRemovedFiles) { - m_project->updateFileList(); + if (newOrRemovedFiles) m_project->updateCodeModels(); - } } bool QmakeProject::needsConfiguration() const |