forked from qt-creator/qt-creator
QmlDesigner: removing dependency on <private/qdeclarativemetatype_p.h>
Removing dependency on <private/qdeclarativemetatype_p.h>
in property editor.
Change-Id: I9c4fa74994bd72570113145c0bb4d9d239a40f08
Reviewed-by: Marco Bubke <marco.bubke@digia.com>
(cherry picked from commit b8caadc334)
This commit is contained in:
@@ -70,7 +70,6 @@
|
|||||||
#include <QShortcut>
|
#include <QShortcut>
|
||||||
#include <QStackedWidget>
|
#include <QStackedWidget>
|
||||||
#include <QDeclarativeEngine>
|
#include <QDeclarativeEngine>
|
||||||
#include <private/qdeclarativemetatype_p.h>
|
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QGraphicsOpacityEffect>
|
#include <QGraphicsOpacityEffect>
|
||||||
@@ -97,6 +96,13 @@ static inline QString sharedDirPath()
|
|||||||
return QFileInfo(appPath + SHARE_PATH).absoluteFilePath();
|
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) :
|
PropertyEditor::NodeType::NodeType(PropertyEditor *propertyEditor) :
|
||||||
m_view(new DeclarativeWidgetView), m_propertyEditorTransaction(new PropertyEditorTransaction(propertyEditor)), m_dummyPropertyEditorValue(new PropertyEditorValue()),
|
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);
|
QString propertyName(name);
|
||||||
propertyName.replace(QLatin1Char('.'), QLatin1Char('_'));
|
propertyName.replace(QLatin1Char('.'), QLatin1Char('_'));
|
||||||
PropertyEditorValue *valueObject = qobject_cast<PropertyEditorValue*>(QDeclarativeMetaType::toQObject(propertyMap->value(propertyName)));
|
PropertyEditorValue *valueObject = qobject_cast<PropertyEditorValue*>(variantToQObject(propertyMap->value(propertyName)));
|
||||||
if (!valueObject) {
|
if (!valueObject) {
|
||||||
valueObject = new PropertyEditorValue(propertyMap);
|
valueObject = new PropertyEditorValue(propertyMap);
|
||||||
QObject::connect(valueObject, SIGNAL(valueChanged(QString,QVariant)), propertyMap, SIGNAL(valueChanged(QString,QVariant)));
|
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);
|
QString propertyName(name);
|
||||||
propertyName.replace(QLatin1Char('.'), QLatin1Char('_'));
|
propertyName.replace(QLatin1Char('.'), QLatin1Char('_'));
|
||||||
PropertyEditorValue *valueObject = qobject_cast<PropertyEditorValue*>(QDeclarativeMetaType::toQObject(propertyMap->value(propertyName)));
|
PropertyEditorValue *valueObject = qobject_cast<PropertyEditorValue*>(variantToQObject(propertyMap->value(propertyName)));
|
||||||
if (!valueObject) {
|
if (!valueObject) {
|
||||||
valueObject = new PropertyEditorValue(propertyMap);
|
valueObject = new PropertyEditorValue(propertyMap);
|
||||||
QObject::connect(valueObject, SIGNAL(valueChanged(QString,QVariant)), propertyMap, SIGNAL(valueChanged(QString,QVariant)));
|
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;
|
QString propertyName = name;
|
||||||
propertyName.replace(QLatin1Char('.'), QLatin1Char('_'));
|
propertyName.replace(QLatin1Char('.'), QLatin1Char('_'));
|
||||||
PropertyEditorValue *propertyValue = qobject_cast<PropertyEditorValue*>(QDeclarativeMetaType::toQObject(m_backendValuesPropertyMap.value(propertyName)));
|
PropertyEditorValue *propertyValue = qobject_cast<PropertyEditorValue*>(variantToQObject(m_backendValuesPropertyMap.value(propertyName)));
|
||||||
if (propertyValue) {
|
if (propertyValue) {
|
||||||
propertyValue->setValue(value);
|
propertyValue->setValue(value);
|
||||||
if (!fxObjectNode.hasBindingProperty(name))
|
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);
|
createPropertyEditorValue(fxObjectNode, propertyName, fxObjectNode.instanceValue(propertyName), &m_backendValuesPropertyMap, propertyEditor);
|
||||||
|
|
||||||
// className
|
// className
|
||||||
PropertyEditorValue *valueObject = qobject_cast<PropertyEditorValue*>(QDeclarativeMetaType::toQObject(m_backendValuesPropertyMap.value("className")));
|
PropertyEditorValue *valueObject = qobject_cast<PropertyEditorValue*>(variantToQObject(m_backendValuesPropertyMap.value("className")));
|
||||||
if (!valueObject)
|
if (!valueObject)
|
||||||
valueObject = new PropertyEditorValue(&m_backendValuesPropertyMap);
|
valueObject = new PropertyEditorValue(&m_backendValuesPropertyMap);
|
||||||
valueObject->setName("className");
|
valueObject->setName("className");
|
||||||
@@ -204,7 +210,7 @@ void PropertyEditor::NodeType::setup(const QmlObjectNode &fxObjectNode, const QS
|
|||||||
m_backendValuesPropertyMap.insert("className", QVariant::fromValue(valueObject));
|
m_backendValuesPropertyMap.insert("className", QVariant::fromValue(valueObject));
|
||||||
|
|
||||||
// id
|
// id
|
||||||
valueObject = qobject_cast<PropertyEditorValue*>(QDeclarativeMetaType::toQObject(m_backendValuesPropertyMap.value("id")));
|
valueObject = qobject_cast<PropertyEditorValue*>(variantToQObject(m_backendValuesPropertyMap.value("id")));
|
||||||
if (!valueObject)
|
if (!valueObject)
|
||||||
valueObject = new PropertyEditorValue(&m_backendValuesPropertyMap);
|
valueObject = new PropertyEditorValue(&m_backendValuesPropertyMap);
|
||||||
valueObject->setName("id");
|
valueObject->setName("id");
|
||||||
@@ -244,7 +250,7 @@ void PropertyEditor::NodeType::initialSetup(const QString &typeName, const QUrl
|
|||||||
foreach (const QString &propertyName, metaInfo.propertyNames())
|
foreach (const QString &propertyName, metaInfo.propertyNames())
|
||||||
setupPropertyEditorValue(propertyName, &m_backendValuesPropertyMap, propertyEditor, metaInfo.propertyTypeName(propertyName));
|
setupPropertyEditorValue(propertyName, &m_backendValuesPropertyMap, propertyEditor, metaInfo.propertyTypeName(propertyName));
|
||||||
|
|
||||||
PropertyEditorValue *valueObject = qobject_cast<PropertyEditorValue*>(QDeclarativeMetaType::toQObject(m_backendValuesPropertyMap.value("className")));
|
PropertyEditorValue *valueObject = qobject_cast<PropertyEditorValue*>(variantToQObject(m_backendValuesPropertyMap.value("className")));
|
||||||
if (!valueObject)
|
if (!valueObject)
|
||||||
valueObject = new PropertyEditorValue(&m_backendValuesPropertyMap);
|
valueObject = new PropertyEditorValue(&m_backendValuesPropertyMap);
|
||||||
valueObject->setName("className");
|
valueObject->setName("className");
|
||||||
@@ -254,7 +260,7 @@ void PropertyEditor::NodeType::initialSetup(const QString &typeName, const QUrl
|
|||||||
m_backendValuesPropertyMap.insert("className", QVariant::fromValue(valueObject));
|
m_backendValuesPropertyMap.insert("className", QVariant::fromValue(valueObject));
|
||||||
|
|
||||||
// id
|
// id
|
||||||
valueObject = qobject_cast<PropertyEditorValue*>(QDeclarativeMetaType::toQObject(m_backendValuesPropertyMap.value("id")));
|
valueObject = qobject_cast<PropertyEditorValue*>(variantToQObject(m_backendValuesPropertyMap.value("id")));
|
||||||
if (!valueObject)
|
if (!valueObject)
|
||||||
valueObject = new PropertyEditorValue(&m_backendValuesPropertyMap);
|
valueObject = new PropertyEditorValue(&m_backendValuesPropertyMap);
|
||||||
valueObject->setName("id");
|
valueObject->setName("id");
|
||||||
@@ -376,7 +382,7 @@ void PropertyEditor::changeValue(const QString &propertyName)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (propertyName == "id") {
|
if (propertyName == "id") {
|
||||||
PropertyEditorValue *value = qobject_cast<PropertyEditorValue*>(QDeclarativeMetaType::toQObject(m_currentType->m_backendValuesPropertyMap.value(propertyName)));
|
PropertyEditorValue *value = qobject_cast<PropertyEditorValue*>(variantToQObject(m_currentType->m_backendValuesPropertyMap.value(propertyName)));
|
||||||
const QString newId = value->value().toString();
|
const QString newId = value->value().toString();
|
||||||
|
|
||||||
if (newId == m_selectedNode.id())
|
if (newId == m_selectedNode.id())
|
||||||
@@ -411,7 +417,7 @@ void PropertyEditor::changeValue(const QString &propertyName)
|
|||||||
//.replace(QLatin1Char('.'), QLatin1Char('_'))
|
//.replace(QLatin1Char('.'), QLatin1Char('_'))
|
||||||
QString underscoreName(propertyName);
|
QString underscoreName(propertyName);
|
||||||
underscoreName.replace(QLatin1Char('.'), QLatin1Char('_'));
|
underscoreName.replace(QLatin1Char('.'), QLatin1Char('_'));
|
||||||
PropertyEditorValue *value = qobject_cast<PropertyEditorValue*>(QDeclarativeMetaType::toQObject(m_currentType->m_backendValuesPropertyMap.value(underscoreName)));
|
PropertyEditorValue *value = qobject_cast<PropertyEditorValue*>(variantToQObject(m_currentType->m_backendValuesPropertyMap.value(underscoreName)));
|
||||||
|
|
||||||
if (value ==0) {
|
if (value ==0) {
|
||||||
return;
|
return;
|
||||||
@@ -480,7 +486,7 @@ void PropertyEditor::changeExpression(const QString &name)
|
|||||||
underscoreName.replace(QLatin1Char('.'), QLatin1Char('_'));
|
underscoreName.replace(QLatin1Char('.'), QLatin1Char('_'));
|
||||||
|
|
||||||
QmlObjectNode fxObjectNode(m_selectedNode);
|
QmlObjectNode fxObjectNode(m_selectedNode);
|
||||||
PropertyEditorValue *value = qobject_cast<PropertyEditorValue*>(QDeclarativeMetaType::toQObject(m_currentType->m_backendValuesPropertyMap.value(underscoreName)));
|
PropertyEditorValue *value = qobject_cast<PropertyEditorValue*>(variantToQObject(m_currentType->m_backendValuesPropertyMap.value(underscoreName)));
|
||||||
|
|
||||||
if (fxObjectNode.modelNode().metaInfo().isValid() && fxObjectNode.modelNode().metaInfo().hasProperty(name)) {
|
if (fxObjectNode.modelNode().metaInfo().isValid() && fxObjectNode.modelNode().metaInfo().hasProperty(name)) {
|
||||||
if (fxObjectNode.modelNode().metaInfo().propertyTypeName(name) == QLatin1String("QColor")) {
|
if (fxObjectNode.modelNode().metaInfo().propertyTypeName(name) == QLatin1String("QColor")) {
|
||||||
|
|||||||
Reference in New Issue
Block a user