From ee564b2249cf61cb9dd7ad39dfdca28d40193e06 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 27 Nov 2018 18:14:56 +0100 Subject: [PATCH] ProjectExplorer: Add a convenience function to walk project nodes ... recursively. Change-Id: I44a7e29867c26e2586d04fd8d6c16990ce047c6d Reviewed-by: Christian Kandeler --- src/plugins/projectexplorer/projectnodes.cpp | 11 +++++++++++ src/plugins/projectexplorer/projectnodes.h | 1 + 2 files changed, 12 insertions(+) diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index 26f76064476..6ba1341d4ed 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -514,6 +514,17 @@ void FolderNode::forEachGenericNode(const std::function &genericTa } } +void FolderNode::forEachProjectNode(const std::function &task) const +{ + if (const ProjectNode *projectNode = asProjectNode()) + task(projectNode); + + for (const std::unique_ptr &n : m_nodes) { + if (FolderNode *fn = n->asFolderNode()) + fn->forEachProjectNode(task); + } +} + const QList FolderNode::nodes() const { return Utils::toRawPointer(m_nodes); diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index 8f8f9fd1bf0..310b1a461f5 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -216,6 +216,7 @@ public: const std::function &folderTask = {}, const std::function &folderFilterTask = {}) const; void forEachGenericNode(const std::function &genericTask) const; + void forEachProjectNode(const std::function &genericTask) const; const QList nodes() const; QList fileNodes() const; FileNode *fileNode(const Utils::FileName &file) const;