aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/qmldesigner/components/componentcore/abstractaction.cpp37
-rw-r--r--src/plugins/qmldesigner/components/componentcore/abstractaction.h21
-rw-r--r--src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp24
-rw-r--r--src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu_helper.h4
-rw-r--r--src/plugins/qmldesigner/components/componentcore/viewmanager.cpp4
-rw-r--r--src/plugins/qmldesigner/components/edit3d/edit3dactions.cpp56
-rw-r--r--src/plugins/qmldesigner/components/edit3d/edit3dactions.h36
-rw-r--r--src/plugins/qmldesigner/components/edit3d/edit3dview.cpp40
-rw-r--r--src/plugins/qmldesigner/components/edit3d/edit3dview.h5
-rw-r--r--src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp12
-rw-r--r--src/plugins/qmldesigner/components/eventlist/eventlistpluginview.cpp6
-rw-r--r--src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp2
-rw-r--r--src/plugins/qmldesigner/components/formeditor/seekerslider.cpp37
-rw-r--r--src/plugins/qmldesigner/components/formeditor/seekerslider.h24
-rw-r--r--src/plugins/qmldesigner/components/formeditor/toolbox.cpp20
-rw-r--r--src/plugins/qmldesigner/components/formeditor/toolbox.h4
-rw-r--r--src/plugins/qmldesigner/qmldesignerconstants.h1
-rw-r--r--src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewactions.cpp6
-rw-r--r--src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewplugin.cpp2
19 files changed, 251 insertions, 90 deletions
diff --git a/src/plugins/qmldesigner/components/componentcore/abstractaction.cpp b/src/plugins/qmldesigner/components/componentcore/abstractaction.cpp
index 88d5991b12..bcfe087b57 100644
--- a/src/plugins/qmldesigner/components/componentcore/abstractaction.cpp
+++ b/src/plugins/qmldesigner/components/componentcore/abstractaction.cpp
@@ -8,7 +8,7 @@
namespace QmlDesigner {
AbstractAction::AbstractAction(const QString &description)
- : m_defaultAction(new DefaultAction(description))
+ : m_pureAction(new DefaultAction(description))
{
const Utils::Icon defaultIcon({
{":/utils/images/select.png", Utils::Theme::QmlDesigner_FormEditorForegroundColor}}, Utils::Icon::MenuTintedStyle);
@@ -16,14 +16,14 @@ AbstractAction::AbstractAction(const QString &description)
action()->setIcon(defaultIcon.icon());
}
-AbstractAction::AbstractAction(DefaultAction *action)
- : m_defaultAction(action)
+AbstractAction::AbstractAction(PureActionInterface *action)
+ : m_pureAction(action)
{
}
QAction *AbstractAction::action() const
{
- return m_defaultAction.data();
+ return m_pureAction->action();
}
void AbstractAction::currentContextChanged(const SelectionContext &selectionContext)
@@ -34,12 +34,13 @@ void AbstractAction::currentContextChanged(const SelectionContext &selectionCont
void AbstractAction::updateContext()
{
- m_defaultAction->setSelectionContext(m_selectionContext);
+ m_pureAction->setSelectionContext(m_selectionContext);
if (m_selectionContext.isValid()) {
- m_defaultAction->setEnabled(isEnabled(m_selectionContext));
- m_defaultAction->setVisible(isVisible(m_selectionContext));
- if (m_defaultAction->isCheckable())
- m_defaultAction->setChecked(isChecked(m_selectionContext));
+ QAction *action = m_pureAction->action();
+ action->setEnabled(isEnabled(m_selectionContext));
+ action->setVisible(isVisible(m_selectionContext));
+ if (action->isCheckable())
+ action->setChecked(isChecked(m_selectionContext));
}
}
@@ -50,12 +51,12 @@ bool AbstractAction::isChecked(const SelectionContext &) const
void AbstractAction::setCheckable(bool checkable)
{
- m_defaultAction->setCheckable(checkable);
+ action()->setCheckable(checkable);
}
-DefaultAction *AbstractAction::defaultAction() const
+PureActionInterface *AbstractAction::pureAction() const
{
- return m_defaultAction.data();
+ return m_pureAction.data();
}
SelectionContext AbstractAction::selectionContext() const
@@ -65,6 +66,7 @@ SelectionContext AbstractAction::selectionContext() const
DefaultAction::DefaultAction(const QString &description)
: QAction(description, nullptr)
+ , PureActionInterface(this)
{
connect(this, &QAction::triggered, this, &DefaultAction::actionTriggered);
}
@@ -74,4 +76,15 @@ void DefaultAction::setSelectionContext(const SelectionContext &selectionContext
m_selectionContext = selectionContext;
}
+PureActionInterface::PureActionInterface(QAction *action)
+ : m_action(action)
+{
+
+}
+
+QAction *PureActionInterface::action()
+{
+ return m_action;
+}
+
} // namespace QmlDesigner
diff --git a/src/plugins/qmldesigner/components/componentcore/abstractaction.h b/src/plugins/qmldesigner/components/componentcore/abstractaction.h
index 1d66f94798..06b7795574 100644
--- a/src/plugins/qmldesigner/components/componentcore/abstractaction.h
+++ b/src/plugins/qmldesigner/components/componentcore/abstractaction.h
@@ -10,7 +10,18 @@
namespace QmlDesigner {
-class QMLDESIGNERCOMPONENTS_EXPORT DefaultAction : public QAction
+class QMLDESIGNERCOMPONENTS_EXPORT PureActionInterface
+{
+public:
+ explicit PureActionInterface(QAction *action);
+ virtual void setSelectionContext(const SelectionContext &selectionContext) = 0;
+ QAction *action();
+
+private:
+ QAction *m_action = nullptr;
+};
+
+class QMLDESIGNERCOMPONENTS_EXPORT DefaultAction : public QAction, public PureActionInterface
{
Q_OBJECT
@@ -19,7 +30,7 @@ public:
// virtual function instead of slot
virtual void actionTriggered([[maybe_unused]] bool enable) {}
- void setSelectionContext(const SelectionContext &selectionContext);
+ virtual void setSelectionContext(const SelectionContext &selectionContext) override;
protected:
SelectionContext m_selectionContext;
@@ -29,10 +40,10 @@ class QMLDESIGNERCOMPONENTS_EXPORT AbstractAction : public ActionInterface
{
public:
AbstractAction(const QString &description = QString());
- AbstractAction(DefaultAction *action);
+ AbstractAction(PureActionInterface *action);
QAction *action() const override final;
- DefaultAction *defaultAction() const;
+ PureActionInterface *pureAction() const;
void currentContextChanged(const SelectionContext &selectionContext) override;
@@ -46,7 +57,7 @@ protected:
SelectionContext selectionContext() const;
private:
- QScopedPointer<DefaultAction> m_defaultAction;
+ QScopedPointer<PureActionInterface> m_pureAction;
SelectionContext m_selectionContext;
};
diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
index c187b59246..0651185382 100644
--- a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
+++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
@@ -311,17 +311,17 @@ public:
void updateContext() override
{
- defaultAction()->setSelectionContext(selectionContext());
+ pureAction()->setSelectionContext(selectionContext());
if (selectionContext().isValid()) {
- defaultAction()->setEnabled(isEnabled(selectionContext()));
- defaultAction()->setVisible(isVisible(selectionContext()));
+ action()->setEnabled(isEnabled(selectionContext()));
+ action()->setVisible(isVisible(selectionContext()));
- defaultAction()->setCheckable(true);
+ action()->setCheckable(true);
QmlItemNode itemNode = QmlItemNode(selectionContext().currentSingleSelectedNode());
if (itemNode.isValid())
- defaultAction()->setChecked(itemNode.instanceValue("visible").toBool());
+ action()->setChecked(itemNode.instanceValue("visible").toBool());
else
- defaultAction()->setEnabled(false);
+ action()->setEnabled(false);
}
}
};
@@ -337,12 +337,12 @@ public:
{}
void updateContext() override
{
- defaultAction()->setSelectionContext(selectionContext());
+ pureAction()->setSelectionContext(selectionContext());
if (selectionContext().isValid()) {
- defaultAction()->setEnabled(isEnabled(selectionContext()));
- defaultAction()->setVisible(isVisible(selectionContext()));
+ action()->setEnabled(isEnabled(selectionContext()));
+ action()->setVisible(isVisible(selectionContext()));
- defaultAction()->setCheckable(true);
+ action()->setCheckable(true);
QmlItemNode itemNode = QmlItemNode(selectionContext().currentSingleSelectedNode());
if (itemNode.isValid()) {
bool flag = false;
@@ -350,9 +350,9 @@ public:
|| itemNode.propertyAffectedByCurrentState(m_propertyName)) {
flag = itemNode.modelValue(m_propertyName).toBool();
}
- defaultAction()->setChecked(flag);
+ action()->setChecked(flag);
} else {
- defaultAction()->setEnabled(false);
+ action()->setEnabled(false);
}
}
}
diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu_helper.h b/src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu_helper.h
index 7c77f4b241..e0976b0bbc 100644
--- a/src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu_helper.h
+++ b/src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu_helper.h
@@ -182,8 +182,8 @@ public:
, m_priority(priority)
, m_visibility(&SelectionContextFunctors::always)
{
- defaultAction()->setSeparator(true);
- defaultAction()->setIcon({});
+ action()->setSeparator(true);
+ action()->setIcon({});
}
bool isVisible(const SelectionContext &m_selectionState) const override { return m_visibility(m_selectionState); }
diff --git a/src/plugins/qmldesigner/components/componentcore/viewmanager.cpp b/src/plugins/qmldesigner/components/componentcore/viewmanager.cpp
index 15ea827e6f..55468a3569 100644
--- a/src/plugins/qmldesigner/components/componentcore/viewmanager.cpp
+++ b/src/plugins/qmldesigner/components/componentcore/viewmanager.cpp
@@ -261,7 +261,7 @@ void ViewManager::registerNanotraceActions()
22,
handleShutdownNanotraceAction);
- QObject::connect(startNanotraceAction->defaultAction(), &QAction::triggered, [&]() {
+ QObject::connect(startNanotraceAction->action(), &QAction::triggered, [&]() {
d->nodeInstanceView.startNanotrace();
});
@@ -276,7 +276,7 @@ void ViewManager::registerNanotraceActions()
23,
handleShutdownNanotraceAction);
- QObject::connect(shutDownNanotraceAction->defaultAction(), &QAction::triggered, [&]() {
+ QObject::connect(shutDownNanotraceAction->action(), &QAction::triggered, [&]() {
d->nodeInstanceView.endNanotrace();
});
diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dactions.cpp b/src/plugins/qmldesigner/components/edit3d/edit3dactions.cpp
index 0c7a3fce8b..de5fa3b4a0 100644
--- a/src/plugins/qmldesigner/components/edit3d/edit3dactions.cpp
+++ b/src/plugins/qmldesigner/components/edit3d/edit3dactions.cpp
@@ -6,8 +6,9 @@
#include <viewmanager.h>
#include <nodeinstanceview.h>
-#include <qmldesignerplugin.h>
#include <nodemetainfo.h>
+#include <qmldesignerplugin.h>
+#include "seekerslider.h"
#include <utils/algorithm.h>
@@ -36,6 +37,12 @@ void Edit3DActionTemplate::actionTriggered(bool b)
m_action(m_selectionContext);
}
+Edit3DWidgetActionTemplate::Edit3DWidgetActionTemplate(QWidgetAction *widget)
+ : PureActionInterface(widget)
+{
+
+}
+
Edit3DAction::Edit3DAction(const QByteArray &menuId,
View3DActionType type,
const QString &description,
@@ -47,11 +54,11 @@ Edit3DAction::Edit3DAction(const QByteArray &menuId,
Edit3DView *view,
SelectionContextOperation selectionAction,
const QString &toolTip)
- : AbstractAction(new Edit3DActionTemplate(description, selectionAction, view, type))
- , m_menuId(menuId)
- , m_actionTemplate(qobject_cast<Edit3DActionTemplate *>(defaultAction()))
+ : Edit3DAction(menuId, type, view, new Edit3DActionTemplate(description,
+ selectionAction,
+ view,
+ type))
{
- view->registerEdit3DAction(this);
action()->setShortcut(key);
action()->setShortcutContext(Qt::WidgetWithChildrenShortcut);
action()->setCheckable(checkable);
@@ -74,6 +81,17 @@ Edit3DAction::Edit3DAction(const QByteArray &menuId,
}
}
+Edit3DAction::Edit3DAction(const QByteArray &menuId,
+ View3DActionType type,
+ Edit3DView *view,
+ PureActionInterface *pureInt)
+ : AbstractAction(pureInt)
+ , m_menuId(menuId)
+ , m_actionType(type)
+{
+ view->registerEdit3DAction(this);
+}
+
QByteArray Edit3DAction::category() const
{
return QByteArray();
@@ -81,7 +99,7 @@ QByteArray Edit3DAction::category() const
View3DActionType Edit3DAction::actionType() const
{
- return m_actionTemplate->m_type;
+ return m_actionType;
}
bool Edit3DAction::isVisible([[maybe_unused]] const SelectionContext &selectionContext) const
@@ -114,5 +132,31 @@ bool Edit3DCameraAction::isEnabled(const SelectionContext &selectionContext) con
[](const ModelNode &node) { return node.metaInfo().isQtQuick3DCamera(); });
}
+Edit3DParticleSeekerAction::Edit3DParticleSeekerAction(const QByteArray &menuId,
+ View3DActionType type,
+ Edit3DView *view)
+ : Edit3DAction(menuId,
+ type,
+ view,
+ new Edit3DWidgetActionTemplate(
+ new SeekerSliderAction(nullptr)))
+{
+ m_seeker = qobject_cast<SeekerSliderAction *>(action());
}
+SeekerSliderAction *Edit3DParticleSeekerAction::seekerAction()
+{
+ return m_seeker;
+}
+
+bool Edit3DParticleSeekerAction::isVisible(const SelectionContext &) const
+{
+ return m_seeker->isVisible();
+}
+
+bool Edit3DParticleSeekerAction::isEnabled(const SelectionContext &) const
+{
+ return m_seeker->isEnabled();
+}
+
+}
diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dactions.h b/src/plugins/qmldesigner/components/edit3d/edit3dactions.h
index 7c8a9760c0..710b5ee818 100644
--- a/src/plugins/qmldesigner/components/edit3d/edit3dactions.h
+++ b/src/plugins/qmldesigner/components/edit3d/edit3dactions.h
@@ -5,12 +5,15 @@
#include <abstractaction.h>
#include <QAction>
+#include <QWidgetAction>
#include <QIcon>
+class QWidgetAction;
namespace QmlDesigner {
using SelectionContextOperation = std::function<void(const SelectionContext &)>;
class Edit3DView;
+class SeekerSliderAction;
class Edit3DActionTemplate : public DefaultAction
{
@@ -29,6 +32,15 @@ public:
View3DActionType m_type;
};
+class Edit3DWidgetActionTemplate : public PureActionInterface
+{
+ Q_DISABLE_COPY(Edit3DWidgetActionTemplate)
+
+public:
+ explicit Edit3DWidgetActionTemplate(QWidgetAction *widget);
+ virtual void setSelectionContext(const SelectionContext &) {}
+};
+
class Edit3DAction : public AbstractAction
{
public:
@@ -44,6 +56,11 @@ public:
SelectionContextOperation selectionAction = nullptr,
const QString &toolTip = {});
+ Edit3DAction(const QByteArray &menuId,
+ View3DActionType type,
+ Edit3DView *view,
+ PureActionInterface *pureInt);
+
QByteArray category() const override;
int priority() const override
@@ -69,7 +86,7 @@ protected:
private:
QByteArray m_menuId;
- Edit3DActionTemplate *m_actionTemplate = nullptr;
+ View3DActionType m_actionType;
};
class Edit3DCameraAction : public Edit3DAction
@@ -90,4 +107,21 @@ protected:
bool isEnabled(const SelectionContext &selectionContext) const override;
};
+class Edit3DParticleSeekerAction : public Edit3DAction
+{
+public:
+ Edit3DParticleSeekerAction(const QByteArray &menuId,
+ View3DActionType type,
+ Edit3DView *view);
+
+ SeekerSliderAction *seekerAction();
+
+protected:
+ bool isVisible(const SelectionContext &) const override;
+ bool isEnabled(const SelectionContext &) const override;
+
+private:
+ SeekerSliderAction *m_seeker = nullptr;
+};
+
} // namespace QmlDesigner
diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp b/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp
index 9a72576e2c..cc7844c464 100644
--- a/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp
+++ b/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp
@@ -346,11 +346,6 @@ QSize Edit3DView::canvasSize() const
return {};
}
-void Edit3DView::setSeeker(SeekerSlider *slider)
-{
- m_seeker = slider;
-}
-
Edit3DAction *Edit3DView::createSelectBackgroundColorAction(QAction *syncBackgroundColorAction)
{
QString description = QCoreApplication::translate("SelectBackgroundColorAction",
@@ -468,6 +463,25 @@ Edit3DAction *Edit3DView::createSyncBackgroundColorAction()
tooltip);
}
+Edit3DAction *Edit3DView::createSeekerSliderAction()
+{
+ Edit3DParticleSeekerAction *seekerAction = new Edit3DParticleSeekerAction(
+ QmlDesigner::Constants::EDIT3D_PARTICLES_SEEKER,
+ View3DActionType::ParticlesSeek,
+ this);
+
+ seekerAction->action()->setEnabled(false);
+ seekerAction->action()->setToolTip(QLatin1String("Seek particle system time when paused."));
+
+ connect(seekerAction->seekerAction(),
+ &SeekerSliderAction::valueChanged,
+ this, [=] (int value) {
+ this->emitView3DAction(View3DActionType::ParticlesSeek, value);
+ });
+
+ return seekerAction;
+}
+
void Edit3DView::createEdit3DActions()
{
m_selectionModeAction = new Edit3DAction(
@@ -661,8 +675,8 @@ void Edit3DView::createEdit3DActions()
m_particlesRestartAction->action()->setEnabled(particlemode);
if (particlemode)
m_particlesPlayAction->action()->setChecked(true);
- if (m_seeker)
- m_seeker->setEnabled(false);
+ if (m_seekerAction)
+ m_seekerAction->action()->setEnabled(false);
resetPuppet();
};
@@ -670,15 +684,15 @@ void Edit3DView::createEdit3DActions()
particlemode = !particlemode;
m_particlesPlayAction->action()->setEnabled(particlemode);
m_particlesRestartAction->action()->setEnabled(particlemode);
- if (m_seeker)
- m_seeker->setEnabled(false);
+ if (m_seekerAction)
+ m_seekerAction->action()->setEnabled(false);
QmlDesignerPlugin::settings().insert("particleMode", particlemode);
resetPuppet();
};
SelectionContextOperation particlesPlayTrigger = [this](const SelectionContext &) {
- if (m_seeker)
- m_seeker->setEnabled(!m_particlesPlayAction->action()->isChecked());
+ if (m_seekerAction)
+ m_seekerAction->action()->setEnabled(!m_particlesPlayAction->action()->isChecked());
};
m_particleViewModeAction = new Edit3DAction(
@@ -786,6 +800,8 @@ void Edit3DView::createEdit3DActions()
this,
backgroundColorActionsTrigger);
+ m_seekerAction = createSeekerSliderAction();
+
m_leftActions << m_selectionModeAction;
m_leftActions << nullptr; // Null indicates separator
m_leftActions << nullptr; // Second null after separator indicates an exclusive group
@@ -810,6 +826,8 @@ void Edit3DView::createEdit3DActions()
m_rightActions << m_particlesPlayAction;
m_rightActions << m_particlesRestartAction;
m_rightActions << nullptr;
+ m_rightActions << m_seekerAction;
+ m_rightActions << nullptr;
m_rightActions << m_resetAction;
m_visibilityToggleActions << m_showGridAction;
diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dview.h b/src/plugins/qmldesigner/components/edit3d/edit3dview.h
index 94c0be3307..5d9d11953f 100644
--- a/src/plugins/qmldesigner/components/edit3d/edit3dview.h
+++ b/src/plugins/qmldesigner/components/edit3d/edit3dview.h
@@ -25,7 +25,6 @@ namespace QmlDesigner {
class Edit3DWidget;
class Edit3DAction;
class Edit3DCameraAction;
-class SeekerSlider;
class QMLDESIGNERCOMPONENTS_EXPORT Edit3DView : public AbstractView
{
@@ -58,7 +57,6 @@ public:
QVector<Edit3DAction *> visibilityToggleActions() const;
QVector<Edit3DAction *> backgroundColorActions() const;
Edit3DAction *edit3DAction(View3DActionType type) const;
- void setSeeker(SeekerSlider *slider);
void addQuick3DImport();
void startContextMenu(const QPoint &pos);
@@ -91,6 +89,7 @@ private:
Edit3DAction *createGridColorSelectionAction();
Edit3DAction *createResetColorAction(QAction *syncBackgroundColorAction);
Edit3DAction *createSyncBackgroundColorAction();
+ Edit3DAction *createSeekerSliderAction();
QPointer<Edit3DWidget> m_edit3DWidget;
QVector<Edit3DAction *> m_leftActions;
@@ -120,7 +119,7 @@ private:
Edit3DAction *m_particlesRestartAction = nullptr;
Edit3DAction *m_visibilityTogglesAction = nullptr;
Edit3DAction *m_backgrondColorMenuAction = nullptr;
- SeekerSlider *m_seeker = nullptr;
+ Edit3DAction *m_seekerAction = nullptr;
int particlemode;
ModelCache<QImage> m_canvasCache;
ModelNode m_droppedModelNode;
diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp b/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp
index 05b73278c7..eca8ab513f 100644
--- a/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp
+++ b/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp
@@ -83,11 +83,8 @@ Edit3DWidget::Edit3DWidget(Edit3DView *view)
fillLayout->setSpacing(0);
setLayout(fillLayout);
- SeekerSlider *seeker = new SeekerSlider(this);
- seeker->setEnabled(false);
-
// Initialize toolbar
- m_toolBox = new ToolBox(seeker, this);
+ m_toolBox = new ToolBox(this);
fillLayout->addWidget(m_toolBox.data());
// Iterate through view actions. A null action indicates a separator and a second null action
@@ -164,13 +161,6 @@ Edit3DWidget::Edit3DWidget(Edit3DView *view)
createContextMenu();
- view->setSeeker(seeker);
- seeker->setToolTip(QLatin1String("Seek particle system time when paused."));
-
- QObject::connect(seeker, &SeekerSlider::valueChanged, [view](int value) {
- view->emitView3DAction(View3DActionType::ParticlesSeek, value);
- });
-
// Onboarding label contains instructions for new users how to get 3D content into the project
m_onboardingLabel = new QLabel(this);
QString labelText =
diff --git a/src/plugins/qmldesigner/components/eventlist/eventlistpluginview.cpp b/src/plugins/qmldesigner/components/eventlist/eventlistpluginview.cpp
index 9124d65475..c4d19b7dab 100644
--- a/src/plugins/qmldesigner/components/eventlist/eventlistpluginview.cpp
+++ b/src/plugins/qmldesigner/components/eventlist/eventlistpluginview.cpp
@@ -51,7 +51,7 @@ void EventListPluginView::registerActions()
&SelectionContextFunctors::always,
&SelectionContextFunctors::always));
auto eventListAction = new EventListAction();
- connect(eventListAction->defaultAction(), &QAction::triggered, [this]() {
+ connect(eventListAction->action(), &QAction::triggered, [this]() {
if (!m_eventListDialog)
m_eventListDialog = new EventListDialog(Core::ICore::dialogParent());
@@ -62,7 +62,7 @@ void EventListPluginView::registerActions()
designerActionManager.addDesignerAction(eventListAction);
auto assignEventAction = new AssignEventEditorAction();
- connect(assignEventAction->defaultAction(), &QAction::triggered, [this]() {
+ connect(assignEventAction->action(), &QAction::triggered, [this]() {
if (!m_assigner)
m_assigner = new AssignEventDialog(Core::ICore::dialogParent());
if (!m_eventListDialog)
@@ -78,7 +78,7 @@ void EventListPluginView::registerActions()
auto *connectSignalAction = new ConnectSignalAction();
- connect(connectSignalAction->defaultAction(), &QAction::triggered, [this, connectSignalAction]() {
+ connect(connectSignalAction->action(), &QAction::triggered, [this, connectSignalAction]() {
if (!m_signalConnector)
m_signalConnector = new ConnectSignalDialog(Core::ICore::dialogParent());
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
index 1de9b308b0..171861536a 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
@@ -128,7 +128,7 @@ FormEditorWidget::FormEditorWidget(FormEditorView *view)
addAction(m_rootHeightAction.data());
upperActions.append(m_rootHeightAction.data());
- m_toolBox = new ToolBox(nullptr, this);
+ m_toolBox = new ToolBox(this);
fillLayout->addWidget(m_toolBox.data());
m_toolBox->setLeftSideActions(upperActions);
diff --git a/src/plugins/qmldesigner/components/formeditor/seekerslider.cpp b/src/plugins/qmldesigner/components/formeditor/seekerslider.cpp
index e9f8788a8d..25ad92e5b1 100644
--- a/src/plugins/qmldesigner/components/formeditor/seekerslider.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/seekerslider.cpp
@@ -67,4 +67,41 @@ void SeekerSlider::mouseReleaseEvent(QMouseEvent *event)
QSlider::mouseReleaseEvent(event);
}
+SeekerSliderAction::SeekerSliderAction(QObject *parent)
+ : QWidgetAction(parent)
+ , m_defaultSlider(new SeekerSlider())
+{
+ setDefaultWidget(m_defaultSlider);
+ QObject::connect(m_defaultSlider, &QSlider::valueChanged, this, &SeekerSliderAction::valueChanged);
+}
+
+SeekerSliderAction::~SeekerSliderAction()
+{
+ m_defaultSlider->deleteLater();
+}
+
+SeekerSlider *SeekerSliderAction::defaultSlider() const
+{
+ return m_defaultSlider;
+}
+
+int SeekerSliderAction::value()
+{
+ return m_defaultSlider->value();
+}
+
+QWidget *SeekerSliderAction::createWidget(QWidget *parent)
+{
+ SeekerSlider *slider = new SeekerSlider(parent);
+
+ QObject::connect(m_defaultSlider, &SeekerSlider::valueChanged, slider, &SeekerSlider::setValue);
+ QObject::connect(slider, &SeekerSlider::valueChanged, m_defaultSlider, &SeekerSlider::setValue);
+ QObject::connect(m_defaultSlider, &QSlider::rangeChanged, slider, &QSlider::setRange);
+
+ slider->setValue(m_defaultSlider->value());
+ slider->setMaxValue(m_defaultSlider->maxValue());
+
+ return slider;
+}
+
} // namespace QmlDesigner
diff --git a/src/plugins/qmldesigner/components/formeditor/seekerslider.h b/src/plugins/qmldesigner/components/formeditor/seekerslider.h
index 3f55ceeeae..37df62d830 100644
--- a/src/plugins/qmldesigner/components/formeditor/seekerslider.h
+++ b/src/plugins/qmldesigner/components/formeditor/seekerslider.h
@@ -3,6 +3,7 @@
#pragma once
#include <QSlider>
+#include <QWidgetAction>
namespace QmlDesigner {
class SeekerSlider : public QSlider
@@ -28,4 +29,27 @@ private:
bool m_moving = false;
};
+class SeekerSlider;
+class SeekerSliderAction : public QWidgetAction
+{
+ Q_OBJECT
+
+public:
+ explicit SeekerSliderAction(QObject *parent);
+ virtual ~SeekerSliderAction();
+
+ SeekerSlider *defaultSlider() const;
+ int value();
+
+signals:
+ void valueChanged(int);
+
+protected:
+ virtual QWidget *createWidget(QWidget *parent) override;
+
+private:
+ using QWidgetAction::setDefaultWidget;
+ SeekerSlider *m_defaultSlider = nullptr;
+};
+
} // namespace QmlDesigner
diff --git a/src/plugins/qmldesigner/components/formeditor/toolbox.cpp b/src/plugins/qmldesigner/components/formeditor/toolbox.cpp
index 4f905c91d9..da9f271562 100644
--- a/src/plugins/qmldesigner/components/formeditor/toolbox.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/toolbox.cpp
@@ -13,11 +13,10 @@
namespace QmlDesigner {
-ToolBox::ToolBox(SeekerSlider *seeker, QWidget *parentWidget)
- : Utils::StyledBar(parentWidget),
- m_leftToolBar(new QToolBar(QLatin1String("LeftSidebar"), this)),
- m_rightToolBar(new QToolBar(QLatin1String("RightSidebar"), this)),
- m_seeker(seeker)
+ToolBox::ToolBox(QWidget *parentWidget)
+ : Utils::StyledBar(parentWidget)
+ , m_leftToolBar(new QToolBar(QLatin1String("LeftSidebar"), this))
+ , m_rightToolBar(new QToolBar(QLatin1String("RightSidebar"), this))
{
setProperty("panelwidget", false);
m_leftToolBar->setFloatable(true);
@@ -30,7 +29,6 @@ ToolBox::ToolBox(SeekerSlider *seeker, QWidget *parentWidget)
setFixedHeight(Theme::toolbarSize());
- auto stretchToolbar = new QToolBar(this);
m_leftToolBar->setProperty("panelwidget", false);
m_leftToolBar->setProperty("panelwidget_singlerow", false);
@@ -39,17 +37,16 @@ ToolBox::ToolBox(SeekerSlider *seeker, QWidget *parentWidget)
m_rightToolBar->setProperty("panelwidget", false);
m_rightToolBar->setProperty("panelwidget_singlerow", false);
m_rightToolBar->setFixedHeight(Theme::toolbarSize());
+ m_rightToolBar->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed);
+ auto stretchToolbar = new QToolBar(this);
stretchToolbar->setProperty("panelwidget", false);
stretchToolbar->setProperty("panelwidget_singlerow", false);
-
stretchToolbar->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
m_rightToolBar->setOrientation(Qt::Horizontal);
horizontalLayout->addWidget(m_leftToolBar);
horizontalLayout->addWidget(stretchToolbar);
- if (m_seeker)
- horizontalLayout->addWidget(m_seeker);
horizontalLayout->addWidget(m_rightToolBar);
}
@@ -82,9 +79,4 @@ QList<QAction*> ToolBox::actions() const
return m_leftToolBar->actions() + m_rightToolBar->actions();
}
-SeekerSlider *ToolBox::seeker() const
-{
- return m_seeker;
-}
-
} // namespace QmlDesigner
diff --git a/src/plugins/qmldesigner/components/formeditor/toolbox.h b/src/plugins/qmldesigner/components/formeditor/toolbox.h
index ea30a5db08..430bcfa3ab 100644
--- a/src/plugins/qmldesigner/components/formeditor/toolbox.h
+++ b/src/plugins/qmldesigner/components/formeditor/toolbox.h
@@ -16,18 +16,16 @@ namespace QmlDesigner {
class ToolBox : public Utils::StyledBar
{
public:
- ToolBox(SeekerSlider *seeker, QWidget *parentWidget);
+ explicit ToolBox(QWidget *parentWidget);
void setLeftSideActions(const QList<QAction*> &actions);
void setRightSideActions(const QList<QAction*> &actions);
void addLeftSideAction(QAction *action);
void addRightSideAction(QAction *action);
QList<QAction*> actions() const;
- SeekerSlider *seeker() const;
private:
QToolBar *m_leftToolBar;
QToolBar *m_rightToolBar;
- SeekerSlider *m_seeker;
};
} // namespace QmlDesigner
diff --git a/src/plugins/qmldesigner/qmldesignerconstants.h b/src/plugins/qmldesigner/qmldesignerconstants.h
index 2158c8e32a..2d36b7ddd1 100644
--- a/src/plugins/qmldesigner/qmldesignerconstants.h
+++ b/src/plugins/qmldesigner/qmldesignerconstants.h
@@ -56,6 +56,7 @@ const char EDIT3D_EDIT_SHOW_PARTICLE_EMITTER[] = "QmlDesigner.Editor3D.TogglePar
const char EDIT3D_RESET_VIEW[] = "QmlDesigner.Editor3D.ResetView";
const char EDIT3D_PARTICLE_MODE[] = "QmlDesigner.Editor3D.ParticleViewModeToggle";
const char EDIT3D_PARTICLES_PLAY[] = "QmlDesigner.Editor3D.ParticlesPlay";
+const char EDIT3D_PARTICLES_SEEKER[] = "QmlDesigner.Editor3D.ParticlesSeeker";
const char EDIT3D_PARTICLES_RESTART[] = "QmlDesigner.Editor3D.ParticlesRestart";
const char EDIT3D_VISIBILITY_TOGGLES[] = "QmlDesigner.Editor3D.VisibilityToggles";
const char EDIT3D_BACKGROUND_COLOR_ACTIONS[] = "QmlDesigner.Editor3D.BackgroundColorActions";
diff --git a/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewactions.cpp b/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewactions.cpp
index b47101b0af..46ac09c02e 100644
--- a/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewactions.cpp
+++ b/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewactions.cpp
@@ -70,9 +70,9 @@ QmlPreviewAction::QmlPreviewAction() : ModelNodeAction(livePreviewId,
&SelectionContextFunctors::always)
{
if (!QmlPreviewWidgetPlugin::getPreviewPlugin())
- defaultAction()->setVisible(false);
+ action()->setVisible(false);
- defaultAction()->setCheckable(true);
+ action()->setCheckable(true);
}
void QmlPreviewAction::updateContext()
@@ -80,7 +80,7 @@ void QmlPreviewAction::updateContext()
if (selectionContext().view()->isAttached())
QmlPreviewWidgetPlugin::setQmlFile();
- defaultAction()->setSelectionContext(selectionContext());
+ pureAction()->setSelectionContext(selectionContext());
}
ActionInterface::Type QmlPreviewAction::type() const
diff --git a/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewplugin.cpp b/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewplugin.cpp
index 95a120e504..04322c522f 100644
--- a/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewplugin.cpp
+++ b/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewplugin.cpp
@@ -59,7 +59,7 @@ QmlPreviewWidgetPlugin::QmlPreviewWidgetPlugin()
auto separator = new SeparatorDesignerAction(ComponentCoreConstants::qmlPreviewCategory, 0);
designerActionManager.addDesignerAction(separator);
- m_previewToggleAction = previewAction->defaultAction();
+ m_previewToggleAction = previewAction->action();
if (s_previewPlugin) {
auto fpsAction = new FpsAction;