diff options
author | Thomas Hartmann <thomas.hartmann@qt.io> | 2020-04-15 19:28:03 +0200 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@qt.io> | 2020-04-21 11:05:06 +0000 |
commit | 38bfdd86e353e87fd6b8f589b16a3dd62c7af2a9 (patch) | |
tree | dc6c1c82138c5d40a081273f64c5816c1b6556fb | |
parent | 6b6b844020e93af947ee871683a970ef3830aeb4 (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.h | 3 | ||||
-rw-r--r-- | src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp | 28 |
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 |