diff options
author | Thomas Hartmann <Thomas.Hartmann@digia.com> | 2012-10-05 17:27:01 +0200 |
---|---|---|
committer | Thomas Hartmann <Thomas.Hartmann@digia.com> | 2012-10-05 17:27:34 +0200 |
commit | 43f2c77a42d6f50dd5b21aeee88ef0a78eae41ee (patch) | |
tree | c7f234cd197e1bcee0216b680a410e1fd5d1190a /src | |
parent | 80eae788fda651c5b36976bd811247a500ed3233 (diff) | |
download | qt-creator-43f2c77a42d6f50dd5b21aeee88ef0a78eae41ee.tar.gz |
QmlDesigner: fixing states for Qt Quick 2.0
Depending on the import we have QtQuick.State.1.0 or
QtQuick.State.2.0.
We use majorQtQuickVersion to distinguish between 1.0/2.0.
QmlModelNodeFacade::qmlModelView() is made public for convenience.
Change-Id: Ice53f4985ed4fe1475e2155c16a70988d413e2e7
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
Diffstat (limited to 'src')
6 files changed, 30 insertions, 7 deletions
diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp index 3dabc05e4f..a5d08aa86d 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp @@ -138,8 +138,9 @@ void StatesEditorView::addState() try { if ((rootStateGroup().allStates().count() < 1) && //QtQuick import might be missing - (!model()->hasImport(Import::createLibraryImport("QtQuick", "1.0"), true) && - !model()->hasImport(Import::createLibraryImport("QtQuick", "1.1"), true))) + (!model()->hasImport(Import::createLibraryImport("QtQuick", "1.0"), true) + && !model()->hasImport(Import::createLibraryImport("QtQuick", "1.1"), true) + && !model()->hasImport(Import::createLibraryImport("QtQuick", "2.0"), true))) model()->changeImports(QList<Import>() << Import::createLibraryImport("QtQuick", "1.0"), QList<Import>()); ModelNode newState = rootStateGroup().addState(newStateName); setCurrentState(newState); diff --git a/src/plugins/qmldesigner/designercore/include/qmlmodelnodefacade.h b/src/plugins/qmldesigner/designercore/include/qmlmodelnodefacade.h index e2d3e6b9a0..db1f516925 100644 --- a/src/plugins/qmldesigner/designercore/include/qmlmodelnodefacade.h +++ b/src/plugins/qmldesigner/designercore/include/qmlmodelnodefacade.h @@ -48,10 +48,10 @@ public: QmlModelNodeFacade(); bool isRootNode() const; + QmlModelView* qmlModelView() const; protected: QmlModelNodeFacade(const ModelNode &modelNode); - QmlModelView* qmlModelView() const; private: ModelNode m_modelNode; diff --git a/src/plugins/qmldesigner/designercore/include/qmlmodelview.h b/src/plugins/qmldesigner/designercore/include/qmlmodelview.h index 94a5755134..6791536b04 100644 --- a/src/plugins/qmldesigner/designercore/include/qmlmodelview.h +++ b/src/plugins/qmldesigner/designercore/include/qmlmodelview.h @@ -68,6 +68,8 @@ public: int minorVersion, const PropertyListType &propertyList = PropertyListType()); + ModelNode createQmlState(const PropertyListType &propertyList = PropertyListType()); + QmlItemNode createQmlItemNode(const ItemLibraryEntry &itemLibraryEntry, const QPointF &position, QmlItemNode parentNode); QmlItemNode createQmlItemNodeFromImage(const QString &imageName, const QPointF &position, QmlItemNode parentNode); diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp index 876e4ab105..3c830dd543 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp @@ -329,7 +329,7 @@ QmlModelState QmlModelStateGroup::addState(const QString &name) PropertyListType propertyList; propertyList.append(qMakePair(QString("name"), QVariant(name))); - ModelNode newState = modelNode().view()->createModelNode("QtQuick.State", 1, 0, propertyList); + ModelNode newState = QmlObjectNode(modelNode()).qmlModelView()->createQmlState(propertyList); modelNode().nodeListProperty("states").reparentHere(newState); return newState; diff --git a/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp b/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp index c2df79aa7e..58f1a4784a 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp @@ -47,6 +47,8 @@ #include "plaintexteditmodifier.h" #include "modelmerger.h" +#include <utils/qtcassert.h> + namespace QmlDesigner { QmlModelView::QmlModelView(QObject *parent) @@ -465,5 +467,17 @@ void QmlModelView::otherPropertyChanged(const QmlObjectNode &/*qmlObjectNode*/, { } +ModelNode QmlModelView::createQmlState(const QmlDesigner::PropertyListType &propertyList) +{ + + QTC_ASSERT(rootModelNode().majorQtQuickVersion() < 3); + + if (rootModelNode().majorQtQuickVersion() > 1) { + return createModelNode("QtQuick.State", 2, 0, propertyList); + } else { + return createModelNode("QtQuick.State", 1, 0, propertyList); + } +} + } //QmlDesigner diff --git a/src/plugins/qmldesigner/designercore/model/qmlstate.cpp b/src/plugins/qmldesigner/designercore/model/qmlstate.cpp index 8e222b0661..fa740c9831 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlstate.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlstate.cpp @@ -178,7 +178,13 @@ void QmlModelState::addChangeSetIfNotExists(const ModelNode &node) return; //changeSet already there } - ModelNode newChangeSet = modelNode().view()->createModelNode("QtQuick.PropertyChanges", 1, 0); + ModelNode newChangeSet; + if (qmlModelView()->rootModelNode().majorQtQuickVersion() > 1) { + newChangeSet = modelNode().view()->createModelNode("QtQuick.PropertyChanges", 2, 0); + } else { + newChangeSet = modelNode().view()->createModelNode("QtQuick.PropertyChanges", 1, 0); + } + modelNode().nodeListProperty("changes").reparentHere(newChangeSet); QmlPropertyChanges(newChangeSet).setTarget(node); @@ -245,7 +251,7 @@ bool QmlModelState::isValid() const { return QmlModelNodeFacade::isValid() && modelNode().metaInfo().isValid() && - (modelNode().metaInfo().isSubclassOf("QtQuick.State", 1, 0) || isBaseState()); + (modelNode().metaInfo().isSubclassOf("QtQuick.State", -1, -1) || isBaseState()); } /** @@ -279,7 +285,7 @@ QmlModelState QmlModelState::duplicate(const QString &name) const // QmlModelState newState(stateGroup().addState(name)); PropertyListType propertyList; propertyList.append(qMakePair(QString("name"), QVariant(name))); - QmlModelState newState ( qmlModelView()->createModelNode("QtQuick.State", 1, 0, propertyList) ); + QmlModelState newState ( qmlModelView()->createQmlState(propertyList) ); foreach (const ModelNode &childNode, modelNode().nodeListProperty("changes").toModelNodeList()) { ModelNode newModelNode(qmlModelView()->createModelNode(childNode.type(), childNode.majorVersion(), childNode.minorVersion())); |