From 2afcd57fbc210c6576086538df1da8f28f2b16d6 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 25 Sep 2012 13:37:03 +0200 Subject: [PATCH] QmlDesigner: removing dependency on Removing dependency on in property editor. Change-Id: I9c4fa74994bd72570113145c0bb4d9d239a40f08 Reviewed-by: Marco Bubke (cherry picked from commit b8caadc3348b651e221d121376f25677b1f102e0) --- .../propertyeditor/propertyeditor.cpp | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp index ec65c34373f..e926ab1e699 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp @@ -70,7 +70,6 @@ #include #include #include -#include #include #include #include @@ -97,6 +96,13 @@ static inline QString sharedDirPath() return QFileInfo(appPath + SHARE_PATH).absoluteFilePath(); } +static QObject *variantToQObject(const QVariant &v) +{ + if (v.userType() == QMetaType::QObjectStar || v.userType() > QMetaType::User) + return *(QObject **)v.constData(); + + return 0; +} PropertyEditor::NodeType::NodeType(PropertyEditor *propertyEditor) : m_view(new DeclarativeWidgetView), m_propertyEditorTransaction(new PropertyEditorTransaction(propertyEditor)), m_dummyPropertyEditorValue(new PropertyEditorValue()), @@ -122,7 +128,7 @@ void setupPropertyEditorValue(const QString &name, QDeclarativePropertyMap *prop { QString propertyName(name); propertyName.replace(QLatin1Char('.'), QLatin1Char('_')); - PropertyEditorValue *valueObject = qobject_cast(QDeclarativeMetaType::toQObject(propertyMap->value(propertyName))); + PropertyEditorValue *valueObject = qobject_cast(variantToQObject(propertyMap->value(propertyName))); if (!valueObject) { valueObject = new PropertyEditorValue(propertyMap); QObject::connect(valueObject, SIGNAL(valueChanged(QString,QVariant)), propertyMap, SIGNAL(valueChanged(QString,QVariant))); @@ -141,7 +147,7 @@ void createPropertyEditorValue(const QmlObjectNode &fxObjectNode, const QString { QString propertyName(name); propertyName.replace(QLatin1Char('.'), QLatin1Char('_')); - PropertyEditorValue *valueObject = qobject_cast(QDeclarativeMetaType::toQObject(propertyMap->value(propertyName))); + PropertyEditorValue *valueObject = qobject_cast(variantToQObject(propertyMap->value(propertyName))); if (!valueObject) { valueObject = new PropertyEditorValue(propertyMap); QObject::connect(valueObject, SIGNAL(valueChanged(QString,QVariant)), propertyMap, SIGNAL(valueChanged(QString,QVariant))); @@ -171,7 +177,7 @@ void PropertyEditor::NodeType::setValue(const QmlObjectNode & fxObjectNode, cons { QString propertyName = name; propertyName.replace(QLatin1Char('.'), QLatin1Char('_')); - PropertyEditorValue *propertyValue = qobject_cast(QDeclarativeMetaType::toQObject(m_backendValuesPropertyMap.value(propertyName))); + PropertyEditorValue *propertyValue = qobject_cast(variantToQObject(m_backendValuesPropertyMap.value(propertyName))); if (propertyValue) { propertyValue->setValue(value); if (!fxObjectNode.hasBindingProperty(name)) @@ -194,7 +200,7 @@ void PropertyEditor::NodeType::setup(const QmlObjectNode &fxObjectNode, const QS createPropertyEditorValue(fxObjectNode, propertyName, fxObjectNode.instanceValue(propertyName), &m_backendValuesPropertyMap, propertyEditor); // className - PropertyEditorValue *valueObject = qobject_cast(QDeclarativeMetaType::toQObject(m_backendValuesPropertyMap.value("className"))); + PropertyEditorValue *valueObject = qobject_cast(variantToQObject(m_backendValuesPropertyMap.value("className"))); if (!valueObject) valueObject = new PropertyEditorValue(&m_backendValuesPropertyMap); valueObject->setName("className"); @@ -204,7 +210,7 @@ void PropertyEditor::NodeType::setup(const QmlObjectNode &fxObjectNode, const QS m_backendValuesPropertyMap.insert("className", QVariant::fromValue(valueObject)); // id - valueObject = qobject_cast(QDeclarativeMetaType::toQObject(m_backendValuesPropertyMap.value("id"))); + valueObject = qobject_cast(variantToQObject(m_backendValuesPropertyMap.value("id"))); if (!valueObject) valueObject = new PropertyEditorValue(&m_backendValuesPropertyMap); valueObject->setName("id"); @@ -244,7 +250,7 @@ void PropertyEditor::NodeType::initialSetup(const QString &typeName, const QUrl foreach (const QString &propertyName, metaInfo.propertyNames()) setupPropertyEditorValue(propertyName, &m_backendValuesPropertyMap, propertyEditor, metaInfo.propertyTypeName(propertyName)); - PropertyEditorValue *valueObject = qobject_cast(QDeclarativeMetaType::toQObject(m_backendValuesPropertyMap.value("className"))); + PropertyEditorValue *valueObject = qobject_cast(variantToQObject(m_backendValuesPropertyMap.value("className"))); if (!valueObject) valueObject = new PropertyEditorValue(&m_backendValuesPropertyMap); valueObject->setName("className"); @@ -254,7 +260,7 @@ void PropertyEditor::NodeType::initialSetup(const QString &typeName, const QUrl m_backendValuesPropertyMap.insert("className", QVariant::fromValue(valueObject)); // id - valueObject = qobject_cast(QDeclarativeMetaType::toQObject(m_backendValuesPropertyMap.value("id"))); + valueObject = qobject_cast(variantToQObject(m_backendValuesPropertyMap.value("id"))); if (!valueObject) valueObject = new PropertyEditorValue(&m_backendValuesPropertyMap); valueObject->setName("id"); @@ -376,7 +382,7 @@ void PropertyEditor::changeValue(const QString &propertyName) return; if (propertyName == "id") { - PropertyEditorValue *value = qobject_cast(QDeclarativeMetaType::toQObject(m_currentType->m_backendValuesPropertyMap.value(propertyName))); + PropertyEditorValue *value = qobject_cast(variantToQObject(m_currentType->m_backendValuesPropertyMap.value(propertyName))); const QString newId = value->value().toString(); if (newId == m_selectedNode.id()) @@ -411,7 +417,7 @@ void PropertyEditor::changeValue(const QString &propertyName) //.replace(QLatin1Char('.'), QLatin1Char('_')) QString underscoreName(propertyName); underscoreName.replace(QLatin1Char('.'), QLatin1Char('_')); - PropertyEditorValue *value = qobject_cast(QDeclarativeMetaType::toQObject(m_currentType->m_backendValuesPropertyMap.value(underscoreName))); + PropertyEditorValue *value = qobject_cast(variantToQObject(m_currentType->m_backendValuesPropertyMap.value(underscoreName))); if (value ==0) { return; @@ -480,7 +486,7 @@ void PropertyEditor::changeExpression(const QString &name) underscoreName.replace(QLatin1Char('.'), QLatin1Char('_')); QmlObjectNode fxObjectNode(m_selectedNode); - PropertyEditorValue *value = qobject_cast(QDeclarativeMetaType::toQObject(m_currentType->m_backendValuesPropertyMap.value(underscoreName))); + PropertyEditorValue *value = qobject_cast(variantToQObject(m_currentType->m_backendValuesPropertyMap.value(underscoreName))); if (fxObjectNode.modelNode().metaInfo().isValid() && fxObjectNode.modelNode().metaInfo().hasProperty(name)) { if (fxObjectNode.modelNode().metaInfo().propertyTypeName(name) == QLatin1String("QColor")) {