diff --git a/src/plugins/qbsprojectmanager/qbsnodes.cpp b/src/plugins/qbsprojectmanager/qbsnodes.cpp index b363286bf59..5a3f93a81f9 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.cpp +++ b/src/plugins/qbsprojectmanager/qbsnodes.cpp @@ -285,11 +285,10 @@ void QbsGroupNode::setGroup(const qbs::GroupData *group, const QString &productP m_productPath = productPath; - // Set Product file node used to jump to the product setPath(group->location().fileName); setDisplayName(group->name()); - // set up file node... + // Set Product file node used to jump to the product QbsFileNode *indexFile = 0; if (!m_group) { indexFile = new QbsFileNode(group->location().fileName, @@ -303,15 +302,6 @@ void QbsGroupNode::setGroup(const qbs::GroupData *group, const QString &productP indexFile->emitNodeUpdated(); } - m_group = group; - - setGroup(this, group, productPath, QList() << indexFile); - emitNodeUpdated(); -} - -void QbsGroupNode::setGroup(QbsBaseProjectNode *root, const qbs::GroupData *group, - const QString &productPath, QList keepers) -{ // Build up a tree of nodes: FileTreeNode *tree = new FileTreeNode(QString()); @@ -325,13 +315,16 @@ void QbsGroupNode::setGroup(QbsBaseProjectNode *root, const qbs::GroupData *grou FileTreeNode::reorder(tree, productPath, tree); FileTreeNode::simplify(tree); - setupFolders(root, root, tree, productPath, keepers); + setupFolders(this, tree, productPath, QList() << indexFile); + delete tree; + + m_group = group; + emitNodeUpdated(); } -void QbsGroupNode::setupFolders(QbsBaseProjectNode *topLevel, ProjectExplorer::FolderNode *root, - FileTreeNode *node, const QString &baseDirPath, - QList keepers) +void QbsGroupNode::setupFolders(ProjectExplorer::FolderNode *root, FileTreeNode *node, + const QString &baseDirPath, QList keepers) { QList filesToRemove; foreach (ProjectExplorer::FileNode *fn, root->fileNodes()) { @@ -367,7 +360,7 @@ void QbsGroupNode::setupFolders(QbsBaseProjectNode *topLevel, ProjectExplorer::F ProjectExplorer::FolderNode *fn = root->findSubFolder(path); if (path == baseDirPath) { - setupFolders(topLevel, root, c, c->path(), foldersToKeep); + setupFolders(root, c, c->path(), foldersToKeep); continue; } @@ -379,14 +372,14 @@ void QbsGroupNode::setupFolders(QbsBaseProjectNode *topLevel, ProjectExplorer::F foldersToRemove.removeOne(fn); } else { fn = new ProjectExplorer::FolderNode(path); - topLevel->addFolderNodes(QList() << fn, root); + addFolderNodes(QList() << fn, root); } foldersToKeep.append(fn); - setupFolders(topLevel, fn, c, c->path()); + setupFolders(fn, c, c->path()); } - topLevel->removeFileNodes(filesToRemove, root); - topLevel->removeFolderNodes(foldersToRemove, root); - topLevel->addFileNodes(filesToAdd, root); + addFileNodes(filesToAdd, root); + removeFileNodes(filesToRemove, root); + removeFolderNodes(foldersToRemove, root); } // -------------------------------------------------------------------- @@ -417,38 +410,28 @@ void QbsProductNode::setProduct(const qbs::ProductData *prd) // Set Product file node used to jump to the product QList files = fileNodes(); - QList toKeep; if (files.isEmpty()) { - QbsFileNode *idx = new QbsFileNode(prd->location().fileName, - ProjectExplorer::ProjectFileType, false, - prd->location().line); - addFileNodes(QList() << idx, this); - toKeep.append(idx); + addFileNodes(QList() + << new QbsFileNode(prd->location().fileName, + ProjectExplorer::ProjectFileType, false, + prd->location().line), + this); } else { - QbsFileNode *idx = static_cast(files.at(0)); - idx->setPath(prd->location().fileName); - idx->setLine(prd->location().line); - toKeep.append(idx); + QbsFileNode *qbsFile = static_cast(files.at(0)); + qbsFile->setPath(prd->location().fileName); + qbsFile->setLine(prd->location().line); } QList toAdd; QList toRemove = subProjectNodes(); foreach (const qbs::GroupData &grp, prd->groups()) { - if (grp.name() == prd->name() && grp.location() == prd->location()) { - // Set implicit product group right onto this node: - QbsGroupNode::setGroup(this, &grp, productPath, toKeep); - continue; - } QbsGroupNode *qn = findGroupNode(grp.name()); if (qn) { toRemove.removeAll(qn); - toKeep.append(qn); qn->setGroup(&grp, productPath); } else { - qn = new QbsGroupNode(&grp, productPath); - toAdd.append(qn); - toKeep.append(qn); + toAdd << new QbsGroupNode(&grp, productPath); } } diff --git a/src/plugins/qbsprojectmanager/qbsnodes.h b/src/plugins/qbsprojectmanager/qbsnodes.h index 76135f88fb6..88e06e8f5be 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.h +++ b/src/plugins/qbsprojectmanager/qbsnodes.h @@ -68,8 +68,6 @@ private: class QbsGroupNode; -class QbsGroupNode; - class QbsBaseProjectNode : public ProjectExplorer::ProjectNode { Q_OBJECT @@ -100,9 +98,6 @@ public: const QString &newFilePath); QList runConfigurationsFor(Node *node); - -private: - friend class QbsGroupNode; }; // -------------------------------------------------------------------- @@ -122,13 +117,10 @@ public: QString productPath() const; - static void setGroup(QbsBaseProjectNode *root, const qbs::GroupData *group, - const QString &productPath, QList keepers); - private: - static void setupFolders(QbsBaseProjectNode *topLevel, FolderNode *root, FileTreeNode *node, - const QString &baseDirPath, - QList keepers = QList()); + void setupFolders(ProjectExplorer::FolderNode *root, FileTreeNode *node, + const QString &baseDirPath, + QList keepers = QList()); const qbs::GroupData *m_group; QString m_productPath;