diff options
Diffstat (limited to 'src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp')
-rw-r--r-- | src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp | 99 |
1 files changed, 84 insertions, 15 deletions
diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp index 42f95952db..07246f175c 100644 --- a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp +++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp @@ -346,12 +346,28 @@ bool isFlowItem(const SelectionContext &context) && QmlFlowItemNode::isValidQmlFlowItemNode(context.currentSingleSelectedNode()); } +bool isFlowTarget(const SelectionContext &context) +{ + return context.singleNodeIsSelected() + && QmlFlowTargetNode::isFlowEditorTarget(context.currentSingleSelectedNode()); +} + bool isFlowTransitionItem(const SelectionContext &context) { return context.singleNodeIsSelected() && 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(); @@ -362,9 +378,9 @@ bool isFlowActionItemItem(const SelectionContext &context) || QmlVisualNode::isFlowWildcard(selectedNode)); } -bool isFlowItemOrTransition(const SelectionContext &context) +bool isFlowTargetOrTransition(const SelectionContext &context) { - return isFlowItem(context) || isFlowTransitionItem(context); + return isFlowTarget(context) || isFlowTransitionItem(context); } class FlowActionConnectAction : public ActionGroup @@ -642,6 +658,12 @@ bool positionOptionVisible(const SelectionContext &context) || isPositioner(context); } +bool studioComponentsAvailable(const SelectionContext &context) +{ + const Import import = Import::createLibraryImport("QtQuick.Studio.Components", "1.0"); + return context.view()->model()->isImportPossible(import, true, true); +} + bool singleSelectedAndUiFile(const SelectionContext &context) { if (!singleSelection(context)) @@ -853,15 +875,31 @@ void DesignerActionManager::createDefaultDesignerActions() priorityLayoutCategory, &layoutOptionVisible)); - //isFlowTransitionItem + addDesignerAction(new ActionGroup( + groupCategoryDisplayName, + groupCategory, + priorityGroupCategory, + &positionOptionVisible, + &studioComponentsAvailable)); addDesignerAction(new ActionGroup( flowCategoryDisplayName, flowCategory, priorityFlowCategory, - &isFlowItemOrTransition, + &isFlowTargetOrTransition, &flowOptionVisible)); + + auto effectMenu = new ActionGroup( + flowEffectCategoryDisplayName, + flowEffectCategory, + priorityFlowCategory, + &isFlowTransitionItem, + &flowOptionVisible); + + effectMenu->setCategory(flowCategory); + addDesignerAction(effectMenu); + addDesignerAction(new ModelNodeFormEditorAction( createFlowActionAreaCommandId, createFlowActionAreaDisplayName, @@ -874,26 +912,41 @@ void DesignerActionManager::createDefaultDesignerActions() &isFlowItem, &flowOptionVisible)); + addDesignerAction(new ModelNodeContextMenuAction( + setFlowStartCommandId, + setFlowStartDisplayName, + {}, + flowCategory, + priorityFirst, + {}, + &setFlowStartItem, + &isFlowItem, + &flowOptionVisible)); + addDesignerAction(new FlowActionConnectAction( flowConnectionCategoryDisplayName, flowConnectionCategory, priorityFlowCategory)); - const QList<TypeName> types = {"FlowActionArea", - "FlowFadeEffect", - "FlowPushRightEffect", - "FlowPushLeftEffect", - "FlowPushUpEffect", - "FlowSlideDownEffect", - "FlowSlideLeftEffect", - "FlowSlideRightEffect", - "FlowSlideUpEffect", + const QList<TypeName> transitionTypes = {"FlowFadeEffect", + "FlowPushEffect", + "FlowMoveEffect", "None"}; - for (const TypeName &typeName : types) + for (const TypeName &typeName : transitionTypes) addTransitionEffectAction(typeName); + addDesignerAction(new ModelNodeContextMenuAction( + selectFlowEffectCommandId, + selectEffectDisplayName, + {}, + flowCategory, + {}, + priorityFlowCategory, + &selectFlowEffect, + &isFlowTransitionItemWithEffect)); + addDesignerAction(new ActionGroup( stackedContainerCategoryDisplayName, stackedContainerCategory, @@ -968,6 +1021,18 @@ void DesignerActionManager::createDefaultDesignerActions() &isLayout, &isLayout)); + addDesignerAction(new ModelNodeContextMenuAction( + addToGroupItemCommandId, + addToGroupItemDisplayName, + {}, + groupCategory, + QKeySequence(), + 110, + &addToGroupItem, + &selectionCanBeLayouted, + &selectionCanBeLayouted)); + + addDesignerAction(new ModelNodeFormEditorAction( addItemToStackedContainerCommandId, addItemToStackedContainerDisplayName, @@ -1175,7 +1240,7 @@ void DesignerActionManager::addTransitionEffectAction(const TypeName &typeName) QByteArray(ComponentCoreConstants::flowAssignEffectCommandId) + typeName, QLatin1String(ComponentCoreConstants::flowAssignEffectDisplayName) + typeName, {}, - ComponentCoreConstants::flowCategory, + ComponentCoreConstants::flowEffectCategory, {}, typeName == "None" ? 100 : 140, [typeName](const SelectionContext &context) @@ -1186,6 +1251,10 @@ void DesignerActionManager::addTransitionEffectAction(const TypeName &typeName) DesignerActionToolBar::DesignerActionToolBar(QWidget *parentWidget) : Utils::StyledBar(parentWidget), m_toolBar(new QToolBar("ActionToolBar", this)) { + QWidget* empty = new QWidget(); + empty->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred); + m_toolBar->addWidget(empty); + m_toolBar->setContentsMargins(0, 0, 0, 0); m_toolBar->setFloatable(true); m_toolBar->setMovable(true); |