QmlDesigner: Fix enumerations properties

Task-number: QTCREATORBUG-12741
Change-Id: I1ef1909d585732a39bbf80b90512851a10f60600
Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
This commit is contained in:
Marco Bubke
2014-07-28 16:58:44 +02:00
parent ed9261733b
commit 8f3bb6421b
2 changed files with 13 additions and 9 deletions

View File

@@ -94,7 +94,7 @@ static bool isPropertyBlackListed(const QmlDesigner::PropertyName &propertyName)
namespace QmlDesigner { namespace QmlDesigner {
namespace Internal { namespace Internal {
QHash<EnumerationName, int> ObjectNodeInstance::m_enumationValueHash; QHash<EnumerationName, QVariant> ObjectNodeInstance::m_enumationValueHash;
ObjectNodeInstance::ObjectNodeInstance(QObject *object) ObjectNodeInstance::ObjectNodeInstance(QObject *object)
: m_object(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++) { for (int index = 0; index < metaEnum.keyCount(); index++) {
EnumerationName enumerationName = EnumerationName(metaEnum.scope()) + "." + metaEnum.key(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; 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(); EnumerationName enumerationScope = enumeration.scope();
const QMetaObject *metaObject = QMetaType::metaObjectForType(QMetaType::type(enumerationScope.data())); const QMetaObject *metaObject = QMetaType::metaObjectForType(QMetaType::type(enumerationScope.constData()));
if (metaObject) { if (metaObject) {
int enumeratorCount = metaObject->enumeratorOffset() + metaObject->enumeratorCount(); int enumeratorCount = metaObject->enumeratorOffset() + metaObject->enumeratorCount();
for (int index = metaObject->enumeratorOffset(); index < enumeratorCount; index++) for (int index = metaObject->enumeratorOffset(); index < enumeratorCount; index++)
enumationValues.unite(enumationValuesFromMetaEnum(metaObject->enumerator(index))); enumationValues.unite(enumationValuesFromMetaEnum(metaObject->enumerator(index)));
} else {
enumationValues.insert(enumeration.toEnumerationName(), QVariant::fromValue(enumeration.nameToString()));
} }
return enumationValues; return enumationValues;
} }
@@ -1358,7 +1362,7 @@ QVariant ObjectNodeInstance::enumationValue(const Enumeration &enumeration)
if (!m_enumationValueHash.contains(enumerationName)) if (!m_enumationValueHash.contains(enumerationName))
m_enumationValueHash.unite(collectEnumationValues(enumeration)); m_enumationValueHash.unite(collectEnumationValues(enumeration));
return QVariant::fromValue(m_enumationValueHash.value(enumerationName)); return m_enumationValueHash.value(enumerationName);
} }
ObjectNodeInstance::Pointer ObjectNodeInstance::parentInstance() const ObjectNodeInstance::Pointer ObjectNodeInstance::parentInstance() const

View File

@@ -220,7 +220,7 @@ private:
qint32 m_instanceId; qint32 m_instanceId;
bool m_deleteHeldInstance; bool m_deleteHeldInstance;
bool m_isInLayoutable; bool m_isInLayoutable;
static QHash<EnumerationName, int> m_enumationValueHash; static QHash<EnumerationName, QVariant> m_enumationValueHash;
}; };
} // namespace Internal } // namespace Internal