From df75ec5e96d6506bf5044ab913318c8bbbdae85b Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Mon, 19 Aug 2013 13:07:56 +0200 Subject: [PATCH] QmlDesigner: Disable States for ApplicationWindow Change-Id: Ia86ee67cdb0ab25f5ba00877997ae6b74fe4687a Reviewed-by: Christian Stenger --- .../components/stateseditor/stateseditorview.cpp | 10 +++++++++- .../components/stateseditor/stateseditorview.h | 1 + .../components/stateseditor/stateseditorwidget.cpp | 7 +++++++ .../components/stateseditor/stateseditorwidget.h | 2 ++ .../qmldesigner/components/stateseditor/stateslist.qml | 1 + 5 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp index cfc7c92923..73f6463777 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp @@ -76,7 +76,7 @@ void StatesEditorView::propertiesAboutToBeRemoved(const QList void StatesEditorView::rootNodeTypeChanged(const QString &/*type*/, int /*majorVersion*/, int /*minorVersion*/) { - + checkForApplicationWindow(); } void StatesEditorView::instancePropertyChange(const QList > &/*propertyList*/) @@ -245,6 +245,12 @@ void StatesEditorView::duplicateCurrentState() setCurrentState(newState); } +void StatesEditorView::checkForApplicationWindow() +{ + if (m_statesEditorWidget) + m_statesEditorWidget->showAddNewStatesButton(!rootModelNode().metaInfo().isSubclassOf("QtQuick.Controls.ApplicationWindow", -1, -1)); +} + void StatesEditorView::setCurrentState(const QmlModelState &state) { if (!model() && !state.isValid()) @@ -310,6 +316,8 @@ void StatesEditorView::modelAttached(Model *model) if (m_statesEditorWidget) m_statesEditorWidget->setNodeInstanceView(nodeInstanceView()); + checkForApplicationWindow(); + resetModel(); } diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.h b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.h index c6410505e9..aa2088703a 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.h +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.h @@ -112,6 +112,7 @@ private: void resetModel(); void addState(); void duplicateCurrentState(); + void checkForApplicationWindow(); private: QWeakPointer m_statesEditorModel; diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp index c885392462..1a56263d18 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.cpp @@ -67,6 +67,11 @@ void StatesEditorWidget::setNodeInstanceView(NodeInstanceView *nodeInstanceView) m_imageProvider->setNodeInstanceView(nodeInstanceView); } +void StatesEditorWidget::showAddNewStatesButton(bool showAddNewStatesButton) +{ + m_declarativeView->rootContext()->setContextProperty("canAddNewStates", showAddNewStatesButton); +} + StatesEditorWidget::StatesEditorWidget(StatesEditorView *statesEditorView, StatesEditorModel *statesEditorModel): QWidget(), m_declarativeView(new QDeclarativeView(this)), @@ -94,6 +99,8 @@ StatesEditorWidget::StatesEditorWidget(StatesEditorView *statesEditorView, State highlightColor.setHsvF(highlightColor.hsvHueF(),0.1 + highlightColor.saturationF()*2.0, highlightColor.valueF()); m_declarativeView->rootContext()->setContextProperty(QLatin1String("highlightColor"), highlightColor); + m_declarativeView->rootContext()->setContextProperty("canAddNewStates", true); + // Work around ASSERT in the internal QGraphicsScene that happens when // the scene is created + items set dirty in one event loop run (BAUHAUS-459) //QApplication::processEvents(); diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.h b/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.h index 8973b9c4a6..0d0e542588 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.h +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorwidget.h @@ -62,6 +62,8 @@ public: void setCurrentStateInternalId(int internalId); void setNodeInstanceView(NodeInstanceView *nodeInstanceView); + void showAddNewStatesButton(bool showAddNewStatesButton); + private: QWeakPointer m_declarativeView; QWeakPointer m_statesEditorView; diff --git a/src/plugins/qmldesigner/components/stateseditor/stateslist.qml b/src/plugins/qmldesigner/components/stateseditor/stateslist.qml index 6a9ec04ee3..01abea5281 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateslist.qml +++ b/src/plugins/qmldesigner/components/stateseditor/stateslist.qml @@ -85,6 +85,7 @@ Rectangle { id: newStateBoxLoader; width:132 height:listViewRow.height + visible: canAddNewStates Loader { sourceComponent: addState; // make it square -- GitLab