summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cpptoolsplugin.cpp
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2018-02-07 11:05:48 +0100
committerhjk <hjk@qt.io>2018-02-07 11:20:22 +0000
commit577bf7c08a83d0348325b5d431351f21eb2dfd40 (patch)
treef61a52a205808eaeba88e24978bb94d37e87fe90 /src/plugins/cpptools/cpptoolsplugin.cpp
parent5e55c1e947c316ffca5a59c59cdff49eebc8f9bc (diff)
downloadqt-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.cpp60
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()