diff options
Diffstat (limited to 'src/plugins/qmldesigner/components/connectioneditor/connectionmodel.cpp')
-rw-r--r-- | src/plugins/qmldesigner/components/connectioneditor/connectionmodel.cpp | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/plugins/qmldesigner/components/connectioneditor/connectionmodel.cpp b/src/plugins/qmldesigner/components/connectioneditor/connectionmodel.cpp index 560be7c4f6..f4fa65e52d 100644 --- a/src/plugins/qmldesigner/components/connectioneditor/connectionmodel.cpp +++ b/src/plugins/qmldesigner/components/connectioneditor/connectionmodel.cpp @@ -259,16 +259,18 @@ void ConnectionModel::addConnection() ModelNode newNode = connectionView()->createModelNode("QtQuick.Connections", nodeMetaInfo.majorVersion(), nodeMetaInfo.minorVersion()); - - newNode.signalHandlerProperty("onClicked").setSource(QLatin1String("print(\"clicked\")")); + QString source = "print(\"clicked\")"; if (connectionView()->selectedModelNodes().count() == 1) { - const ModelNode selectedNode = connectionView()->selectedModelNodes().constFirst(); + ModelNode selectedNode = connectionView()->selectedModelNodes().constFirst(); if (QmlItemNode::isValidQmlItemNode(selectedNode)) selectedNode.nodeAbstractProperty("data").reparentHere(newNode); else rootModelNode.nodeAbstractProperty(rootModelNode.metaInfo().defaultPropertyName()).reparentHere(newNode); + if (QmlItemNode(selectedNode).isFlowActionArea()) + source = selectedNode.validId() + ".trigger()"; + if (!connectionView()->selectedModelNodes().constFirst().id().isEmpty()) newNode.bindingProperty("target").setExpression(selectedNode.id()); else @@ -277,6 +279,8 @@ void ConnectionModel::addConnection() rootModelNode.nodeAbstractProperty(rootModelNode.metaInfo().defaultPropertyName()).reparentHere(newNode); newNode.bindingProperty("target").setExpression(QLatin1String("parent")); } + + newNode.signalHandlerProperty("onClicked").setSource(source); }); } } @@ -378,6 +382,26 @@ QStringList ConnectionModel::getSignalsForRow(int row) const return stringList; } +QStringList ConnectionModel::getflowActionTriggerForRow(int row) const +{ + QStringList stringList; + SignalHandlerProperty signalHandlerProperty = signalHandlerPropertyForRow(row); + + if (signalHandlerProperty.isValid()) { + const ModelNode parentModelNode = signalHandlerProperty.parentModelNode(); + ModelNode targetNode = getTargetNodeForConnection(parentModelNode); + if (!targetNode.isValid() && !parentModelNode.isRootNode()) + targetNode = parentModelNode.parentProperty().parentModelNode(); + if (targetNode.isValid()) { + for (auto &node : targetNode.allSubModelNodesAndThisNode()) { + if (QmlItemNode(node).isFlowActionArea() && node.hasId()) + stringList.append(node.id() + ".trigger()"); + } + } + } + return stringList; +} + QStringList ConnectionModel::getPossibleSignalsForConnection(const ModelNode &connection) const { QStringList stringList; |