diff --git a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp index 9f86d714252e5c3f92a55ed287b3d939341dc8c5..96fe64c6006c63d5ebc8498e065ab5801a5fa846 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp @@ -313,7 +313,7 @@ void AutotoolsProject::buildFileNodeTree(const QDir &directory, // AutotoolsProjectNode::addFileNodes() is a very expensive operation. It is // important to collect as much file nodes of the same parent folder as // possible before invoking it. - m_rootNode->addFileNodes(fileNodes, oldParentFolder); + oldParentFolder->addFileNodes(fileNodes); fileNodes.clear(); } @@ -330,7 +330,7 @@ void AutotoolsProject::buildFileNodeTree(const QDir &directory, } if (!fileNodes.isEmpty()) - m_rootNode->addFileNodes(fileNodes, parentFolder); + parentFolder->addFileNodes(fileNodes); // Remove unused file nodes and empty folder nodes QHash<QString, Node *>::const_iterator it = nodeHash.constBegin(); @@ -338,12 +338,12 @@ void AutotoolsProject::buildFileNodeTree(const QDir &directory, if ((*it)->nodeType() == FileNodeType) { FileNode *fileNode = static_cast<FileNode *>(*it); FolderNode* parent = fileNode->parentFolderNode(); - m_rootNode->removeFileNodes(QList<FileNode *>() << fileNode, parent); + parent->removeFileNodes(QList<FileNode *>() << fileNode); // Remove all empty parent folders while (parent->subFolderNodes().isEmpty() && parent->fileNodes().isEmpty()) { FolderNode *grandParent = parent->parentFolderNode(); - m_rootNode->removeFolderNodes(QList<FolderNode *>() << parent, grandParent); + grandParent->removeFolderNodes(QList<FolderNode *>() << parent); parent = grandParent; if (parent == m_rootNode) break; @@ -382,7 +382,7 @@ FolderNode *AutotoolsProject::insertFolderNode(const QDir &nodeDir, QHash<QStrin } } - m_rootNode->addFolderNodes(QList<FolderNode *>() << folder, parentFolder); + parentFolder->addFolderNodes(QList<FolderNode *>() << folder); nodes.insert(nodePath, folder); return folder; diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 7c75de5ac2f8adf3fb52d6619ca115939dc3a3f8..c499d9571419d8ff84584ac570e238d132ea1f10 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -459,18 +459,18 @@ void CMakeProject::buildTree(CMakeProjectNode *rootNode, QList<ProjectExplorer:: // Get relative path to rootNode QString parentDir = QFileInfo(fn->path()).absolutePath(); ProjectExplorer::FolderNode *folder = findOrCreateFolder(rootNode, parentDir); - rootNode->addFileNodes(QList<ProjectExplorer::FileNode *>()<< fn, folder); + folder->addFileNodes(QList<ProjectExplorer::FileNode *>()<< fn); } // remove old file nodes and check whether folder nodes can be removed foreach (ProjectExplorer::FileNode *fn, deleted) { ProjectExplorer::FolderNode *parent = fn->parentFolderNode(); // qDebug()<<"removed"<<fn->path(); - rootNode->removeFileNodes(QList<ProjectExplorer::FileNode *>() << fn, parent); + parent->removeFileNodes(QList<ProjectExplorer::FileNode *>() << fn); // Check for empty parent while (parent->subFolderNodes().isEmpty() && parent->fileNodes().isEmpty()) { ProjectExplorer::FolderNode *grandparent = parent->parentFolderNode(); - rootNode->removeFolderNodes(QList<ProjectExplorer::FolderNode *>() << parent, grandparent); + grandparent->removeFolderNodes(QList<ProjectExplorer::FolderNode *>() << parent); parent = grandparent; if (parent == rootNode) break; @@ -501,7 +501,7 @@ ProjectExplorer::FolderNode *CMakeProject::findOrCreateFolder(CMakeProjectNode * // No FolderNode yet, so create it ProjectExplorer::FolderNode *tmp = new ProjectExplorer::FolderNode(path); tmp->setDisplayName(part); - rootNode->addFolderNodes(QList<ProjectExplorer::FolderNode *>() << tmp, parent); + parent->addFolderNodes(QList<ProjectExplorer::FolderNode *>() << tmp); parent = tmp; } } diff --git a/src/plugins/genericprojectmanager/genericprojectnodes.cpp b/src/plugins/genericprojectmanager/genericprojectnodes.cpp index 66a80f904009f6b955ee9acb4a4522d8dd323d27..e3ecda4434973408cabb32631f571fcad9d2d335 100644 --- a/src/plugins/genericprojectmanager/genericprojectnodes.cpp +++ b/src/plugins/genericprojectmanager/genericprojectnodes.cpp @@ -103,8 +103,7 @@ void GenericProjectNode::refresh(QSet<QString> oldFileList) addFileNodes(QList<FileNode *>() << projectFilesNode << projectIncludesNode - << projectConfigNode, - this); + << projectConfigNode); } // Do those separately @@ -142,7 +141,7 @@ void GenericProjectNode::refresh(QSet<QString> oldFileList) fileNodes.append(fileNode); } - addFileNodes(fileNodes, folder); + folder->addFileNodes(fileNodes); } filesInPaths = sortFilesIntoPaths(baseDir, removed); @@ -161,7 +160,7 @@ void GenericProjectNode::refresh(QSet<QString> oldFileList) fileNodes.append(fn); } - removeFileNodes(fileNodes, folder); + folder->removeFileNodes(fileNodes); } foreach (FolderNode *fn, subFolderNodes()) @@ -175,7 +174,7 @@ void GenericProjectNode::removeEmptySubFolders(FolderNode *gparent, FolderNode * removeEmptySubFolders(parent, fn); if (parent->subFolderNodes().isEmpty() && parent->fileNodes().isEmpty()) - removeFolderNodes(QList<FolderNode*>() << parent, gparent); + gparent->removeFolderNodes(QList<FolderNode*>() << parent); } FolderNode *GenericProjectNode::createFolderByName(const QStringList &components, int end) @@ -198,7 +197,7 @@ FolderNode *GenericProjectNode::createFolderByName(const QStringList &components FolderNode *parent = findFolderByName(components, end - 1); if (!parent) parent = createFolderByName(components, end - 1); - addFolderNodes(QList<FolderNode*>() << folder, parent); + parent->addFolderNodes(QList<FolderNode*>() << folder); return folder; } diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index b40258770a87f84e7416b15ef15446688026ce1a..01ca5f83504a1712d4102dd14c5bcdc2dcef5b9d 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -357,6 +357,168 @@ bool FolderNode::renameFile(const QString &filePath, const QString &newFilePath) return false; } +/*! + Adds file nodes specified by \a files to the internal list of the folder + and emits the corresponding signals from the projectNode. + + This function should be called within an implementation of the public function + addFiles. +*/ + +void FolderNode::addFileNodes(const QList<FileNode *> &files) +{ + Q_ASSERT(projectNode()); + ProjectNode *pn = projectNode(); + if (files.isEmpty()) + return; + + foreach (NodesWatcher *watcher, pn->watchers()) + emit watcher->filesAboutToBeAdded(this, files); + + foreach (FileNode *file, files) { + QTC_ASSERT(!file->parentFolderNode(), + qDebug("File node has already a parent folder")); + + file->setParentFolderNode(this); + file->setProjectNode(pn); + // Now find the correct place to insert file + if (m_fileNodes.count() == 0 + || m_fileNodes.last() < file) { + // empty list or greater then last node + m_fileNodes.append(file); + } else { + QList<FileNode *>::iterator it + = qLowerBound(m_fileNodes.begin(), + m_fileNodes.end(), + file); + m_fileNodes.insert(it, file); + } + } + + foreach (NodesWatcher *watcher, pn->watchers()) + emit watcher->filesAdded(); +} + +/*! + Removes \a files from the internal list and emits the corresponding signals. + + All objects in the \a files list are deleted. + This function should be called within an implementation of the public function + removeFiles. +*/ + +void FolderNode::removeFileNodes(const QList<FileNode *> &files) +{ + Q_ASSERT(projectNode()); + ProjectNode *pn = projectNode(); + + if (files.isEmpty()) + return; + + QList<FileNode*> toRemove = files; + qSort(toRemove.begin(), toRemove.end()); + + foreach (NodesWatcher *watcher, pn->watchers()) + emit watcher->filesAboutToBeRemoved(this, toRemove); + + QList<FileNode*>::const_iterator toRemoveIter = toRemove.constBegin(); + QList<FileNode*>::iterator filesIter = m_fileNodes.begin(); + for (; toRemoveIter != toRemove.constEnd(); ++toRemoveIter) { + while (*filesIter != *toRemoveIter) { + ++filesIter; + QTC_ASSERT(filesIter != m_fileNodes.end(), + qDebug("File to remove is not part of specified folder!")); + } + delete *filesIter; + filesIter = m_fileNodes.erase(filesIter); + } + + foreach (NodesWatcher *watcher, pn->watchers()) + emit watcher->filesRemoved(); +} + +/*! + Adds folder nodes specified by \a subFolders to the node hierarchy below + \a parentFolder and emits the corresponding signals. +*/ +void FolderNode::addFolderNodes(const QList<FolderNode*> &subFolders) +{ + Q_ASSERT(projectNode()); + ProjectNode *pn = projectNode(); + + if (subFolders.isEmpty()) + return; + + foreach (NodesWatcher *watcher, pn->watchers()) + watcher->foldersAboutToBeAdded(this, subFolders); + + foreach (FolderNode *folder, subFolders) { + QTC_ASSERT(!folder->parentFolderNode(), + qDebug("Project node has already a parent folder")); + folder->setParentFolderNode(this); + folder->setProjectNode(pn); + + // Find the correct place to insert + if (m_subFolderNodes.count() == 0 + || m_subFolderNodes.last() < folder) { + // empty list or greater then last node + m_subFolderNodes.append(folder); + } else { + // Binary Search for insertion point + QList<FolderNode*>::iterator it + = qLowerBound(m_subFolderNodes.begin(), + m_subFolderNodes.end(), + folder); + m_subFolderNodes.insert(it, folder); + } + + // project nodes have to be added via addProjectNodes + QTC_ASSERT(folder->nodeType() != ProjectNodeType, + qDebug("project nodes have to be added via addProjectNodes")); + } + + foreach (NodesWatcher *watcher, pn->watchers()) + emit watcher->foldersAdded(); +} + +/*! + Removes file nodes specified by \a subFolders from the node hierarchy and emits + the corresponding signals. + + All objects in the \a subFolders list are deleted. +*/ +void FolderNode::removeFolderNodes(const QList<FolderNode*> &subFolders) +{ + Q_ASSERT(projectNode()); + ProjectNode *pn = projectNode(); + + if (subFolders.isEmpty()) + return; + + QList<FolderNode*> toRemove = subFolders; + qSort(toRemove.begin(), toRemove.end()); + + foreach (NodesWatcher *watcher, pn->watchers()) + emit watcher->foldersAboutToBeRemoved(this, toRemove); + + QList<FolderNode*>::const_iterator toRemoveIter = toRemove.constBegin(); + QList<FolderNode*>::iterator folderIter = m_subFolderNodes.begin(); + for (; toRemoveIter != toRemove.constEnd(); ++toRemoveIter) { + QTC_ASSERT((*toRemoveIter)->nodeType() != ProjectNodeType, + qDebug("project nodes have to be removed via removeProjectNodes")); + while (*folderIter != *toRemoveIter) { + ++folderIter; + QTC_ASSERT(folderIter != m_subFolderNodes.end(), + qDebug("Folder to remove is not part of specified folder!")); + } + delete *folderIter; + folderIter = m_subFolderNodes.erase(folderIter); + } + + foreach (NodesWatcher *watcher, pn->watchers()) + emit watcher->foldersRemoved(); +} + /*! \class ProjectExplorer::VirtualFolderNode @@ -573,178 +735,6 @@ void ProjectNode::removeProjectNodes(const QList<ProjectNode*> &subProjects) } } -/*! - Adds folder nodes specified by \a subFolders to the node hierarchy below - \a parentFolder and emits the corresponding signals. -*/ -void ProjectNode::addFolderNodes(const QList<FolderNode*> &subFolders, FolderNode *parentFolder) -{ - Q_ASSERT(parentFolder); - - if (!subFolders.isEmpty()) { - const bool emitSignals = (parentFolder->projectNode() == this); - - if (emitSignals) - foreach (NodesWatcher *watcher, m_watchers) - watcher->foldersAboutToBeAdded(parentFolder, subFolders); - - foreach (FolderNode *folder, subFolders) { - QTC_ASSERT(!folder->parentFolderNode(), - qDebug("Project node has already a parent folder")); - folder->setParentFolderNode(parentFolder); - folder->setProjectNode(this); - - // Find the correct place to insert - if (parentFolder->m_subFolderNodes.count() == 0 - || parentFolder->m_subFolderNodes.last() < folder) { - // empty list or greater then last node - parentFolder->m_subFolderNodes.append(folder); - } else { - // Binary Search for insertion point - QList<FolderNode*>::iterator it - = qLowerBound(parentFolder->m_subFolderNodes.begin(), - parentFolder->m_subFolderNodes.end(), - folder); - parentFolder->m_subFolderNodes.insert(it, folder); - } - - // project nodes have to be added via addProjectNodes - QTC_ASSERT(folder->nodeType() != ProjectNodeType, - qDebug("project nodes have to be added via addProjectNodes")); - } - - if (emitSignals) - foreach (NodesWatcher *watcher, m_watchers) - emit watcher->foldersAdded(); - } -} - -/*! - Removes file nodes specified by \a subFolders from the node hierarchy and emits - the corresponding signals. - - All objects in the \a subFolders list are deleted. -*/ -void ProjectNode::removeFolderNodes(const QList<FolderNode*> &subFolders, - FolderNode *parentFolder) -{ - Q_ASSERT(parentFolder); - - if (!subFolders.isEmpty()) { - const bool emitSignals = (parentFolder->projectNode() == this); - - QList<FolderNode*> toRemove = subFolders; - qSort(toRemove.begin(), toRemove.end()); - - if (emitSignals) - foreach (NodesWatcher *watcher, m_watchers) - emit watcher->foldersAboutToBeRemoved(parentFolder, toRemove); - - QList<FolderNode*>::const_iterator toRemoveIter = toRemove.constBegin(); - QList<FolderNode*>::iterator folderIter = parentFolder->m_subFolderNodes.begin(); - for (; toRemoveIter != toRemove.constEnd(); ++toRemoveIter) { - QTC_ASSERT((*toRemoveIter)->nodeType() != ProjectNodeType, - qDebug("project nodes have to be removed via removeProjectNodes")); - while (*folderIter != *toRemoveIter) { - ++folderIter; - QTC_ASSERT(folderIter != parentFolder->m_subFolderNodes.end(), - qDebug("Folder to remove is not part of specified folder!")); - } - delete *folderIter; - folderIter = parentFolder->m_subFolderNodes.erase(folderIter); - } - - if (emitSignals) - foreach (NodesWatcher *watcher, m_watchers) - emit watcher->foldersRemoved(); - } -} - -/*! - Adds file nodes specified by \a files to the internal list in the location - specified by \a folder and emits the corresponding signals. - - This function should be called within an implementation of the public function - addFiles. -*/ - -void ProjectNode::addFileNodes(const QList<FileNode*> &files, FolderNode *folder) -{ - Q_ASSERT(folder); - - if (!files.isEmpty()) { - const bool emitSignals = (folder->projectNode() == this); - - if (emitSignals) - foreach (NodesWatcher *watcher, m_watchers) - emit watcher->filesAboutToBeAdded(folder, files); - - foreach (FileNode *file, files) { - QTC_ASSERT(!file->parentFolderNode(), - qDebug("File node has already a parent folder")); - - file->setParentFolderNode(folder); - file->setProjectNode(this); - // Now find the correct place to insert file - if (folder->m_fileNodes.count() == 0 - || folder->m_fileNodes.last() < file) { - // empty list or greater then last node - folder->m_fileNodes.append(file); - } else { - QList<FileNode *>::iterator it - = qLowerBound(folder->m_fileNodes.begin(), - folder->m_fileNodes.end(), - file); - folder->m_fileNodes.insert(it, file); - } - } - - if (emitSignals) - foreach (NodesWatcher *watcher, m_watchers) - emit watcher->filesAdded(); - } -} - -/*! - Removes \a files from the internal list and emits the corresponding signals. - - All objects in the \a files list are deleted. - This function should be called within an implementation of the public function - removeFiles. -*/ - -void ProjectNode::removeFileNodes(const QList<FileNode*> &files, FolderNode *folder) -{ - Q_ASSERT(folder); - - if (!files.isEmpty()) { - const bool emitSignals = (folder->projectNode() == this); - - QList<FileNode*> toRemove = files; - qSort(toRemove.begin(), toRemove.end()); - - if (emitSignals) - foreach (NodesWatcher *watcher, m_watchers) - emit watcher->filesAboutToBeRemoved(folder, toRemove); - - QList<FileNode*>::const_iterator toRemoveIter = toRemove.constBegin(); - QList<FileNode*>::iterator filesIter = folder->m_fileNodes.begin(); - for (; toRemoveIter != toRemove.constEnd(); ++toRemoveIter) { - while (*filesIter != *toRemoveIter) { - ++filesIter; - QTC_ASSERT(filesIter != folder->m_fileNodes.end(), - qDebug("File to remove is not part of specified folder!")); - } - delete *filesIter; - filesIter = folder->m_fileNodes.erase(filesIter); - } - - if (emitSignals) - foreach (NodesWatcher *watcher, m_watchers) - emit watcher->filesRemoved(); - } -} - void ProjectNode::watcherDestroyed(QObject *watcher) { // cannot use qobject_cast here diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index 1ea49a39aab2c0235327712fa47a8c1348f3d00a..a20d518b537a26063b5c39b8663ce18c8e7ea5af 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -146,6 +146,7 @@ public: private: // managed by ProjectNode + friend class FolderNode; friend class ProjectNode; FileType m_fileType; @@ -178,6 +179,12 @@ public: virtual bool deleteFiles(const QStringList &filePaths); virtual bool renameFile(const QString &filePath, const QString &newFilePath); + void addFileNodes(const QList<FileNode*> &files); + void removeFileNodes(const QList<FileNode*> &files); + + void addFolderNodes(const QList<FolderNode*> &subFolders); + void removeFolderNodes(const QList<FolderNode*> &subFolders); + protected: QList<FolderNode*> m_subFolderNodes; QList<FileNode*> m_fileNodes; @@ -239,12 +246,6 @@ public: bool isEnabled() const { return true; } - void addFolderNodes(const QList<FolderNode*> &subFolders, FolderNode *parentFolder); - void removeFolderNodes(const QList<FolderNode*> &subFolders, FolderNode *parentFolder); - - void addFileNodes(const QList<FileNode*> &files, FolderNode *parentFolder); - void removeFileNodes(const QList<FileNode*> &files, FolderNode *parentFolder); - // to be called in implementation of // the corresponding public functions void addProjectNodes(const QList<ProjectNode*> &subProjects); diff --git a/src/plugins/qbsprojectmanager/qbsnodes.cpp b/src/plugins/qbsprojectmanager/qbsnodes.cpp index 8a26cd47adf384797bb6227abb320e0c37017392..01cac34c64b2d756e6ccf58841cd50e65ba148bf 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.cpp +++ b/src/plugins/qbsprojectmanager/qbsnodes.cpp @@ -325,7 +325,7 @@ QbsGroupNode::QbsGroupNode(const qbs::GroupData *grp, const QString &productPath QbsFileNode *idx = new QbsFileNode(grp->location().fileName(), ProjectExplorer::ProjectFileType, false, grp->location().line()); - addFileNodes(QList<ProjectExplorer::FileNode *>() << idx, this); + addFileNodes(QList<ProjectExplorer::FileNode *>() << idx); updateQbsGroupData(grp, productPath, true, true); } @@ -435,7 +435,7 @@ void QbsGroupNode::setupFolder(ProjectExplorer::FolderNode *root, FolderNode *fn = root->findSubFolder(c->path()); if (!fn) { fn = new FolderNode(c->path()); - root->projectNode()->addFolderNodes(QList<FolderNode *>() << fn, root); + root->addFolderNodes(QList<FolderNode *>() << fn); } else { foldersToRemove.removeOne(fn); if (updateExisting) @@ -446,9 +446,9 @@ void QbsGroupNode::setupFolder(ProjectExplorer::FolderNode *root, setupFolder(fn, c, c->path(), updateExisting); } } - root->projectNode()->removeFileNodes(filesToRemove, root); - root->projectNode()->removeFolderNodes(foldersToRemove, root); - root->projectNode()->addFileNodes(filesToAdd, root); + root->removeFileNodes(filesToRemove); + root->removeFolderNodes(foldersToRemove); + root->addFileNodes(filesToAdd); } // -------------------------------------------------------------------- @@ -466,7 +466,7 @@ QbsProductNode::QbsProductNode(const qbs::ProductData &prd) : ProjectExplorer::FileNode *idx = new QbsFileNode(prd.location().fileName(), ProjectExplorer::ProjectFileType, false, prd.location().line()); - addFileNodes(QList<ProjectExplorer::FileNode *>() << idx, this); + addFileNodes(QList<ProjectExplorer::FileNode *>() << idx); setQbsProductData(prd); } @@ -656,7 +656,7 @@ void QbsProjectNode::ctor() setIcon(m_projectIcon); addFileNodes(QList<ProjectExplorer::FileNode *>() - << new ProjectExplorer::FileNode(path(), ProjectExplorer::ProjectFileType, false), this); + << new ProjectExplorer::FileNode(path(), ProjectExplorer::ProjectFileType, false)); } QbsProductNode *QbsProjectNode::findProductNode(const QString &name) diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.cpp b/src/plugins/qmakeprojectmanager/qmakenodes.cpp index c89299670359591655b792665df2f77772adfaa3..1951a65a901a53a95f6ff488c42756cc8a1ed9ab 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakenodes.cpp @@ -384,9 +384,9 @@ struct InternalNode } // Makes the projectNode's subtree below the given folder match this internal node's subtree - void updateSubFolders(QmakeProjectManager::QmakePriFileNode *projectNode, ProjectExplorer::FolderNode *folder) + void updateSubFolders(ProjectExplorer::FolderNode *folder) { - updateFiles(projectNode, folder, type); + updateFiles(folder, type); // updateFolders QMultiMap<QString, FolderNode *> existingFolderNodes; @@ -466,16 +466,16 @@ struct InternalNode foldersToRemove << jit.value(); if (!foldersToRemove.isEmpty()) - projectNode->removeFolderNodes(foldersToRemove, folder); + folder->removeFolderNodes(foldersToRemove); if (!foldersToAdd.isEmpty()) - projectNode->addFolderNodes(foldersToAdd, folder); + folder->addFolderNodes(foldersToAdd); foreach (const NodePair &np, nodesToUpdate) - np.first->updateSubFolders(projectNode, np.second); + np.first->updateSubFolders(np.second); } // Makes the folder's files match this internal node's file list - void updateFiles(QmakeProjectManager::QmakePriFileNode *projectNode, FolderNode *folder, FileType type) + void updateFiles(FolderNode *folder, FileType type) { QList<FileNode*> existingFileNodes; foreach (FileNode *fileNode, folder->fileNodes()) { @@ -514,9 +514,9 @@ struct InternalNode } if (!filesToRemove.isEmpty()) - projectNode->removeFileNodes(filesToRemove, folder); + folder->removeFileNodes(filesToRemove); if (!filesToAdd.isEmpty()) - projectNode->addFileNodes(filesToAdd, folder); + folder->addFileNodes(filesToAdd); } }; } @@ -569,7 +569,7 @@ void QmakePriFileNode::update(ProFile *includeFileExact, QtSupport::ProFileReade { // add project file node if (m_fileNodes.isEmpty()) - addFileNodes(QList<FileNode*>() << new ProjectExplorer::FileNode(m_projectFilePath, ProjectExplorer::ProjectFileType, false), this); + addFileNodes(QList<FileNode*>() << new ProjectExplorer::FileNode(m_projectFilePath, ProjectExplorer::ProjectFileType, false)); const QString &projectDir = m_qmakeProFileNode->m_projectDir; @@ -695,7 +695,7 @@ void QmakePriFileNode::update(ProFile *includeFileExact, QtSupport::ProFileReade } } - contents.updateSubFolders(this, this); + contents.updateSubFolders(this); } void QmakePriFileNode::watchFolders(const QSet<QString> &folders) @@ -772,7 +772,7 @@ bool QmakePriFileNode::folderChanged(const QString &changedFolder, const QSet<Ut } } - contents.updateSubFolders(this, this); + contents.updateSubFolders(this); return true; } @@ -1726,9 +1726,9 @@ void QmakeProFileNode::applyEvaluate(EvalResult evalResult, bool async) return; // delete files && folders && projects - removeFileNodes(fileNodes(), this); + removeFileNodes(fileNodes()); removeProjectNodes(subProjectNodes()); - removeFolderNodes(subFolderNodes(), this); + removeFolderNodes(subFolderNodes()); // change project type QmakeProjectType oldType = m_projectType; @@ -1757,9 +1757,9 @@ void QmakeProFileNode::applyEvaluate(EvalResult evalResult, bool async) } } - removeFileNodes(fileNodes(), this); + removeFileNodes(fileNodes()); removeProjectNodes(subProjectNodes()); - removeFolderNodes(subFolderNodes(), this); + removeFolderNodes(subFolderNodes()); bool changesHasBuildTargets = hasBuildTargets() ^ hasBuildTargets(projectType); diff --git a/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp b/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp index 55462b5e1578087b7fa8f129c5a2cc1c5d68babb..dfaa55702b2065e699bb8735c686b1fa8216e72a 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp @@ -69,8 +69,8 @@ void QmlProjectNode::refresh() using namespace ProjectExplorer; // remove the existing nodes. - removeFileNodes(fileNodes(), this); - removeFolderNodes(subFolderNodes(), this); + removeFileNodes(fileNodes()); + removeFolderNodes(subFolderNodes()); //ProjectExplorerPlugin::instance()->setCurrentNode(0); // ### remove me @@ -82,8 +82,7 @@ void QmlProjectNode::refresh() files.removeAll(m_project->filesFileName()); addFileNodes(QList<FileNode *>() - << projectFilesNode, - this); + << projectFilesNode); QHash<QString, QStringList> filesInDirectory; @@ -118,7 +117,7 @@ void QmlProjectNode::refresh() fileNodes.append(fileNode); } - addFileNodes(fileNodes, folder); + folder->addFileNodes(fileNodes); } m_folderByName.clear(); @@ -154,7 +153,7 @@ ProjectExplorer::FolderNode *QmlProjectNode::findOrCreateFolderByName(const QStr if (! parent) parent = this; - addFolderNodes(QList<FolderNode*>() << folder, parent); + parent->addFolderNodes(QList<FolderNode*>() << folder); return folder; }