From 1d313aae281933c494500c4cded221a43a85ee1d Mon Sep 17 00:00:00 2001 From: Thomas Hartmann <Thomas.Hartmann@nokia.com> Date: Wed, 15 Sep 2010 14:23:00 +0200 Subject: [PATCH] QmlDesigner: add instance meta info --- .../qmldesigner/designercore/include/nodeinstance.h | 1 + .../qmldesigner/designercore/include/qmlobjectnode.h | 1 + .../qmldesigner/designercore/instances/nodeinstance.cpp | 8 ++++++++ .../designercore/instances/objectnodeinstance.cpp | 8 ++++++++ .../designercore/instances/objectnodeinstance.h | 1 + .../qmldesigner/designercore/model/qmlobjectnode.cpp | 5 +++++ 6 files changed, 24 insertions(+) diff --git a/src/plugins/qmldesigner/designercore/include/nodeinstance.h b/src/plugins/qmldesigner/designercore/include/nodeinstance.h index 3c2d41a1cf2..a741f53b693 100644 --- a/src/plugins/qmldesigner/designercore/include/nodeinstance.h +++ b/src/plugins/qmldesigner/designercore/include/nodeinstance.h @@ -118,6 +118,7 @@ public: double opacity() const; QVariant property(const QString &name) const; QVariant defaultValue(const QString &name) const; + QString instanceType(const QString &name) const; bool isValid() const; void makeInvalid(); diff --git a/src/plugins/qmldesigner/designercore/include/qmlobjectnode.h b/src/plugins/qmldesigner/designercore/include/qmlobjectnode.h index b8ff11c3632..9bdb53793b4 100644 --- a/src/plugins/qmldesigner/designercore/include/qmlobjectnode.h +++ b/src/plugins/qmldesigner/designercore/include/qmlobjectnode.h @@ -63,6 +63,7 @@ public: NodeListProperty nodeListProperty(const QString &name) const; QVariant instanceValue(const QString &name) const; + QString QmlObjectNode::instanceType(const QString &name) const; bool hasProperty(const QString &name) const; bool hasBindingProperty(const QString &name) const; diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstance.cpp index 3c95bff3396..e0cba857fe7 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstance.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstance.cpp @@ -427,6 +427,14 @@ QVariant NodeInstance::defaultValue(const QString &name) const return m_nodeInstance->resetValue(name); } +/*! +\brief Returns the type of the property of this NodeInstance. +*/ +QString NodeInstance::instanceType(const QString &name) const +{ + return m_nodeInstance->instanceType(name); +} + /*! \brief Returns if the NodeInstance is valid. \returns true if the NodeInstance is valid diff --git a/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp index e52ca995d7c..fe43cdd5b97 100644 --- a/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp +++ b/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp @@ -617,6 +617,14 @@ QVariant ObjectNodeInstance::property(const QString &name) const return property.read(); } +QString ObjectNodeInstance::instanceType(const QString &name) const +{ + QDeclarativeProperty property(object(), name, context()); + if (!property.isValid()) + return QLatin1String("undefined"); + return property.propertyTypeName(); +} + void ObjectNodeInstance::setDeleteHeldInstance(bool deleteInstance) { diff --git a/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.h b/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.h index ef404b1fe7e..982292fb3ca 100644 --- a/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.h +++ b/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.h @@ -144,6 +144,7 @@ public: virtual QVariant property(const QString &name) const; virtual void resetProperty(const QString &name); virtual void refreshProperty(const QString &name); + virtual QString instanceType(const QString &name) const; void createDynamicProperty(const QString &name, const QString &typeName); void setDeleteHeldInstance(bool deleteInstance); diff --git a/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp index 8fe7a5ac86d..85127ce0823 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp @@ -387,6 +387,11 @@ QVariant QmlObjectNode::instanceValue(const ModelNode &modelNode, const QString return modelView->instanceForModelNode(modelNode).property(name); } +QString QmlObjectNode::instanceType(const QString &name) const +{ + return nodeInstance().instanceType(name); +} + NodeInstance QmlObjectNode::nodeInstance() const { return qmlModelView()->nodeInstanceView()->instanceForNode(modelNode()); -- GitLab