forked from qt-creator/qt-creator
QmlDesigner: Choose proper default signal
Change-Id: I2a9493d0cc2a49afd624d58b53df54686d827422 Reviewed-by: Henning Gründl <henning.gruendl@qt.io>
This commit is contained in:
@@ -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)
|
||||||
|
Reference in New Issue
Block a user