From aee0f8efcd31414fe2fdd31e14105f71944d8c1b Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 2 Feb 2018 18:37:00 +0100 Subject: [PATCH] Qnx: Pimpl and remove unneeded use of global object pool Change-Id: I0029b151e34e2e7498afd8e410dfc617282bed49 Reviewed-by: Christian Stenger --- src/plugins/qnx/qnxconfigurationmanager.cpp | 5 +- src/plugins/qnx/qnxconfigurationmanager.h | 8 ++- src/plugins/qnx/qnxplugin.cpp | 59 ++++++++++++--------- src/plugins/qnx/qnxplugin.h | 15 ++---- 4 files changed, 43 insertions(+), 44 deletions(-) diff --git a/src/plugins/qnx/qnxconfigurationmanager.cpp b/src/plugins/qnx/qnxconfigurationmanager.cpp index 207aab9ee96..34feb4bb930 100644 --- a/src/plugins/qnx/qnxconfigurationmanager.cpp +++ b/src/plugins/qnx/qnxconfigurationmanager.cpp @@ -42,10 +42,9 @@ static Utils::FileName qnxConfigSettingsFileName() + QLatin1String(Constants::QNX_CONFIGS_FILENAME)); } -QnxConfigurationManager *QnxConfigurationManager::m_instance = 0; +static QnxConfigurationManager *m_instance = nullptr; -QnxConfigurationManager::QnxConfigurationManager(QObject *parent) - : QObject(parent) +QnxConfigurationManager::QnxConfigurationManager() { m_instance = this; m_writer = new Utils::PersistentSettingsWriter(qnxConfigSettingsFileName(), diff --git a/src/plugins/qnx/qnxconfigurationmanager.h b/src/plugins/qnx/qnxconfigurationmanager.h index ee8d91624a7..3fb0238f3cf 100644 --- a/src/plugins/qnx/qnxconfigurationmanager.h +++ b/src/plugins/qnx/qnxconfigurationmanager.h @@ -38,8 +38,10 @@ class QnxConfigurationManager: public QObject { Q_OBJECT public: - static QnxConfigurationManager *instance(); + QnxConfigurationManager(); ~QnxConfigurationManager(); + + static QnxConfigurationManager *instance(); QList configurations() const; void removeConfiguration(QnxConfiguration *config); bool addConfiguration(QnxConfiguration *config); @@ -52,13 +54,9 @@ signals: void configurationsListUpdated(); private: - QnxConfigurationManager(QObject *parent = 0); - static QnxConfigurationManager *m_instance; QList m_configurations; Utils::PersistentSettingsWriter *m_writer; void restoreConfigurations(); - - friend class QnxPlugin; }; } diff --git a/src/plugins/qnx/qnxplugin.cpp b/src/plugins/qnx/qnxplugin.cpp index c5fb91e2bdf..7ab7b840203 100644 --- a/src/plugins/qnx/qnxplugin.cpp +++ b/src/plugins/qnx/qnxplugin.cpp @@ -49,7 +49,6 @@ #include #include #include -#include #include #include #include @@ -60,25 +59,42 @@ #include #include -#include using namespace ProjectExplorer; namespace Qnx { namespace Internal { +class QnxPluginPrivate +{ +public: + void updateDebuggerActions(); + + QAction *m_debugSeparator = nullptr; + QAction m_attachToQnxApplication{QnxPlugin::tr("Attach to remote QNX application..."), nullptr}; + + QnxConfigurationManager configurationFactory; + QnxQtVersionFactory qtVersionFactory; + QnxDeviceFactory deviceFactory; + QnxDeployConfigurationFactory deployConfigFactory; + QnxRunConfigurationFactory runConfigFactory; + QnxSettingsPage settingsPage; + QnxToolChainFactory toolChainFactory; +}; + +static QnxPluginPrivate *dd = nullptr; + +QnxPlugin::~QnxPlugin() +{ + delete dd; +} + bool QnxPlugin::initialize(const QStringList &arguments, QString *errorString) { Q_UNUSED(arguments) Q_UNUSED(errorString) - // Handles QNX - addAutoReleasedObject(new QnxConfigurationManager); - addAutoReleasedObject(new QnxQtVersionFactory); - addAutoReleasedObject(new QnxDeviceFactory); - addAutoReleasedObject(new QnxDeployConfigurationFactory); - addAutoReleasedObject(new QnxRunConfigurationFactory); - addAutoReleasedObject(new QnxSettingsPage); + dd = new QnxPluginPrivate; auto constraint = [](RunConfiguration *runConfig) { if (!runConfig->isEnabled() @@ -98,34 +114,29 @@ bool QnxPlugin::initialize(const QStringList &arguments, QString *errorString) RunControl::registerWorker (ProjectExplorer::Constants::QML_PROFILER_RUN_MODE, constraint); - addAutoReleasedObject(new QnxToolChainFactory); - return true; } void QnxPlugin::extensionsInitialized() { // Attach support - m_attachToQnxApplication = new QAction(this); - m_attachToQnxApplication->setText(tr("Attach to remote QNX application...")); - connect(m_attachToQnxApplication, &QAction::triggered, this, [] { QnxAttachDebugSupport::showProcessesDialog(); }); + connect(&dd->m_attachToQnxApplication, &QAction::triggered, + this, [] { QnxAttachDebugSupport::showProcessesDialog(); }); Core::ActionContainer *mstart = Core::ActionManager::actionContainer(ProjectExplorer::Constants::M_DEBUG_STARTDEBUGGING); mstart->appendGroup(Constants::QNX_DEBUGGING_GROUP); - mstart->addSeparator(Core::Context(Core::Constants::C_GLOBAL), Constants::QNX_DEBUGGING_GROUP, &m_debugSeparator); + mstart->addSeparator(Core::Context(Core::Constants::C_GLOBAL), Constants::QNX_DEBUGGING_GROUP, + &dd->m_debugSeparator); - Core::Command *cmd = Core::ActionManager::registerAction(m_attachToQnxApplication, "Debugger.AttachToQnxApplication"); + Core::Command *cmd = Core::ActionManager::registerAction + (&dd->m_attachToQnxApplication, "Debugger.AttachToQnxApplication"); mstart->addAction(cmd, Constants::QNX_DEBUGGING_GROUP); - connect(KitManager::instance(), &KitManager::kitsChanged, this, &QnxPlugin::updateDebuggerActions); + connect(KitManager::instance(), &KitManager::kitsChanged, + this, [this] { dd->updateDebuggerActions(); }); } -ExtensionSystem::IPlugin::ShutdownFlag QnxPlugin::aboutToShutdown() -{ - return SynchronousShutdown; -} - -void QnxPlugin::updateDebuggerActions() +void QnxPluginPrivate::updateDebuggerActions() { bool hasValidQnxKit = false; @@ -137,7 +148,7 @@ void QnxPlugin::updateDebuggerActions() } } - m_attachToQnxApplication->setVisible(hasValidQnxKit); + m_attachToQnxApplication.setVisible(hasValidQnxKit); m_debugSeparator->setVisible(hasValidQnxKit); } diff --git a/src/plugins/qnx/qnxplugin.h b/src/plugins/qnx/qnxplugin.h index 798251810c0..5664af531f6 100644 --- a/src/plugins/qnx/qnxplugin.h +++ b/src/plugins/qnx/qnxplugin.h @@ -27,10 +27,6 @@ #include -QT_BEGIN_NAMESPACE -class QAction; -QT_END_NAMESPACE - namespace Qnx { namespace Internal { @@ -41,16 +37,11 @@ class QnxPlugin : public ExtensionSystem::IPlugin public: QnxPlugin() {} - - bool initialize(const QStringList &arguments, QString *errorString); - void extensionsInitialized(); - ShutdownFlag aboutToShutdown(); + ~QnxPlugin() final; private: - void updateDebuggerActions(); - - QAction *m_debugSeparator = nullptr; - QAction *m_attachToQnxApplication = nullptr; + bool initialize(const QStringList &arguments, QString *errorString) final; + void extensionsInitialized() final; }; } // namespace Internal