diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp index f0a979bb53a3f142c1b38344887a8ceecd84e499..6c276216c253c5b96f0e88abc33b6c3c8619738d 100644 --- a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp +++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp @@ -48,26 +48,9 @@ static inline bool contains(const QmlItemNode &node, const QPointF &position) return node.isValid() && node.instanceSceneTransform().mapRect(node.instanceBoundingRect()).contains(position); } -namespace Internal { - - -} //Internal - -DesignerActionManager *DesignerActionManager::m_instance = 0; - -void DesignerActionManager::addDesignerAction(AbstractDesignerAction *newAction) -{ - instance()->addDesignerActionInternal(newAction); -} - -QList<AbstractDesignerAction* > DesignerActionManager::designerActions() -{ - return instance()->factoriesInternal(); -} - AbstractView *DesignerActionManager::view() { - return instance()->m_view; + return m_designerActionManagerView; } class VisiblityModelNodeAction : public ModelNodeAction @@ -437,23 +420,13 @@ void DesignerActionManager::createDefaultDesignerActions() (goIntoComponentDisplayName, rootCategory, priorityGoIntoComponent, &goIntoComponent, &selectionIsComponent)); } -DesignerActionManager *DesignerActionManager::instance() -{ - if (!m_instance) { - m_instance = new DesignerActionManager; - createDefaultDesignerActions(); - } - - return m_instance; -} - -void DesignerActionManager::addDesignerActionInternal(AbstractDesignerAction *newAction) +void DesignerActionManager::addDesignerAction(AbstractDesignerAction *newAction) { m_designerActions.append(QSharedPointer<AbstractDesignerAction>(newAction)); - m_view->setDesignerActionList(designerActions()); + m_designerActionManagerView->setDesignerActionList(designerActions()); } -QList<AbstractDesignerAction* > DesignerActionManager::factoriesInternal() const +QList<AbstractDesignerAction* > DesignerActionManager::designerActions() const { QList<AbstractDesignerAction* > list; foreach (const QSharedPointer<AbstractDesignerAction> &pointer, m_designerActions) { @@ -463,14 +436,13 @@ QList<AbstractDesignerAction* > DesignerActionManager::factoriesInternal() const return list; } -DesignerActionManager::DesignerActionManager() - : m_view(new DesignerActionManagerView) +DesignerActionManager::DesignerActionManager(DesignerActionManagerView *designerActionManagerView) + : m_designerActionManagerView(designerActionManagerView) { } DesignerActionManager::~DesignerActionManager() { - delete m_view; } } //QmlDesigner diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.h b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.h index 7f3f34b1214a74b584edbe8f3360755f09781f76..8266cd778a824aa37cd15ad7d0738f4f90621c63 100644 --- a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.h +++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.h @@ -40,23 +40,18 @@ class DesignerActionManagerView; class QMLDESIGNERCORE_EXPORT DesignerActionManager { public: - static void addDesignerAction(AbstractDesignerAction *newAction); - static QList<AbstractDesignerAction* > designerActions(); + DesignerActionManager(DesignerActionManagerView *designerActionManagerView); + ~DesignerActionManager(); - static void createDefaultDesignerActions(); - static AbstractView *view(); + void addDesignerAction(AbstractDesignerAction *newAction); + QList<AbstractDesignerAction* > designerActions() const; -protected: - static DesignerActionManager *instance(); - void addDesignerActionInternal(AbstractDesignerAction *newAction); - QList<AbstractDesignerAction* > factoriesInternal() const; - DesignerActionManager(); - ~DesignerActionManager(); + void createDefaultDesignerActions(); + AbstractView *view(); private: - static DesignerActionManager *m_instance; QList<QSharedPointer<AbstractDesignerAction> > m_designerActions; - DesignerActionManagerView *m_view; + DesignerActionManagerView *m_designerActionManagerView; }; } //QmlDesigner diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.cpp b/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.cpp index 518b9e040942e45145a3b4cb025d2f031a0efd5a..87cd3969d406dca733f3210c9824d78eb9fe6558 100644 --- a/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.cpp +++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.cpp @@ -36,9 +36,12 @@ namespace QmlDesigner { DesignerActionManagerView::DesignerActionManagerView() : AbstractView(0), + m_designerActionManager(this), m_isInRewriterTransaction(false), m_setupContextDirty(false) -{} +{ + m_designerActionManager.createDefaultDesignerActions(); +} void DesignerActionManagerView::modelAttached(Model *model) { @@ -167,6 +170,16 @@ void DesignerActionManagerView::signalHandlerPropertiesChanged(const QVector<Sig setupContext(); } +DesignerActionManager &DesignerActionManagerView::designerActionManager() +{ + return m_designerActionManager; +} + +const DesignerActionManager &DesignerActionManagerView::designerActionManager() const +{ + return m_designerActionManager; +} + void DesignerActionManagerView::setupContext() { if (m_isInRewriterTransaction) { diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.h b/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.h index 83572006971eee287dee8df5beac1d50bf1d0560..dee7021b3cf86cf9db33b951f9e0dd9a14748c1d 100644 --- a/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.h +++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.h @@ -32,6 +32,8 @@ #include <abstractview.h> +#include "designeractionmanager.h" + namespace QmlDesigner { class AbstractDesignerAction; @@ -79,10 +81,14 @@ public: void setDesignerActionList(const QList<AbstractDesignerAction* > &designerActionList); void signalHandlerPropertiesChanged(const QVector<SignalHandlerProperty> &/*propertyList*/, PropertyChangeFlags /*propertyChange*/); + DesignerActionManager &designerActionManager(); + const DesignerActionManager &designerActionManager() const; + protected: void setupContext(); private: + DesignerActionManager m_designerActionManager; QList<AbstractDesignerAction* > m_designerActionList; bool m_isInRewriterTransaction; bool m_setupContextDirty; diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu.cpp index 51b80734b1bd72cb13bfe4d80e83055139c200f8..6a8a717ac4a816bab66446d90db3206ceaa59558 100644 --- a/src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu.cpp +++ b/src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu.cpp @@ -30,6 +30,7 @@ #include "modelnodecontextmenu.h" #include "modelnodecontextmenu_helper.h" #include "designeractionmanager.h" +#include <qmldesignerplugin.h> #include <modelnode.h> @@ -98,7 +99,7 @@ void ModelNodeContextMenu::execute(const QPoint &position, bool selectionMenuBoo QSet<AbstractDesignerAction* > factories = - QSet<AbstractDesignerAction* >::fromList(DesignerActionManager::designerActions()); + QSet<AbstractDesignerAction* >::fromList(QmlDesignerPlugin::instance()->designerActionManager().designerActions()); populateMenu(factories, QString(""), mainMenu, m_selectionContext); diff --git a/src/plugins/qmldesigner/designercore/include/viewmanager.h b/src/plugins/qmldesigner/designercore/include/viewmanager.h index 6cb1a12a9c95cc3ec5bcbd762a5b28014ee6ca1f..fb2e7b71c0da21f164da186daf99655726a32d99 100644 --- a/src/plugins/qmldesigner/designercore/include/viewmanager.h +++ b/src/plugins/qmldesigner/designercore/include/viewmanager.h @@ -42,6 +42,7 @@ #include <componentview.h> #include <debugview.h> #include <importmanagerview.h> +#include <designeractionmanagerview.h> #include <QWidgetAction> namespace QmlDesigner { @@ -89,6 +90,9 @@ public: QWidgetAction *componentViewAction(); + DesignerActionManager &designerActionManager(); + const DesignerActionManager &designerActionManager() const; + private: // functions Q_DISABLE_COPY(ViewManager) @@ -115,6 +119,7 @@ private: // variables PropertyEditorView m_propertyEditorView; StatesEditorView m_statesEditorView; NodeInstanceView m_nodeInstanceView; + DesignerActionManagerView m_designerActionManagerView; QList<QWeakPointer<AbstractView> > m_additionalViews; }; diff --git a/src/plugins/qmldesigner/designercore/model/viewmanager.cpp b/src/plugins/qmldesigner/designercore/model/viewmanager.cpp index 079f0d5ba37302171b52926d2ef96bfc2c29af96..6ed7323f2c133abac78c89cf1407a8e333275d09 100644 --- a/src/plugins/qmldesigner/designercore/model/viewmanager.cpp +++ b/src/plugins/qmldesigner/designercore/model/viewmanager.cpp @@ -1,7 +1,6 @@ #include "viewmanager.h" #include "componentaction.h" -#include "designeractionmanager.h" #include "designmodewidget.h" #include "crumblebar.h" @@ -98,7 +97,7 @@ void ViewManager::detachViewsExceptRewriterAndComponetView() { switchStateEditorViewToBaseState(); detachAdditionalViews(); - currentModel()->detachView(DesignerActionManager::view()); + currentModel()->detachView(&m_designerActionManagerView); currentModel()->detachView(&m_formEditorView); currentModel()->detachView(&m_navigatorView); currentModel()->detachView(&m_itemLibraryView); @@ -152,7 +151,7 @@ void ViewManager::attachViewsExceptRewriterAndComponetView() attachItemLibraryView(); currentModel()->attachView(&m_statesEditorView); currentModel()->attachView(&m_propertyEditorView); - currentModel()->attachView(DesignerActionManager::view()); + currentModel()->attachView(&m_designerActionManagerView); attachAdditionalViews(); switchStateEditorViewToSavedState(); } @@ -236,6 +235,16 @@ QWidgetAction *ViewManager::componentViewAction() return m_componentView.action(); } +DesignerActionManager &ViewManager::designerActionManager() +{ + return m_designerActionManagerView.designerActionManager(); +} + +const DesignerActionManager &ViewManager::designerActionManager() const +{ + return m_designerActionManagerView.designerActionManager(); +} + Model *ViewManager::currentModel() const { return currentDesignDocument()->currentModel(); diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp index feaffda6590f407e393a3b793c4656ddf13f194d..d9e93b302934848beff8e33962817e588ba15bbe 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.cpp +++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp @@ -419,6 +419,16 @@ const ViewManager &QmlDesignerPlugin::viewManager() const return m_viewManager; } +DesignerActionManager &QmlDesignerPlugin::designerActionManager() +{ + return m_viewManager.designerActionManager(); +} + +const DesignerActionManager &QmlDesignerPlugin::designerActionManager() const +{ + return m_viewManager.designerActionManager(); +} + void QmlDesignerPlugin::switchTextDesign() { if (Core::ModeManager::currentMode()->id() == Core::Constants::MODE_EDIT) { diff --git a/src/plugins/qmldesigner/qmldesignerplugin.h b/src/plugins/qmldesigner/qmldesignerplugin.h index 9ed708e55dc0bb51997288beb1a1495cc19e324d..36a72d971d827db6df1743177fa2544692f94d26 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.h +++ b/src/plugins/qmldesigner/qmldesignerplugin.h @@ -39,6 +39,7 @@ #include "documentmanager.h" #include "viewmanager.h" #include "shortcutmanager.h" +#include <designeractionmanager.h> #include <QStringList> @@ -82,6 +83,9 @@ public: ViewManager &viewManager(); const ViewManager &viewManager() const; + DesignerActionManager &designerActionManager(); + const DesignerActionManager &designerActionManager() const; + DesignerSettings settings(); void setSettings(const DesignerSettings &s);