aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2020-04-15 19:28:03 +0200
committerTim Jenssen <tim.jenssen@qt.io>2020-04-21 11:05:06 +0000
commit38bfdd86e353e87fd6b8f589b16a3dd62c7af2a9 (patch)
treedc6c1c82138c5d40a081273f64c5816c1b6556fb
parent6b6b844020e93af947ee871683a970ef3830aeb4 (diff)
QmlDesigner: Add helper functions to remove transitions
Change-Id: I33c972f9080b5c344e07c3f910e0a36fa981063b Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
-rw-r--r--src/plugins/qmldesigner/designercore/include/qmlitemnode.h3
-rw-r--r--src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp28
2 files changed, 31 insertions, 0 deletions
diff --git a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h
index c9fa5ea3b8..ef8f1b28ba 100644
--- a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h
+++ b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h
@@ -144,6 +144,7 @@ public:
QmlFlowViewNode flowView() const;
ModelNode findSourceForDecisionNode() const;
static bool isFlowEditorTarget(const ModelNode &modelNode);
+ void removeTransitions();
};
class QMLDESIGNERCORE_EXPORT QmlFlowActionAreaNode : public QmlItemNode
@@ -181,6 +182,8 @@ public:
const QList<ModelNode> wildcards() const;
const QList<ModelNode> decicions() const;
QList<ModelNode> transitionsForTarget(const ModelNode &modelNode);
+ void removeDanglingTransitions();
+ void removeAllTransitions();
};
diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
index 65f719a5ac..d2c312dd27 100644
--- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
+++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
@@ -715,6 +715,14 @@ QList<ModelNode> QmlFlowViewNode::transitionsForTarget(const ModelNode &modelNod
return list;
}
+void QmlFlowViewNode::removeDanglingTransitions()
+{
+ for (const ModelNode &transition : transitions()) {
+ if (!transition.hasBindingProperty("to"))
+ QmlObjectNode(transition).destroy();
+ }
+}
+
bool QmlFlowTargetNode::isValid() const
{
return isFlowEditorTarget(modelNode());
@@ -802,4 +810,24 @@ bool QmlFlowTargetNode::isFlowEditorTarget(const ModelNode &modelNode)
|| QmlVisualNode::isFlowWildcard(modelNode);
}
+void QmlFlowTargetNode::removeTransitions()
+{
+ if (!modelNode().hasId())
+ return;
+
+ for (const BindingProperty &property : BindingProperty::findAllReferencesTo(modelNode())) {
+ if (property.isValid() && QmlVisualNode::isFlowTransition(property.parentModelNode()))
+ QmlObjectNode(property.parentModelNode()).destroy();
+ }
+}
+
+void QmlFlowViewNode::removeAllTransitions()
+{
+ if (!isValid())
+ return;
+
+ if (hasProperty("flowTransitions"))
+ removeProperty("flowTransitions");
+}
+
} //QmlDesigner