forked from qt-creator/qt-creator
QmlDesigner: Fix enumerations properties
Task-number: QTCREATORBUG-12741 Change-Id: I1ef1909d585732a39bbf80b90512851a10f60600 Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user