diff options
author | Thomas Hartmann <thomas.hartmann@qt.io> | 2020-05-07 21:10:53 +0200 |
---|---|---|
committer | Thomas Hartmann <thomas.hartmann@qt.io> | 2020-05-07 19:13:14 +0000 |
commit | a41bb573e8f0e9e6d32b37ef57ae136ee640d0c7 (patch) | |
tree | 8800a8102f630a86e70961f852f6ba4261f23d12 | |
parent | 149453941a2ba82575457bbed65562b8c6a946ef (diff) |
QmlDesigner: Add action for selecting effect
Change-Id: I7b89eb688fb7b9a9cd1ad21afcdf67c1662fd110
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
4 files changed, 39 insertions, 0 deletions
diff --git a/src/plugins/qmldesigner/components/componentcore/componentcore_constants.h b/src/plugins/qmldesigner/components/componentcore/componentcore_constants.h index aff4b3fc25..e76b5c1ff7 100644 --- a/src/plugins/qmldesigner/components/componentcore/componentcore_constants.h +++ b/src/plugins/qmldesigner/components/componentcore/componentcore_constants.h @@ -60,6 +60,7 @@ const char anchorsResetCommandId[] = "AnchorsReset"; const char removePositionerCommandId[] = "RemovePositioner"; const char createFlowActionAreaCommandId[] = "CreateFlowActionArea"; const char setFlowStartCommandId[] = "SetFlowStart"; +const char selectFlowEffectCommandId[] = "SelectFlowEffect"; const char layoutRowPositionerCommandId[] = "LayoutRowPositioner"; const char layoutColumnPositionerCommandId[] = "LayoutColumnPositioner"; const char layoutGridPositionerCommandId[] = "LayoutGridPositioner"; @@ -83,6 +84,7 @@ const char addToGroupItemCommandId[] = "AddToGroupItem"; const char selectionCategoryDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Selection"); const char flowConnectionCategoryDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Connect"); +const char selectEffectDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Select Effect"); const char stackCategoryDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Stack (z)"); const char editCategoryDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Edit"); const char anchorsCategoryDisplayName[] = QT_TRANSLATE_NOOP("QmlDesignerContextMenu", "Anchors"); diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp index 5e7badef6f..61e21d5af1 100644 --- a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp +++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp @@ -358,6 +358,16 @@ bool isFlowTransitionItem(const SelectionContext &context) && QmlFlowItemNode::isFlowTransition(context.currentSingleSelectedNode()); } +bool isFlowTransitionItemWithEffect(const SelectionContext &context) +{ + if (!isFlowTransitionItem(context)) + return false; + + ModelNode node = context.currentSingleSelectedNode(); + + return node.hasNodeProperty("effect"); +} + bool isFlowActionItemItem(const SelectionContext &context) { const ModelNode selectedNode = context.currentSingleSelectedNode(); @@ -933,6 +943,16 @@ void DesignerActionManager::createDefaultDesignerActions() for (const TypeName &typeName : types) addTransitionEffectAction(typeName); + addDesignerAction(new ModelNodeContextMenuAction( + selectFlowEffectCommandId, + selectEffectDisplayName, + {}, + flowCategory, + {}, + priorityFlowCategory, + &selectFlowEffect, + &isFlowTransitionItemWithEffect)); + addDesignerAction(new ActionGroup( stackedContainerCategoryDisplayName, stackedContainerCategory, diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp index 35cc0e8ab1..00e2ac028a 100644 --- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp +++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp @@ -1201,6 +1201,22 @@ void addToGroupItem(const SelectionContext &selectionContext) } } +void selectFlowEffect(const SelectionContext &selectionContext) +{ + if (!selectionContext.singleNodeIsSelected()) + return; + + ModelNode node = selectionContext.currentSingleSelectedNode(); + QmlVisualNode transition(node); + + QTC_ASSERT(transition.isValid(), return); + QTC_ASSERT(transition.isFlowTransition(), return); + + if (node.hasNodeProperty("effect")) { + selectionContext.view()->setSelectedModelNode(node.nodeProperty("effect").modelNode()); + } +} + } // namespace Mode } //QmlDesigner diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.h b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.h index ea0b87e198..220afe9d4e 100644 --- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.h +++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.h @@ -79,6 +79,7 @@ void addTransition(const SelectionContext &selectionState); void addFlowEffect(const SelectionContext &selectionState, const TypeName &typeName); void setFlowStartItem(const SelectionContext &selectionContext); void addToGroupItem(const SelectionContext &selectionContext); +void selectFlowEffect(const SelectionContext &selectionContext); } // namespace ModelNodeOperationso } //QmlDesigner |