diff options
author | hjk <hjk@qt.io> | 2018-02-07 11:05:48 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2018-02-07 11:20:22 +0000 |
commit | 577bf7c08a83d0348325b5d431351f21eb2dfd40 (patch) | |
tree | f61a52a205808eaeba88e24978bb94d37e87fe90 /src/plugins/cpptools/cpptoolsplugin.cpp | |
parent | 5e55c1e947c316ffca5a59c59cdff49eebc8f9bc (diff) | |
download | qt-creator-577bf7c08a83d0348325b5d431351f21eb2dfd40.tar.gz |
CppToolsPlugin: Partially pimpl and remove use of global object pool
Change-Id: Iee09bf2fc7c945b8dcf950edfe94889d35c63735
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
Diffstat (limited to 'src/plugins/cpptools/cpptoolsplugin.cpp')
-rw-r--r-- | src/plugins/cpptools/cpptoolsplugin.cpp | 60 |
1 files changed, 38 insertions, 22 deletions
diff --git a/src/plugins/cpptools/cpptoolsplugin.cpp b/src/plugins/cpptools/cpptoolsplugin.cpp index c79881cc67..3cd62a7778 100644 --- a/src/plugins/cpptools/cpptoolsplugin.cpp +++ b/src/plugins/cpptools/cpptoolsplugin.cpp @@ -57,7 +57,6 @@ #include <utils/mimetypes/mimedatabase.h> #include <utils/qtcassert.h> -#include <QtPlugin> #include <QFileInfo> #include <QDir> #include <QDebug> @@ -72,12 +71,40 @@ namespace Internal { enum { debug = 0 }; -static CppToolsPlugin *m_instance = 0; +static CppToolsPlugin *m_instance = nullptr; static QHash<QString, QString> m_headerSourceMapping; +class CppToolsPluginPluginPrivate +{ +public: + CppToolsPluginPluginPrivate() + : m_codeModelSettings(new CppCodeModelSettings) + { + CppModelManager::createCppModelManager(m_instance, m_stringTable); + m_settings = new CppToolsSettings(m_instance); // force registration of cpp tools settings + m_codeModelSettings->fromSettings(ICore::settings()); + m_cppFileSettingsPage = new CppFileSettingsPage(m_instance->m_fileSettings); + m_cppCodeModelSettingsPage = new CppCodeModelSettingsPage(m_codeModelSettings); + m_cppCodeStyleSettingsPage = new CppCodeStyleSettingsPage; + } + + ~CppToolsPluginPluginPrivate() + { + delete m_cppFileSettingsPage; + delete m_cppCodeModelSettingsPage; + delete m_cppCodeStyleSettingsPage; + } + + QSharedPointer<CppCodeModelSettings> m_codeModelSettings; + CppToolsSettings *m_settings = nullptr; + StringTable m_stringTable; + CppFileSettingsPage *m_cppFileSettingsPage = nullptr; + CppCodeModelSettingsPage *m_cppCodeModelSettingsPage = nullptr; + CppCodeStyleSettingsPage *m_cppCodeStyleSettingsPage = nullptr; +}; + CppToolsPlugin::CppToolsPlugin() : m_fileSettings(new CppFileSettings) - , m_codeModelSettings(new CppCodeModelSettings) { m_instance = this; auto bridgeImplementation = std::unique_ptr<CppToolsBridgeQtCreatorImplementation>(new CppToolsBridgeQtCreatorImplementation); @@ -86,7 +113,9 @@ CppToolsPlugin::CppToolsPlugin() CppToolsPlugin::~CppToolsPlugin() { - m_instance = 0; + delete d; + d = nullptr; + m_instance = nullptr; } CppToolsPlugin *CppToolsPlugin::instance() @@ -134,18 +163,10 @@ bool CppToolsPlugin::initialize(const QStringList &arguments, QString *error) Q_UNUSED(arguments) Q_UNUSED(error) - CppModelManager::createCppModelManager(this, m_stringTable); - - m_settings = new CppToolsSettings(this); // force registration of cpp tools settings - - m_codeModelSettings->fromSettings(ICore::settings()); + d = new CppToolsPluginPluginPrivate; JsExpander::registerQObjectForJs(QLatin1String("Cpp"), new CppToolsJsExtension); - addAutoReleasedObject(new CppFileSettingsPage(m_fileSettings)); - addAutoReleasedObject(new CppCodeModelSettingsPage(m_codeModelSettings)); - addAutoReleasedObject(new CppCodeStyleSettingsPage); - // Menus ActionContainer *mtools = ActionManager::actionContainer(Core::Constants::M_TOOLS); ActionContainer *mcpptools = ActionManager::createMenu(CppTools::Constants::M_TOOLS_CPP); @@ -188,24 +209,19 @@ void CppToolsPlugin::extensionsInitialized() { // The Cpp editor plugin, which is loaded later on, registers the Cpp mime types, // so, apply settings here - m_fileSettings->fromSettings(ICore::settings()); - if (!m_fileSettings->applySuffixesToMimeDB()) + m_instance->m_fileSettings->fromSettings(ICore::settings()); + if (!m_instance->m_fileSettings->applySuffixesToMimeDB()) qWarning("Unable to apply cpp suffixes to mime database (cpp mime types not found).\n"); } -ExtensionSystem::IPlugin::ShutdownFlag CppToolsPlugin::aboutToShutdown() -{ - return SynchronousShutdown; -} - QSharedPointer<CppCodeModelSettings> CppToolsPlugin::codeModelSettings() const { - return m_codeModelSettings; + return d->m_codeModelSettings; } StringTable &CppToolsPlugin::stringTable() { - return instance()->m_stringTable; + return m_instance->d->m_stringTable; } void CppToolsPlugin::switchHeaderSource() |