From b0e125ac11b1ad80717366a1270412d6b6b1be41 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 1 Mar 2019 11:02:29 +0100 Subject: [PATCH] ProjectExplorer: Move Node::nodeType implementation ... to the only remaining user, and rename it there. Change-Id: I0bdb3179282e323f5ad7b41d034bb5f3db8f6ffc Reviewed-by: Christian Kandeler --- src/plugins/projectexplorer/projectnodes.cpp | 14 -------------- src/plugins/projectexplorer/projectnodes.h | 8 -------- .../projectexplorer/projecttreewidget.cpp | 19 +++++++++++++++++-- 3 files changed, 17 insertions(+), 24 deletions(-) diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index 1b694aa85c3..62411e72c56 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -163,20 +163,6 @@ void Node::setAbsoluteFilePathAndLine(const Utils::FileName &path, int line) Node::~Node() = default; -NodeType Node::nodeType() const -{ - if (asFileNode()) - return NodeType::File; - if (isFolderNodeType()) - return NodeType::Folder; - if (isProjectNodeType()) - return NodeType::Project; - if (isVirtualFolderType()) - return NodeType::VirtualFolder; - QTC_CHECK(false); - return NodeType::File; -} - int Node::priority() const { return m_priority; diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index c2596497a2b..0d1e703e0b9 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -44,13 +44,6 @@ namespace ProjectExplorer { class Project; -enum class NodeType : quint16 { - File = 1, - Folder, - VirtualFolder, - Project -}; - // File types common for qt projects enum class FileType : quint16 { Unknown = 0, @@ -116,7 +109,6 @@ public: virtual bool isProjectNodeType() const { return false; } virtual bool isVirtualFolderType() const { return false; } - NodeType nodeType() const; int priority() const; ProjectNode *parentProjectNode() const; // parent project, will be nullptr for the top-level project diff --git a/src/plugins/projectexplorer/projecttreewidget.cpp b/src/plugins/projectexplorer/projecttreewidget.cpp index 38748ff28dc..2af492494af 100644 --- a/src/plugins/projectexplorer/projecttreewidget.cpp +++ b/src/plugins/projectexplorer/projecttreewidget.cpp @@ -355,6 +355,21 @@ Node *ProjectTreeWidget::nodeForFile(const FileName &fileName) Node *bestNode = nullptr; int bestNodeExpandCount = INT_MAX; + // FIXME: Check that the values used make sense in the context. + auto priority = [](Node *node) { + if (node->asFileNode()) + return 1; + if (node->isFolderNodeType()) + return 2; + if (node->isVirtualFolderType()) + return 3; + if (node->isProjectNodeType()) + return 4; + QTC_CHECK(false); + return 1; + }; + + // FIXME: Looks like this could be done with less cycles. for (Project *project : SessionManager::projects()) { if (ProjectNode *projectNode = project->rootProjectNode()) { projectNode->forEachGenericNode([&](Node *node) { @@ -362,10 +377,10 @@ Node *ProjectTreeWidget::nodeForFile(const FileName &fileName) if (!bestNode) { bestNode = node; bestNodeExpandCount = ProjectTreeWidget::expandedCount(node); - } else if (node->nodeType() < bestNode->nodeType()) { + } else if (priority(node) < priority(bestNode)) { bestNode = node; bestNodeExpandCount = ProjectTreeWidget::expandedCount(node); - } else if (node->nodeType() == bestNode->nodeType()) { + } else if (priority(node) == priority(bestNode)) { int nodeExpandCount = ProjectTreeWidget::expandedCount(node); if (nodeExpandCount < bestNodeExpandCount) { bestNode = node;