aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp')
-rw-r--r--src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp99
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);