diff options
author | hjk <[email protected]> | 2018-02-08 10:40:29 +0100 |
---|---|---|
committer | hjk <[email protected]> | 2018-02-08 10:37:12 +0000 |
commit | 4248c53c79835addc57df8805bb80eb8492ebe8e (patch) | |
tree | fc6bbbc4806a664460b4a3a349f18792cfaa79d5 /src/plugins/qmljstools/qmljstoolsplugin.cpp | |
parent | 5efd576020a5407cd09a86112e5655e621e9d53f (diff) |
QmlJSPlugin: reorganize setup
Pimpl, remove use of global object pool, cosmetics, ...
Change-Id: I9e1415b07d7ff8e95db0998c87ce7d75ca638a8e
Reviewed-by: Marco Benelli <[email protected]>
Diffstat (limited to 'src/plugins/qmljstools/qmljstoolsplugin.cpp')
-rw-r--r-- | src/plugins/qmljstools/qmljstoolsplugin.cpp | 93 |
1 files changed, 43 insertions, 50 deletions
diff --git a/src/plugins/qmljstools/qmljstoolsplugin.cpp b/src/plugins/qmljstools/qmljstoolsplugin.cpp index 66d805dcd5d..b66e98500dd 100644 --- a/src/plugins/qmljstools/qmljstoolsplugin.cpp +++ b/src/plugins/qmljstools/qmljstoolsplugin.cpp @@ -39,27 +39,34 @@ #include <coreplugin/actionmanager/actioncontainer.h> #include <coreplugin/progressmanager/progressmanager.h> -#include <QtPlugin> #include <QMenu> using namespace Core; -using namespace QmlJSTools; -using namespace QmlJSTools::Internal; -enum { debug = 0 }; +namespace QmlJSTools { +namespace Internal { -QmlJSToolsPlugin *QmlJSToolsPlugin::m_instance = 0; +enum { debug = 0 }; -QmlJSToolsPlugin::QmlJSToolsPlugin() - : m_modelManager(0) +class QmlJSToolsPluginPrivate : public QObject { - m_instance = this; -} +public: + QmlJSToolsPluginPrivate(); + + QmlJSToolsSettings settings; + ModelManager modelManager; + + QAction resetCodeModelAction{QmlJSToolsPlugin::tr("Reset Code Model"), nullptr}; + + LocatorData locatorData; + FunctionFilter functionFilter{&locatorData}; + QmlJSCodeStyleSettingsPage codeStyleSettingsPage; + BasicBundleProvider basicBundleProvider; +}; QmlJSToolsPlugin::~QmlJSToolsPlugin() { - m_instance = 0; - m_modelManager = 0; // deleted automatically + delete d; } bool QmlJSToolsPlugin::initialize(const QStringList &arguments, QString *error) @@ -67,67 +74,53 @@ bool QmlJSToolsPlugin::initialize(const QStringList &arguments, QString *error) Q_UNUSED(arguments) Q_UNUSED(error) - m_settings = new QmlJSToolsSettings(this); // force registration of qmljstools settings + d = new QmlJSToolsPluginPrivate; - // Objects - m_modelManager = new ModelManager(this); + return true; +} +QmlJSToolsPluginPrivate::QmlJSToolsPluginPrivate() +{ // Core::VcsManager *vcsManager = Core::VcsManager::instance(); // Core::DocumentManager *documentManager = Core::DocumentManager::instance(); // connect(vcsManager, &Core::VcsManager::repositoryChanged, -// m_modelManager, &ModelManager::updateModifiedSourceFiles); +// &d->modelManager, &ModelManager::updateModifiedSourceFiles); // connect(documentManager, &DocumentManager::filesChangedInternally, -// m_modelManager, &ModelManager::updateSourceFiles); - - LocatorData *locatorData = new LocatorData; - addAutoReleasedObject(locatorData); - addAutoReleasedObject(new FunctionFilter(locatorData)); - addAutoReleasedObject(new QmlJSCodeStyleSettingsPage); - addAutoReleasedObject(new BasicBundleProvider); +// &d->modelManager, &ModelManager::updateSourceFiles); // Menus ActionContainer *mtools = ActionManager::actionContainer(Core::Constants::M_TOOLS); ActionContainer *mqmljstools = ActionManager::createMenu(Constants::M_TOOLS_QMLJS); QMenu *menu = mqmljstools->menu(); - menu->setTitle(tr("&QML/JS")); + menu->setTitle(QmlJSToolsPlugin::tr("&QML/JS")); menu->setEnabled(true); mtools->addMenu(mqmljstools); // Update context in global context - m_resetCodeModelAction = new QAction(tr("Reset Code Model"), this); Command *cmd = ActionManager::registerAction( - m_resetCodeModelAction, Constants::RESET_CODEMODEL); - connect(m_resetCodeModelAction, &QAction::triggered, - m_modelManager, &ModelManager::resetCodeModel); + &resetCodeModelAction, Constants::RESET_CODEMODEL); + connect(&resetCodeModelAction, &QAction::triggered, + &modelManager, &ModelManager::resetCodeModel); mqmljstools->addAction(cmd); - // watch task progress - connect(ProgressManager::instance(), &ProgressManager::taskStarted, - this, &QmlJSToolsPlugin::onTaskStarted); - connect(ProgressManager::instance(), &ProgressManager::allTasksFinished, - this, &QmlJSToolsPlugin::onAllTasksFinished); + // Watch task progress + connect(ProgressManager::instance(), &ProgressManager::taskStarted, this, + [this](Core::Id type) { + if (type == QmlJS::Constants::TASK_INDEX) + resetCodeModelAction.setEnabled(false); + }); - return true; + connect(ProgressManager::instance(), &ProgressManager::allTasksFinished, + [this](Core::Id type) { + if (type == QmlJS::Constants::TASK_INDEX) + resetCodeModelAction.setEnabled(true); + }); } void QmlJSToolsPlugin::extensionsInitialized() { - m_modelManager->delayedInitialization(); -} - -ExtensionSystem::IPlugin::ShutdownFlag QmlJSToolsPlugin::aboutToShutdown() -{ - return SynchronousShutdown; + d->modelManager.delayedInitialization(); } -void QmlJSToolsPlugin::onTaskStarted(Id type) -{ - if (type == QmlJS::Constants::TASK_INDEX) - m_resetCodeModelAction->setEnabled(false); -} - -void QmlJSToolsPlugin::onAllTasksFinished(Id type) -{ - if (type == QmlJS::Constants::TASK_INDEX) - m_resetCodeModelAction->setEnabled(true); -} +} // Internal +} // QmlJSTools |