aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2018-02-09 15:55:14 +0100
committerhjk <hjk@qt.io>2018-02-19 08:34:05 +0000
commit8e83f6f0e7850ba5d03100d2e7c57741becb2d63 (patch)
treea014757064f81c2b96a8246322fafd959c2a4aeb
parent42d2c15239d6068b17113d98b2e103eb34bd1558 (diff)
Designer: Partially pimpl and remove used of global object pool
Change-Id: I88f43678fb07d00501e7b5c04e992acee292d7fe Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r--src/plugins/designer/formeditorplugin.cpp35
-rw-r--r--src/plugins/designer/formeditorplugin.h15
-rw-r--r--src/plugins/designer/qtdesignerformclasscodegenerator.cpp10
-rw-r--r--src/plugins/designer/qtdesignerformclasscodegenerator.h7
4 files changed, 35 insertions, 32 deletions
diff --git a/src/plugins/designer/formeditorplugin.cpp b/src/plugins/designer/formeditorplugin.cpp
index 2b9843d64b..6e343569ec 100644
--- a/src/plugins/designer/formeditorplugin.cpp
+++ b/src/plugins/designer/formeditorplugin.cpp
@@ -56,31 +56,35 @@
#include <QLibraryInfo>
#include <QMenu>
#include <QTranslator>
-#include <QtPlugin>
using namespace Core;
-using namespace Designer::Internal;
using namespace Designer::Constants;
-FormEditorPlugin::FormEditorPlugin()
- : m_actionSwitchSource(new QAction(tr("Switch Source/Form"), this))
+namespace Designer {
+namespace Internal {
+
+class FormEditorPluginPrivate
{
-}
+public:
+ QAction actionSwitchSource{FormEditorPlugin::tr("Switch Source/Form"), nullptr};
+
+ FormEditorFactory formEditorFactory;
+ SettingsPageProvider settingsPageProvider;
+ QtDesignerFormClassCodeGenerator formClassCodeGenerator;
+};
FormEditorPlugin::~FormEditorPlugin()
{
FormEditorW::deleteInstance();
+ delete d;
}
-////////////////////////////////////////////////////
-//
-// INHERITED FROM ExtensionSystem::Plugin
-//
-////////////////////////////////////////////////////
bool FormEditorPlugin::initialize(const QStringList &arguments, QString *error)
{
Q_UNUSED(arguments)
+ d = new FormEditorPluginPrivate;
+
#ifdef CPP_ENABLED
IWizardFactory::registerFactoryCreator(
[]() -> QList<IWizardFactory *> {
@@ -98,9 +102,7 @@ bool FormEditorPlugin::initialize(const QStringList &arguments, QString *error)
#endif
ProjectExplorer::JsonWizardFactory::registerPageFactory(new Internal::FormPageFactory);
- addAutoReleasedObject(new FormEditorFactory);
- addAutoReleasedObject(new SettingsPageProvider);
- addAutoReleasedObject(new QtDesignerFormClassCodeGenerator);
+
// Ensure that loading designer translations is done before FormEditorW is instantiated
const QString locale = ICore::userInterfaceLanguage();
if (!locale.isEmpty()) {
@@ -125,9 +127,9 @@ void FormEditorPlugin::extensionsInitialized()
mformtools->menu()->setTitle(tr("For&m Editor"));
mtools->addMenu(mformtools);
- connect(m_actionSwitchSource, &QAction::triggered, this, &FormEditorPlugin::switchSourceForm);
+ connect(&d->actionSwitchSource, &QAction::triggered, this, &FormEditorPlugin::switchSourceForm);
Context context(C_FORMEDITOR, Core::Constants::C_EDITORMANAGER);
- Command *cmd = ActionManager::registerAction(m_actionSwitchSource,
+ Command *cmd = ActionManager::registerAction(&d->actionSwitchSource,
"FormEditor.FormSwitchSource", context);
cmd->setDefaultKeySequence(tr("Shift+F4"));
mformtools->addAction(cmd, Core::Constants::G_DEFAULT_THREE);
@@ -189,3 +191,6 @@ void FormEditorPlugin::switchSourceForm()
if (!fileToOpen.isEmpty())
EditorManager::openEditor(fileToOpen);
}
+
+} // Internal
+} // Designer
diff --git a/src/plugins/designer/formeditorplugin.h b/src/plugins/designer/formeditorplugin.h
index ba6702b4a0..f08aee602a 100644
--- a/src/plugins/designer/formeditorplugin.h
+++ b/src/plugins/designer/formeditorplugin.h
@@ -27,10 +27,6 @@
#include <extensionsystem/iplugin.h>
-QT_BEGIN_NAMESPACE
-class QAction;
-QT_END_NAMESPACE
-
namespace Designer {
namespace Internal {
@@ -40,13 +36,9 @@ class FormEditorPlugin : public ExtensionSystem::IPlugin
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "Designer.json")
public:
- FormEditorPlugin();
+ FormEditorPlugin() = default;
~FormEditorPlugin() override;
- //Plugin
- bool initialize(const QStringList &arguments, QString *errorMessage = nullptr) override;
- void extensionsInitialized() override;
-
#ifdef WITH_TESTS
private slots:
void test_gotoslot();
@@ -54,10 +46,13 @@ private slots:
#endif
private:
+ bool initialize(const QStringList &arguments, QString *errorMessage = nullptr) override;
+ void extensionsInitialized() override;
+
void switchSourceForm();
void initializeTemplates();
- QAction *m_actionSwitchSource = nullptr;
+ class FormEditorPluginPrivate *d = nullptr;
};
} // namespace Internal
diff --git a/src/plugins/designer/qtdesignerformclasscodegenerator.cpp b/src/plugins/designer/qtdesignerformclasscodegenerator.cpp
index 0769e55237..5e5865e489 100644
--- a/src/plugins/designer/qtdesignerformclasscodegenerator.cpp
+++ b/src/plugins/designer/qtdesignerformclasscodegenerator.cpp
@@ -32,6 +32,7 @@
#include <cpptools/abstracteditorsupport.h>
#include <qtsupport/codegenerator.h>
#include <qtsupport/codegensettings.h>
+#include <extensionsystem/pluginmanager.h>
#include <QTextStream>
#include <QSettings>
@@ -208,9 +209,14 @@ bool QtDesignerFormClassCodeGenerator::generateCpp(const FormClassWizardParamete
return true;
}
-QtDesignerFormClassCodeGenerator::QtDesignerFormClassCodeGenerator(QObject *parent) :
- QObject(parent)
+QtDesignerFormClassCodeGenerator::QtDesignerFormClassCodeGenerator()
{
+ ExtensionSystem::PluginManager::addObject(this);
+}
+
+QtDesignerFormClassCodeGenerator::~QtDesignerFormClassCodeGenerator()
+{
+ ExtensionSystem::PluginManager::removeObject(this);
}
QVariant QtDesignerFormClassCodeGenerator::generateFormClassCode(const FormClassWizardParameters &parameters)
diff --git a/src/plugins/designer/qtdesignerformclasscodegenerator.h b/src/plugins/designer/qtdesignerformclasscodegenerator.h
index 1bf0621273..f48bdf700f 100644
--- a/src/plugins/designer/qtdesignerformclasscodegenerator.h
+++ b/src/plugins/designer/qtdesignerformclasscodegenerator.h
@@ -29,10 +29,6 @@
#include <QVariant>
#include <QObject>
-QT_BEGIN_NAMESPACE
-class QSettings;
-QT_END_NAMESPACE
-
namespace Designer {
class FormClassWizardParameters;
@@ -42,7 +38,8 @@ class QtDesignerFormClassCodeGenerator : public QObject
{
Q_OBJECT
public:
- explicit QtDesignerFormClassCodeGenerator(QObject *parent = nullptr);
+ QtDesignerFormClassCodeGenerator();
+ ~QtDesignerFormClassCodeGenerator();
static bool generateCpp(const FormClassWizardParameters &parameters,
QString *header, QString *source, int indentation = 4);