ProjectExplorer: Let SessionNode operate on single ProjectNodes only

Simplifies the implementation and is the only way used.

Change-Id: Ie3ac1cb66ae7fb85e3d6358a01975ba2e857ab6c
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
hjk
2017-01-25 16:47:52 +01:00
committed by Tobias Hunger
parent 7415964819
commit 5c5d93943f
3 changed files with 22 additions and 53 deletions

View File

@@ -957,52 +957,22 @@ QString SessionNode::addFileFilter() const
return QString::fromLatin1("*.c; *.cc; *.cpp; *.cp; *.cxx; *.c++; *.h; *.hh; *.hpp; *.hxx;");
}
void SessionNode::addProjectNodes(const QList<ProjectNode*> &projectNodes)
void SessionNode::addProjectNode(ProjectNode *projectNode)
{
if (!projectNodes.isEmpty()) {
QList<FolderNode*> folderNodes;
foreach (ProjectNode *projectNode, projectNodes)
folderNodes << projectNode;
QTC_ASSERT(!projectNode->parentFolderNode(),
qDebug("Project node has already a parent folder"));
projectNode->setParentFolderNode(this);
m_folderNodes.append(projectNode);
m_projectNodes.append(projectNode);
foreach (ProjectNode *project, projectNodes) {
QTC_ASSERT(!project->parentFolderNode(),
qDebug("Project node has already a parent folder"));
project->setParentFolderNode(this);
m_folderNodes.append(project);
m_projectNodes.append(project);
}
Utils::sort(m_folderNodes);
Utils::sort(m_projectNodes);
}
Utils::sort(m_folderNodes);
Utils::sort(m_projectNodes);
}
void SessionNode::removeProjectNodes(const QList<ProjectNode*> &projectNodes)
void SessionNode::removeProjectNode(ProjectNode *projectNode)
{
if (!projectNodes.isEmpty()) {
QList<FolderNode*> toRemove;
foreach (ProjectNode *projectNode, projectNodes)
toRemove << projectNode;
Utils::sort(toRemove);
auto toRemoveIter = toRemove.constBegin();
auto folderIter = m_folderNodes.begin();
auto projectIter = m_projectNodes.begin();
for (; toRemoveIter != toRemove.constEnd(); ++toRemoveIter) {
while (*projectIter != *toRemoveIter) {
++projectIter;
QTC_ASSERT(projectIter != m_projectNodes.end(),
qDebug("Project to remove is not part of specified folder!"));
}
while (*folderIter != *toRemoveIter) {
++folderIter;
QTC_ASSERT(folderIter != m_folderNodes.end(),
qDebug("Project to remove is not part of specified folder!"));
}
projectIter = m_projectNodes.erase(projectIter);
folderIter = m_folderNodes.erase(folderIter);
}
}
m_folderNodes.removeOne(projectNode);
m_projectNodes.removeOne(projectNode);
}
} // namespace ProjectExplorer