From 0dc97a51b52c6af60ae3bd7e84e54caa7c1fd25c Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 1 Aug 2019 11:53:26 +0200 Subject: [PATCH] ProjectExplorer: Add a mechanism to access fixed data in ProjectNodes To be used in CMakeTargetNode for Android-specific items, but possibly useful for other combinations, too, at the price of (only) one empty hash per _Project_Node. Change-Id: I4ced56a6ddfa54a00f96be0507a556fa7b20b552 Reviewed-by: Christian Kandeler --- src/plugins/projectexplorer/projectnodes.cpp | 8 ++++++-- src/plugins/projectexplorer/projectnodes.h | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index 1e5a35a23ef..c2244ed0100 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -944,8 +944,7 @@ ProjectNode *ProjectNode::projectNode(const Utils::FilePath &file) const QVariant ProjectNode::data(Core::Id role) const { - Q_UNUSED(role) - return QVariant(); + return m_fallbackData.value(role); } bool ProjectNode::setData(Core::Id role, const QVariant &value) const @@ -955,6 +954,11 @@ bool ProjectNode::setData(Core::Id role, const QVariant &value) const return false; } +void ProjectNode::setFallbackData(Core::Id key, const QVariant &value) +{ + m_fallbackData.insert(key, value); +} + bool FolderNode::isEmpty() const { return m_nodes.size() == 0; diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index 97319de6c4a..0bea9c38102 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -388,6 +388,8 @@ public: // "build single file" case. virtual void build() {} + void setFallbackData(Core::Id key, const QVariant &value); + protected: void setIsProduct() { m_isProduct = true; } @@ -395,6 +397,7 @@ protected: private: bool m_isProduct = false; + QHash m_fallbackData; // Used in data(), unless overridden. }; class PROJECTEXPLORER_EXPORT ContainerNode : public FolderNode