From 37cc7657e2faf3c06e1c44bf1326a914b62c155b Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 5 Aug 2013 12:10:12 +0200 Subject: [PATCH] QmlDesigner.Model: adding isComponent to ModelNode This function checks if the ModelNode is a Component or has a delegate which is a Component. Change-Id: I6bc92c3246b58eb04a5d37722e821dbed52147e5 Reviewed-by: Marco Bubke --- .../designercore/include/modelnode.h | 2 ++ .../designercore/model/modelnode.cpp | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/plugins/qmldesigner/designercore/include/modelnode.h b/src/plugins/qmldesigner/designercore/include/modelnode.h index 318f37a863d..922d785b5b7 100644 --- a/src/plugins/qmldesigner/designercore/include/modelnode.h +++ b/src/plugins/qmldesigner/designercore/include/modelnode.h @@ -184,6 +184,8 @@ public: NodeSourceType nodeSourceType() const; + bool isComponent() const; + private: // functions Internal::InternalNodePointer internalNode() const; diff --git a/src/plugins/qmldesigner/designercore/model/modelnode.cpp b/src/plugins/qmldesigner/designercore/model/modelnode.cpp index 05e485f5328..e19324e5a80 100644 --- a/src/plugins/qmldesigner/designercore/model/modelnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/modelnode.cpp @@ -984,4 +984,26 @@ ModelNode::NodeSourceType ModelNode::nodeSourceType() const } +bool ModelNode::isComponent() const +{ + if (!isValid()) + throw InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__); + + if (metaInfo().isFileComponent()) + return true; + + if (nodeSourceType() == ModelNode::NodeWithComponentSource) + return true; + + if (metaInfo().isView() && hasNodeProperty("delegate")) { + if (nodeProperty("delegate").modelNode().metaInfo().isFileComponent()) + return true; + + if (nodeProperty("delegate").modelNode().nodeSourceType() == ModelNode::NodeWithComponentSource) + return true; + } + + return false; +} + }