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

@@ -468,16 +468,20 @@ QList<FolderNode*> FolderNode::folderNodes() const
return result;
}
void FolderNode::buildTree(QList<FileNode *> &files, const Utils::FileName &overrideBaseDir)
void FolderNode::addNestedNode(FileNode *fileNode, const Utils::FileName &overrideBaseDir)
{
foreach (ProjectExplorer::FileNode *fn, files) {
// Get relative path to rootNode
QString parentDir = fn->filePath().toFileInfo().absolutePath();
ProjectExplorer::FolderNode *folder
= recursiveFindOrCreateFolderNode(this, Utils::FileName::fromString(parentDir),
overrideBaseDir);
folder->addNode(fn);
}
// Get relative path to rootNode
QString parentDir = fileNode->filePath().toFileInfo().absolutePath();
FolderNode *folder = recursiveFindOrCreateFolderNode(this, Utils::FileName::fromString(parentDir),
overrideBaseDir);
folder->addNode(fileNode);
}
void FolderNode::addNestedNodes(QList<FileNode *> &files, const Utils::FileName &overrideBaseDir)
{
for (FileNode *fn : files)
addNestedNode(fn, overrideBaseDir);
}
// "Compress" a tree of foldernodes such that foldernodes with exactly one foldernode as a child