aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp')
-rw-r--r--src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp56
1 files changed, 44 insertions, 12 deletions
diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
index 098f8317a5..e2f0602cc2 100644
--- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
+++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
@@ -664,9 +664,7 @@ QList<QmlFlowItemNode> QmlFlowViewNode::flowItems() const
ModelNode QmlFlowViewNode::addTransition(const QmlFlowTargetNode &from, const QmlFlowTargetNode &to)
{
- ModelNode transition = view()->createModelNode("FlowView.FlowTransition", 1, 0);
-
- nodeListProperty("flowTransitions").reparentHere(transition);
+ ModelNode transition = createTransition();
QmlFlowTargetNode f = from;
QmlFlowTargetNode t = to;
@@ -684,8 +682,6 @@ const QList<ModelNode> QmlFlowViewNode::transitions() const
return modelNode().nodeListProperty("flowTransitions").toModelNodeList();
return {};
-
-
}
const QList<ModelNode> QmlFlowViewNode::wildcards() const
@@ -706,13 +702,12 @@ const QList<ModelNode> QmlFlowViewNode::decicions() const
QList<ModelNode> QmlFlowViewNode::transitionsForTarget(const ModelNode &modelNode)
{
- QList<ModelNode> list;
- for (const ModelNode &transition : transitions()) {
- if (transition.hasBindingProperty("to")
- && transition.bindingProperty("to").resolveToModelNode() == modelNode)
- list.append(transition);
- }
- return list;
+ return transitionsForProperty("to", modelNode);
+}
+
+QList<ModelNode> QmlFlowViewNode::transitionsForSource(const ModelNode &modelNode)
+{
+ return transitionsForProperty("from", modelNode);
}
void QmlFlowViewNode::removeDanglingTransitions()
@@ -830,4 +825,41 @@ void QmlFlowViewNode::removeAllTransitions()
removeProperty("flowTransitions");
}
+void QmlFlowViewNode::setStartFlowItem(const QmlFlowItemNode &flowItem)
+{
+ QTC_ASSERT(flowItem.isValid(), return);
+ QmlFlowItemNode item = flowItem;
+
+ ModelNode transition;
+
+ for (const ModelNode &node : transitionsForSource(modelNode()))
+ transition = node;
+ if (!transition.isValid())
+ transition = createTransition();
+
+ transition.bindingProperty("from").setExpression(modelNode().validId());
+ transition.bindingProperty("to").setExpression(item.validId());
+}
+
+ModelNode QmlFlowViewNode::createTransition()
+{
+ ModelNode transition = view()->createModelNode("FlowView.FlowTransition", 1, 0);
+ nodeListProperty("flowTransitions").reparentHere(transition);
+
+ return transition;
+}
+
+QList<ModelNode> QmlFlowViewNode::transitionsForProperty(const PropertyName &propertyName,
+ const ModelNode &modelNode)
+{
+ QList<ModelNode> list;
+ for (const ModelNode &transition : transitions()) {
+ if (transition.hasBindingProperty(propertyName)
+ && transition.bindingProperty(propertyName).resolveToModelNode() == modelNode)
+ list.append(transition);
+ }
+ return list;
+
+}
+
} //QmlDesigner