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:
Tobias Hunger
2017-03-27 12:12:38 +02:00
parent d1a5304564
commit fc5ce1e710
19 changed files with 43 additions and 200 deletions

View File

@@ -168,9 +168,6 @@ void QmlProject::parseProject(RefreshOptions options)
if (options & Configuration) {
// update configuration
}
if (options & Files)
emit fileListChanged();
}
void QmlProject::refresh(RefreshOptions options)
@@ -195,16 +192,6 @@ void QmlProject::refresh(RefreshOptions options)
emit parsingFinished();
}
QStringList QmlProject::files() const
{
QStringList files;
if (m_projectItem)
files = m_projectItem.data()->files();
else
files = m_files;
return files;
}
QString QmlProject::mainFile() const
{
if (m_projectItem)
@@ -296,11 +283,6 @@ Internal::QmlProjectNode *QmlProject::rootProjectNode() const
return static_cast<Internal::QmlProjectNode *>(Project::rootProjectNode());
}
QStringList QmlProject::files(FilesMode) const
{
return files();
}
Project::RestoreResult QmlProject::fromMap(const QVariantMap &map, QString *errorMessage)
{
RestoreResult result = Project::fromMap(map, errorMessage);
@@ -371,9 +353,12 @@ Project::RestoreResult QmlProject::fromMap(const QVariantMap &map, QString *erro
void QmlProject::generateProjectTree()
{
if (!m_projectItem)
return;
auto newRoot = new Internal::QmlProjectNode(this);
for (const QString &f : files()) {
for (const QString &f : m_projectItem.data()->files()) {
FileType fileType = FileType::Source; // ### FIXME
if (f == projectFilePath().toString())
fileType = FileType::Project;