diff options
author | Aleksei German <aleksei.german@qt.io> | 2022-11-25 19:52:05 +0100 |
---|---|---|
committer | Aleksei German <aleksei.german@qt.io> | 2022-11-29 10:54:17 +0000 |
commit | 86ed12e7299c1e6be61f6c42c486acb6fcd4c0de (patch) | |
tree | 1ca51cb5d02caefc6a667a6c4820b43b9276a80c | |
parent | 5705194bc78709fbdfc125debcfd228d20179e74 (diff) | |
download | qt-creator-86ed12e7299c1e6be61f6c42c486acb6fcd4c0de.tar.gz |
QmlDesigner: Add StateGroups to Connections
Task-number: QDS-8027
Change-Id: I72ce5bfd2505269ad750ee5fbd5b13669891290f
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
-rw-r--r-- | src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp index e99d94014f..3439d02e44 100644 --- a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp +++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp @@ -492,6 +492,22 @@ struct SlotEntry std::function<void(SignalHandlerProperty)> action; }; +QList<ModelNode> stateGroups(const ModelNode &node) +{ + if (!node.view()->isAttached()) + return {}; + + const auto groupMetaInfo = node.view()->model()->qtQuickStateGroupMetaInfo(); + + return node.view()->allModelNodesOfType(groupMetaInfo); +} + +QStringList stateGroupsNames(const ModelNode &node) +{ + return Utils::transform(stateGroups(node), + [](const ModelNode &node) { return node.displayName(); }); +} + QList<SlotEntry> getSlotsLists(const ModelNode &node) { if (!node.isValid()) @@ -528,6 +544,32 @@ QList<SlotEntry> getSlotsLists(const ModelNode &node) resultList.push_back(entry); } + const auto sg = stateGroups(node); + + for (const auto &stateGroup : sg) { + QmlObjectNode stateGroupObjectNode(stateGroup); + const QString stateGroupCategory = QString("Change State Group") + " " + + stateGroup.displayName(); + + const SlotEntry defaultGroupState = {stateGroupCategory, + (stateGroupCategory + " to " + "Default State"), + [stateGroup](SignalHandlerProperty signalHandler) { + signalHandler.setSource( + QString("%1.state = \"\"").arg(stateGroup.id())); + }}; + resultList.push_back(defaultGroupState); + + for (const auto &stateName : stateGroupObjectNode.states().names()) { + SlotEntry entry = {stateGroupCategory, + (stateGroupCategory + " to " + stateName), + [stateGroup, stateName](SignalHandlerProperty signalHandler) { + signalHandler.setSource( + QString("%1.state = \"%2\"").arg(stateGroup.id(), stateName)); + }}; + resultList.push_back(entry); + } + } + return resultList; } |