forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -476,6 +476,7 @@ void Project::setRootProjectNode(ProjectNode *root)
|
||||
if (root)
|
||||
root->setParentFolderNode(&d->m_containerNode);
|
||||
ProjectTree::emitSubtreeChanged(root);
|
||||
emit fileListChanged();
|
||||
|
||||
delete oldNode;
|
||||
}
|
||||
@@ -524,6 +525,25 @@ Project::RestoreResult Project::restoreSettings(QString *errorMessage)
|
||||
return result;
|
||||
}
|
||||
|
||||
QStringList Project::files(Project::FilesMode fileMode,
|
||||
const std::function<bool (const FileNode *)> &filter) const
|
||||
{
|
||||
QStringList result;
|
||||
|
||||
if (!rootProjectNode())
|
||||
return result;
|
||||
|
||||
rootProjectNode()->forEachNode([&](const FileNode *fn) {
|
||||
if (filter && !filter(fn))
|
||||
return;
|
||||
if ((fileMode == AllFiles)
|
||||
|| (fileMode == SourceFiles && !fn->isGenerated())
|
||||
|| (fileMode == GeneratedFiles && fn->isGenerated()))
|
||||
result.append(fn->filePath().toString());
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
Serializes all data into a QVariantMap.
|
||||
|
||||
Reference in New Issue
Block a user