From 8f3bb6421b08a859088d2fbbfbf373ff25cf8372 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Mon, 28 Jul 2014 16:58:44 +0200 Subject: QmlDesigner: Fix enumerations properties Task-number: QTCREATORBUG-12741 Change-Id: I1ef1909d585732a39bbf80b90512851a10f60600 Reviewed-by: Tim Jenssen --- .../qml2puppet/instances/objectnodeinstance.cpp | 20 ++++++++++++-------- .../qml2puppet/instances/objectnodeinstance.h | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) (limited to 'share') diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp index 3db4add25c..589c47883f 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp @@ -94,7 +94,7 @@ static bool isPropertyBlackListed(const QmlDesigner::PropertyName &propertyName) namespace QmlDesigner { namespace Internal { -QHash ObjectNodeInstance::m_enumationValueHash; +QHash ObjectNodeInstance::m_enumationValueHash; ObjectNodeInstance::ObjectNodeInstance(QObject *object) : m_object(object), @@ -1328,27 +1328,31 @@ void ObjectNodeInstance::doComponentCompleteRecursive(QObject *object, NodeInsta } } -static QHash enumationValuesFromMetaEnum(const QMetaEnum &metaEnum) +static QHash enumationValuesFromMetaEnum(const QMetaEnum &metaEnum) { - QHash enumationValues; + QHash enumationValues; for (int index = 0; index < metaEnum.keyCount(); index++) { EnumerationName enumerationName = EnumerationName(metaEnum.scope()) + "." + metaEnum.key(index); - enumationValues.insert(enumerationName, metaEnum.value(index)); + enumationValues.insert(enumerationName, QVariant::fromValue(metaEnum.value(index))); + qDebug() << __FUNCTION__ << enumerationName << metaEnum.value(index); } return enumationValues; } -static QHash collectEnumationValues(const Enumeration &enumeration) +static QHash collectEnumationValues(const Enumeration &enumeration) { - QHash enumationValues; + QHash enumationValues; EnumerationName enumerationScope = enumeration.scope(); - const QMetaObject *metaObject = QMetaType::metaObjectForType(QMetaType::type(enumerationScope.data())); + const QMetaObject *metaObject = QMetaType::metaObjectForType(QMetaType::type(enumerationScope.constData())); if (metaObject) { int enumeratorCount = metaObject->enumeratorOffset() + metaObject->enumeratorCount(); for (int index = metaObject->enumeratorOffset(); index < enumeratorCount; index++) enumationValues.unite(enumationValuesFromMetaEnum(metaObject->enumerator(index))); + } else { + enumationValues.insert(enumeration.toEnumerationName(), QVariant::fromValue(enumeration.nameToString())); } + return enumationValues; } @@ -1358,7 +1362,7 @@ QVariant ObjectNodeInstance::enumationValue(const Enumeration &enumeration) if (!m_enumationValueHash.contains(enumerationName)) m_enumationValueHash.unite(collectEnumationValues(enumeration)); - return QVariant::fromValue(m_enumationValueHash.value(enumerationName)); + return m_enumationValueHash.value(enumerationName); } ObjectNodeInstance::Pointer ObjectNodeInstance::parentInstance() const diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.h index 2d4635b372..239b774491 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.h +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.h @@ -220,7 +220,7 @@ private: qint32 m_instanceId; bool m_deleteHeldInstance; bool m_isInLayoutable; - static QHash m_enumationValueHash; + static QHash m_enumationValueHash; }; } // namespace Internal -- cgit v1.2.1