aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@digia.com>2014-07-28 16:58:44 +0200
committerMarco Bubke <marco.bubke@digia.com>2014-07-29 19:29:08 +0200
commit8f3bb6421b08a859088d2fbbfbf373ff25cf8372 (patch)
treefe1c0229dc9935e54221bd27a400838b7c2521e2
parented9261733bd752e061cfa1fb3d443a80cb4d0b4e (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.cpp20
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.h2
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