aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/components/connectioneditor/connectionmodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qmldesigner/components/connectioneditor/connectionmodel.cpp')
-rw-r--r--src/plugins/qmldesigner/components/connectioneditor/connectionmodel.cpp30
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;