From 5ea999402c1bade6a1959e661d5b2967db142dcb Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 23 Jan 2020 09:39:52 +0100 Subject: ModelEditor: Move closer to standard plugin setup The private structure was already there, just delay initialization and make the members direct. Change-Id: Ic0d71fe27f15a5c270544469d046b3298e6b2c65 Reviewed-by: Jochen Becher Reviewed-by: Christian Stenger --- src/plugins/modeleditor/modeleditor_plugin.cpp | 45 ++++++++++---------------- src/plugins/modeleditor/modeleditor_plugin.h | 8 ++--- src/plugins/modeleditor/modeleditorfactory.cpp | 5 ++- src/plugins/modeleditor/modeleditorfactory.h | 2 +- src/plugins/modeleditor/settingscontroller.cpp | 3 +- src/plugins/modeleditor/settingscontroller.h | 2 +- src/plugins/modeleditor/uicontroller.cpp | 5 ++- src/plugins/modeleditor/uicontroller.h | 2 +- 8 files changed, 27 insertions(+), 45 deletions(-) (limited to 'src/plugins/modeleditor') diff --git a/src/plugins/modeleditor/modeleditor_plugin.cpp b/src/plugins/modeleditor/modeleditor_plugin.cpp index de80992032..2b34be2b33 100644 --- a/src/plugins/modeleditor/modeleditor_plugin.cpp +++ b/src/plugins/modeleditor/modeleditor_plugin.cpp @@ -25,12 +25,13 @@ #include "modeleditor_plugin.h" +#include "jsextension.h" +#include "modeleditor_constants.h" #include "modeleditorfactory.h" +#include "modeleditor_global.h" #include "modelsmanager.h" #include "settingscontroller.h" -#include "modeleditor_constants.h" #include "uicontroller.h" -#include "jsextension.h" #include "qmt/infrastructure/uid.h" @@ -45,32 +46,24 @@ #include #include -#include -#include -#include #include #include -#include - -#include namespace ModelEditor { namespace Internal { ModelEditorPlugin *pluginInstance = nullptr; -class ModelEditorPlugin::ModelEditorPluginPrivate +class ModelEditorPluginPrivate final { public: - ModelsManager *modelsManager = nullptr; - UiController *uiController = nullptr; - ModelEditorFactory *modelFactory = nullptr; - SettingsController *settingsController = nullptr; + ModelsManager modelsManager; + UiController uiController; + ModelEditorFactory modelFactory{&uiController}; + SettingsController settingsController; }; ModelEditorPlugin::ModelEditorPlugin() - : ExtensionSystem::IPlugin(), - d(new ModelEditorPluginPrivate) { pluginInstance = this; qRegisterMetaType("QItemSelection"); @@ -86,18 +79,14 @@ bool ModelEditorPlugin::initialize(const QStringList &arguments, QString *errorS { Q_UNUSED(arguments) Q_UNUSED(errorString) - - d->modelsManager = new ModelsManager(this); - d->uiController = new UiController(this); - d->modelFactory = new ModelEditorFactory(d->uiController, this); - d->settingsController = new SettingsController(this); + d = new ModelEditorPluginPrivate; Core::JsExpander::registerGlobalObject("Modeling"); - connect(d->settingsController, &SettingsController::saveSettings, - d->uiController, &UiController::saveSettings); - connect(d->settingsController, &SettingsController::loadSettings, - d->uiController, &UiController::loadSettings); + connect(&d->settingsController, &SettingsController::saveSettings, + &d->uiController, &UiController::saveSettings); + connect(&d->settingsController, &SettingsController::loadSettings, + &d->uiController, &UiController::loadSettings); return true; } @@ -107,20 +96,20 @@ void ModelEditorPlugin::extensionsInitialized() // Retrieve objects from the plugin manager's object pool // In the extensionsInitialized method, a plugin can be sure that all // plugins that depend on it are completely initialized. - d->modelFactory->extensionsInitialized(); - d->settingsController->load(Core::ICore::settings()); + d->modelFactory.extensionsInitialized(); + d->settingsController.load(Core::ICore::settings()); } ExtensionSystem::IPlugin::ShutdownFlag ModelEditorPlugin::aboutToShutdown() { - d->settingsController->save(Core::ICore::settings()); + d->settingsController.save(Core::ICore::settings()); QApplication::clipboard()->clear(); return SynchronousShutdown; } ModelsManager *ModelEditorPlugin::modelsManager() { - return pluginInstance->d->modelsManager; + return &pluginInstance->d->modelsManager; } } // namespace Internal diff --git a/src/plugins/modeleditor/modeleditor_plugin.h b/src/plugins/modeleditor/modeleditor_plugin.h index 5ab927361d..838ee41ac2 100644 --- a/src/plugins/modeleditor/modeleditor_plugin.h +++ b/src/plugins/modeleditor/modeleditor_plugin.h @@ -25,8 +25,6 @@ #pragma once -#include "modeleditor_global.h" - #include namespace ModelEditor { @@ -34,12 +32,10 @@ namespace Internal { class ModelsManager; -class ModelEditorPlugin : - public ExtensionSystem::IPlugin +class ModelEditorPlugin : public ExtensionSystem::IPlugin { Q_OBJECT Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "ModelEditor.json") - class ModelEditorPluginPrivate; public: ModelEditorPlugin(); @@ -52,7 +48,7 @@ public: static ModelsManager *modelsManager(); private: - ModelEditorPluginPrivate *d; + class ModelEditorPluginPrivate *d = nullptr; }; } // namespace Internal diff --git a/src/plugins/modeleditor/modeleditorfactory.cpp b/src/plugins/modeleditor/modeleditorfactory.cpp index da20bd8679..355f4e2be1 100644 --- a/src/plugins/modeleditor/modeleditorfactory.cpp +++ b/src/plugins/modeleditor/modeleditorfactory.cpp @@ -41,9 +41,8 @@ public: ActionHandler *actionHandler = nullptr; }; -ModelEditorFactory::ModelEditorFactory(UiController *uiController, QObject *parent) - : Core::IEditorFactory(parent), - d(new ModelEditorFactoryPrivate()) +ModelEditorFactory::ModelEditorFactory(UiController *uiController) + : d(new ModelEditorFactoryPrivate()) { setId(Constants::MODEL_EDITOR_ID); setDisplayName(QCoreApplication::translate("OpenWith::Editors", Constants::MODEL_EDITOR_DISPLAY_NAME)); diff --git a/src/plugins/modeleditor/modeleditorfactory.h b/src/plugins/modeleditor/modeleditorfactory.h index ca06f7da40..a14479cc3f 100644 --- a/src/plugins/modeleditor/modeleditorfactory.h +++ b/src/plugins/modeleditor/modeleditorfactory.h @@ -40,7 +40,7 @@ class ModelEditorFactory : class ModelEditorFactoryPrivate; public: - explicit ModelEditorFactory(UiController *uiController, QObject *parent = nullptr); + explicit ModelEditorFactory(UiController *uiController); ~ModelEditorFactory(); Core::IEditor *createEditor() override; diff --git a/src/plugins/modeleditor/settingscontroller.cpp b/src/plugins/modeleditor/settingscontroller.cpp index 20e808ac59..666e40ea24 100644 --- a/src/plugins/modeleditor/settingscontroller.cpp +++ b/src/plugins/modeleditor/settingscontroller.cpp @@ -32,8 +32,7 @@ namespace ModelEditor { namespace Internal { -SettingsController::SettingsController(QObject *parent) - : QObject(parent) +SettingsController::SettingsController() { } diff --git a/src/plugins/modeleditor/settingscontroller.h b/src/plugins/modeleditor/settingscontroller.h index 90371b66a7..df7ee1c76b 100644 --- a/src/plugins/modeleditor/settingscontroller.h +++ b/src/plugins/modeleditor/settingscontroller.h @@ -40,7 +40,7 @@ class SettingsController : Q_OBJECT public: - explicit SettingsController(QObject *parent = nullptr); + SettingsController(); signals: void resetSettings(); diff --git a/src/plugins/modeleditor/uicontroller.cpp b/src/plugins/modeleditor/uicontroller.cpp index 706e208904..feb7cd5d44 100644 --- a/src/plugins/modeleditor/uicontroller.cpp +++ b/src/plugins/modeleditor/uicontroller.cpp @@ -39,9 +39,8 @@ public: QByteArray rightHorizSplitterState; }; -UiController::UiController(QObject *parent) - : QObject(parent), - d(new UiControllerPrivate) +UiController::UiController() + : d(new UiControllerPrivate) { } diff --git a/src/plugins/modeleditor/uicontroller.h b/src/plugins/modeleditor/uicontroller.h index 9dacf6d069..e8b29511d9 100644 --- a/src/plugins/modeleditor/uicontroller.h +++ b/src/plugins/modeleditor/uicontroller.h @@ -41,7 +41,7 @@ class UiController : class UiControllerPrivate; public: - explicit UiController(QObject *parent = nullptr); + UiController(); ~UiController(); signals: -- cgit v1.2.3