forked from qt-creator/qt-creator
QmlDesigner: Add setStartFlowItem
Change-Id: I6ad377bcca4e1db84a802909c1b5d8b9ccfe5a14 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -182,8 +182,13 @@ public:
|
|||||||
const QList<ModelNode> wildcards() const;
|
const QList<ModelNode> wildcards() const;
|
||||||
const QList<ModelNode> decicions() const;
|
const QList<ModelNode> decicions() const;
|
||||||
QList<ModelNode> transitionsForTarget(const ModelNode &modelNode);
|
QList<ModelNode> transitionsForTarget(const ModelNode &modelNode);
|
||||||
|
QList<ModelNode> transitionsForSource(const ModelNode &modelNode);
|
||||||
void removeDanglingTransitions();
|
void removeDanglingTransitions();
|
||||||
void removeAllTransitions();
|
void removeAllTransitions();
|
||||||
|
void setStartFlowItem(const QmlFlowItemNode &flowItem);
|
||||||
|
ModelNode createTransition();
|
||||||
|
protected:
|
||||||
|
QList<ModelNode> transitionsForProperty(const PropertyName &propertyName, const ModelNode &modelNode);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@@ -664,9 +664,7 @@ QList<QmlFlowItemNode> QmlFlowViewNode::flowItems() const
|
|||||||
|
|
||||||
ModelNode QmlFlowViewNode::addTransition(const QmlFlowTargetNode &from, const QmlFlowTargetNode &to)
|
ModelNode QmlFlowViewNode::addTransition(const QmlFlowTargetNode &from, const QmlFlowTargetNode &to)
|
||||||
{
|
{
|
||||||
ModelNode transition = view()->createModelNode("FlowView.FlowTransition", 1, 0);
|
ModelNode transition = createTransition();
|
||||||
|
|
||||||
nodeListProperty("flowTransitions").reparentHere(transition);
|
|
||||||
|
|
||||||
QmlFlowTargetNode f = from;
|
QmlFlowTargetNode f = from;
|
||||||
QmlFlowTargetNode t = to;
|
QmlFlowTargetNode t = to;
|
||||||
@@ -684,8 +682,6 @@ const QList<ModelNode> QmlFlowViewNode::transitions() const
|
|||||||
return modelNode().nodeListProperty("flowTransitions").toModelNodeList();
|
return modelNode().nodeListProperty("flowTransitions").toModelNodeList();
|
||||||
|
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const QList<ModelNode> QmlFlowViewNode::wildcards() const
|
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> QmlFlowViewNode::transitionsForTarget(const ModelNode &modelNode)
|
||||||
{
|
{
|
||||||
QList<ModelNode> list;
|
return transitionsForProperty("to", modelNode);
|
||||||
for (const ModelNode &transition : transitions()) {
|
|
||||||
if (transition.hasBindingProperty("to")
|
|
||||||
&& transition.bindingProperty("to").resolveToModelNode() == modelNode)
|
|
||||||
list.append(transition);
|
|
||||||
}
|
}
|
||||||
return list;
|
|
||||||
|
QList<ModelNode> QmlFlowViewNode::transitionsForSource(const ModelNode &modelNode)
|
||||||
|
{
|
||||||
|
return transitionsForProperty("from", modelNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlFlowViewNode::removeDanglingTransitions()
|
void QmlFlowViewNode::removeDanglingTransitions()
|
||||||
@@ -830,4 +825,41 @@ void QmlFlowViewNode::removeAllTransitions()
|
|||||||
removeProperty("flowTransitions");
|
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
|
} //QmlDesigner
|
||||||
|
Reference in New Issue
Block a user