ProjectExplorer: Add a FolderNode::addNestedNode() function

Also, rename buildTree() to addNestedNodes(), it's really
adding things, not recompletely (re-)building the subtree.

Use it whenever possible to avoid intermediate lists of items
to insert.

Change-Id: I5fde41e5b164a8a292410bd381a85f5efadf3471
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
hjk
2017-03-10 17:30:40 +01:00
parent 7428aa9cec
commit 4d8352a6c1
10 changed files with 46 additions and 55 deletions

View File

@@ -259,28 +259,25 @@ void GenericProject::refresh(RefreshOptions options)
parseProject(options);
if (options & Files) {
QList<FileNode *> fileNodes = Utils::transform(files(), [](const QString &f) {
auto newRoot = new GenericProjectNode(this);
for (const QString &f : files()) {
FileType fileType = FileType::Source; // ### FIXME
if (f.endsWith(".qrc"))
fileType = FileType::Resource;
return new FileNode(Utils::FileName::fromString(f), fileType, false);
});
newRoot->addNestedNode(new FileNode(Utils::FileName::fromString(f), fileType, false));
}
auto projectFilesNode = new FileNode(Utils::FileName::fromString(m_filesFileName),
newRoot->addNestedNode(new FileNode(Utils::FileName::fromString(m_filesFileName),
FileType::Project,
/* generated = */ false);
/* generated = */ false));
newRoot->addNestedNode(new FileNode(Utils::FileName::fromString(m_includesFileName),
FileType::Project,
/* generated = */ false));
newRoot->addNestedNode(new FileNode(Utils::FileName::fromString(m_configFileName),
FileType::Project,
/* generated = */ false));
auto projectIncludesNode = new FileNode(Utils::FileName::fromString(m_includesFileName),
FileType::Project,
/* generated = */ false);
auto projectConfigNode = new FileNode(Utils::FileName::fromString(m_configFileName),
FileType::Project,
/* generated = */ false);
fileNodes << projectFilesNode << projectIncludesNode << projectConfigNode;
auto newRoot = new GenericProjectNode(this);
newRoot->buildTree(fileNodes);
setRootProjectNode(newRoot);
}