QmlDesigner: Implement proper connection of FlowDecision and FlowWildcard

This adds the code to draw connections from and to FlowDecision
and FlowWildcard.

Change-Id: I8f465ac70b92b26ca32eaeb45590e18e7db13693
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Thomas Hartmann
2020-03-24 16:59:43 +01:00
parent fbc177282e
commit 208fbe18c1

View File

@@ -927,10 +927,20 @@ void FormEditorTransitionItem::paint(QPainter *painter, const QStyleOptionGraphi
bool isStartLine = false; bool isStartLine = false;
bool isWildcardLine = false;
if (from.isValid()) { if (from.isValid()) {
for (const QmlFlowActionAreaNode &area : from.flowActionAreas()) { for (const QmlFlowActionAreaNode &area : from.flowActionAreas()) {
if (area.targetTransition() == qmlItemNode().modelNode()) ModelNode target = area.targetTransition();
if (target == qmlItemNode().modelNode()) {
areaNode = area; areaNode = area;
} else {
const ModelNode decisionNode = area.decisionNodeForTransition(qmlItemNode().modelNode());
if (decisionNode.isValid()) {
from = decisionNode;
areaNode = ModelNode();
}
}
} }
if (from.modelNode().hasAuxiliaryData("joinConnection")) if (from.modelNode().hasAuxiliaryData("joinConnection"))
joinConnection = from.modelNode().auxiliaryData("joinConnection").toBool(); joinConnection = from.modelNode().auxiliaryData("joinConnection").toBool();
@@ -938,6 +948,12 @@ void FormEditorTransitionItem::paint(QPainter *painter, const QStyleOptionGraphi
if (from == qmlItemNode().rootModelNode()) { if (from == qmlItemNode().rootModelNode()) {
isStartLine = true; isStartLine = true;
} else { } else {
for (const ModelNode wildcard : QmlFlowViewNode(qmlItemNode().rootModelNode()).wildcards()) {
if (wildcard.bindingProperty("target").resolveToModelNode() == qmlItemNode().modelNode()) {
from = wildcard;
isWildcardLine = true;
}
}
} }
} }
@@ -946,6 +962,11 @@ void FormEditorTransitionItem::paint(QPainter *painter, const QStyleOptionGraphi
return; return;
QRectF fromRect = QmlItemNode(from).instanceBoundingRect(); QRectF fromRect = QmlItemNode(from).instanceBoundingRect();
if (QmlItemNode(from).isFlowDecision())
fromRect = QRectF(0,0,200,200);
if (QmlItemNode(from).isFlowWildcard())
fromRect = QRectF(0,0,200,200);
fromRect.translate(QmlItemNode(from).flowPosition()); fromRect.translate(QmlItemNode(from).flowPosition());
if (isStartLine) { if (isStartLine) {
@@ -960,6 +981,9 @@ void FormEditorTransitionItem::paint(QPainter *painter, const QStyleOptionGraphi
} }
QRectF toRect = QmlItemNode(to).instanceBoundingRect(); QRectF toRect = QmlItemNode(to).instanceBoundingRect();
if (QmlItemNode(to).isFlowDecision())
toRect = QRectF(0,0,200,200);
toRect.translate(QmlItemNode(to).flowPosition()); toRect.translate(QmlItemNode(to).flowPosition());
if (isStartLine) { if (isStartLine) {