summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas Hartmann <Thomas.Hartmann@digia.com>2012-10-05 17:27:01 +0200
committerThomas Hartmann <Thomas.Hartmann@digia.com>2012-10-05 17:27:34 +0200
commit43f2c77a42d6f50dd5b21aeee88ef0a78eae41ee (patch)
treec7f234cd197e1bcee0216b680a410e1fd5d1190a /src
parent80eae788fda651c5b36976bd811247a500ed3233 (diff)
downloadqt-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')
-rw-r--r--src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp5
-rw-r--r--src/plugins/qmldesigner/designercore/include/qmlmodelnodefacade.h2
-rw-r--r--src/plugins/qmldesigner/designercore/include/qmlmodelview.h2
-rw-r--r--src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp2
-rw-r--r--src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp14
-rw-r--r--src/plugins/qmldesigner/designercore/model/qmlstate.cpp12
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()));