summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksei German <aleksei.german@qt.io>2022-11-25 19:52:05 +0100
committerAleksei German <aleksei.german@qt.io>2022-11-29 10:54:17 +0000
commit86ed12e7299c1e6be61f6c42c486acb6fcd4c0de (patch)
tree1ca51cb5d02caefc6a667a6c4820b43b9276a80c
parent5705194bc78709fbdfc125debcfd228d20179e74 (diff)
downloadqt-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.cpp42
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;
}