diff options
author | Marco Bubke <marco.bubke@digia.com> | 2014-07-28 16:58:44 +0200 |
---|---|---|
committer | Marco Bubke <marco.bubke@digia.com> | 2014-07-29 19:29:08 +0200 |
commit | 8f3bb6421b08a859088d2fbbfbf373ff25cf8372 (patch) | |
tree | fe1c0229dc9935e54221bd27a400838b7c2521e2 | |
parent | ed9261733bd752e061cfa1fb3d443a80cb4d0b4e (diff) |
QmlDesigner: Fix enumerations properties
Task-number: QTCREATORBUG-12741
Change-Id: I1ef1909d585732a39bbf80b90512851a10f60600
Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
-rw-r--r-- | share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp | 20 | ||||
-rw-r--r-- | share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.h | 2 |
2 files changed, 13 insertions, 9 deletions
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<EnumerationName, int> ObjectNodeInstance::m_enumationValueHash; +QHash<EnumerationName, QVariant> ObjectNodeInstance::m_enumationValueHash; ObjectNodeInstance::ObjectNodeInstance(QObject *object) : m_object(object), @@ -1328,27 +1328,31 @@ void ObjectNodeInstance::doComponentCompleteRecursive(QObject *object, NodeInsta } } -static QHash<EnumerationName, int> enumationValuesFromMetaEnum(const QMetaEnum &metaEnum) +static QHash<EnumerationName, QVariant> enumationValuesFromMetaEnum(const QMetaEnum &metaEnum) { - QHash<EnumerationName, int> enumationValues; + QHash<EnumerationName, QVariant> 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<EnumerationName, int> collectEnumationValues(const Enumeration &enumeration) +static QHash<EnumerationName, QVariant> collectEnumationValues(const Enumeration &enumeration) { - QHash<EnumerationName, int> enumationValues; + QHash<EnumerationName, QVariant> 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<EnumerationName, int> m_enumationValueHash; + static QHash<EnumerationName, QVariant> m_enumationValueHash; }; } // namespace Internal |