QmlDesigner: Choose proper default signal

Change-Id: I2a9493d0cc2a49afd624d58b53df54686d827422
Reviewed-by: Henning Gründl <henning.gruendl@qt.io>
This commit is contained in:
Thomas Hartmann
2023-09-15 19:02:17 +02:00
parent c693bd06b3
commit 6dc4243995

View File

@@ -303,6 +303,46 @@ ModelNode ConnectionModel::getTargetNodeForConnection(const ModelNode &connectio
return result; return result;
} }
static QString addOnToSignalName(const QString &signal)
{
QString ret = signal;
ret[0] = ret.at(0).toUpper();
ret.prepend("on");
return ret;
}
static PropertyName getFirstSignalForTarget(const NodeMetaInfo &target)
{
PropertyName ret = "clicked";
if (!target.isValid())
return ret;
const auto signalNames = target.signalNames();
if (signalNames.isEmpty())
return ret;
const PropertyNameList priorityList = {"clicked",
"toggled",
"started",
"stopped",
"moved",
"valueChanged",
"visualPostionChanged",
"accepted",
"currentIndexChanged",
"activeFocusChanged"};
for (const auto &signal : priorityList) {
if (signalNames.contains(signal))
return signal;
}
ret = target.signalNames().first();
return ret;
}
void ConnectionModel::addConnection() void ConnectionModel::addConnection()
{ {
QmlDesignerPlugin::emitUsageStatistics(Constants::EVENT_CONNECTION_ADDED); QmlDesignerPlugin::emitUsageStatistics(Constants::EVENT_CONNECTION_ADDED);
@@ -314,8 +354,16 @@ void ConnectionModel::addConnection()
NodeMetaInfo nodeMetaInfo = connectionView()->model()->qtQuickConnectionsMetaInfo(); NodeMetaInfo nodeMetaInfo = connectionView()->model()->qtQuickConnectionsMetaInfo();
if (nodeMetaInfo.isValid()) { if (nodeMetaInfo.isValid()) {
connectionView()->executeInTransaction("ConnectionModel::addConnection", [=, &rootModelNode](){ ModelNode selectedNode = connectionView()->selectedModelNodes().constFirst();
ModelNode newNode = connectionView()->createModelNode("QtQuick.Connections", const PropertyName signalHandlerName = addOnToSignalName(
QString::fromUtf8(getFirstSignalForTarget(
selectedNode.metaInfo())))
.toUtf8();
connectionView()
->executeInTransaction("ConnectionModel::addConnection", [=, &rootModelNode]() {
ModelNode newNode = connectionView()
->createModelNode("QtQuick.Connections",
nodeMetaInfo.majorVersion(), nodeMetaInfo.majorVersion(),
nodeMetaInfo.minorVersion()); nodeMetaInfo.minorVersion());
QString source = "console.log(\"clicked\")"; QString source = "console.log(\"clicked\")";
@@ -325,21 +373,26 @@ void ConnectionModel::addConnection()
if (QmlItemNode::isValidQmlItemNode(selectedNode)) if (QmlItemNode::isValidQmlItemNode(selectedNode))
selectedNode.nodeAbstractProperty("data").reparentHere(newNode); selectedNode.nodeAbstractProperty("data").reparentHere(newNode);
else else
rootModelNode.nodeAbstractProperty(rootModelNode.metaInfo().defaultPropertyName()).reparentHere(newNode); rootModelNode
.nodeAbstractProperty(rootModelNode.metaInfo().defaultPropertyName())
.reparentHere(newNode);
if (QmlItemNode(selectedNode).isFlowActionArea() || QmlVisualNode(selectedNode).isFlowTransition()) if (QmlItemNode(selectedNode).isFlowActionArea()
|| QmlVisualNode(selectedNode).isFlowTransition())
source = selectedNode.validId() + ".trigger()"; source = selectedNode.validId() + ".trigger()";
if (!connectionView()->selectedModelNodes().constFirst().id().isEmpty()) if (!connectionView()->selectedModelNodes().constFirst().id().isEmpty())
newNode.bindingProperty("target").setExpression(selectedNode.validId()); newNode.bindingProperty("target").setExpression(selectedNode.validId());
} else { } else {
rootModelNode.nodeAbstractProperty(rootModelNode.metaInfo().defaultPropertyName()).reparentHere(newNode); rootModelNode
.nodeAbstractProperty(rootModelNode.metaInfo().defaultPropertyName())
.reparentHere(newNode);
newNode.bindingProperty("target").setExpression(rootModelNode.validId()); newNode.bindingProperty("target").setExpression(rootModelNode.validId());
} }
newNode.signalHandlerProperty("onClicked").setSource(source); newNode.signalHandlerProperty(signalHandlerName).setSource(source);
selectProperty(newNode.signalHandlerProperty("onClicked")); selectProperty(newNode.signalHandlerProperty(signalHandlerName));
}); });
} }
} }
@@ -790,14 +843,6 @@ QString removeOnFromSignalName(const QString &signal)
return ret; return ret;
} }
QString addOnToSignalName(const QString &signal)
{
QString ret = signal;
ret[0] = ret.at(0).toUpper();
ret.prepend("on");
return ret;
}
void ConnectionModelBackendDelegate::setCurrentRow(int i) void ConnectionModelBackendDelegate::setCurrentRow(int i)
{ {
if (m_currentRow == i) if (m_currentRow == i)