Qnx: Pimpl and remove unneeded use of global object pool

Change-Id: I0029b151e34e2e7498afd8e410dfc617282bed49
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2018-02-02 18:37:00 +01:00
parent 91c19c2734
commit aee0f8efcd
4 changed files with 43 additions and 44 deletions

View File

@@ -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(),

View File

@@ -38,8 +38,10 @@ class QnxConfigurationManager: public QObject
{
Q_OBJECT
public:
static QnxConfigurationManager *instance();
QnxConfigurationManager();
~QnxConfigurationManager();
static QnxConfigurationManager *instance();
QList<QnxConfiguration*> 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<QnxConfiguration*> m_configurations;
Utils::PersistentSettingsWriter *m_writer;
void restoreConfigurations();
friend class QnxPlugin;
};
}

View File

@@ -49,7 +49,6 @@
#include <projectexplorer/kitinformation.h>
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/taskhub.h>
#include <projectexplorer/kitmanager.h>
#include <projectexplorer/environmentaspect.h>
#include <projectexplorer/buildconfiguration.h>
@@ -60,25 +59,42 @@
#include <qtsupport/qtkitinformation.h>
#include <QAction>
#include <QtPlugin>
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<QnxQmlProfilerSupport>
(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);
}

View File

@@ -27,10 +27,6 @@
#include <extensionsystem/iplugin.h>
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