diff --git a/src/plugins/squish/CMakeLists.txt b/src/plugins/squish/CMakeLists.txt index 476a4af2366..11b41a5a2c8 100644 --- a/src/plugins/squish/CMakeLists.txt +++ b/src/plugins/squish/CMakeLists.txt @@ -18,7 +18,7 @@ add_qtc_plugin(Squish squishnavigationwidget.cpp squishnavigationwidget.h squishoutputpane.cpp squishoutputpane.h squishperspective.cpp squishperspective.h - squishplugin.cpp squishplugin.h + squishplugin.cpp squishprocessbase.cpp squishprocessbase.h squishresultmodel.cpp squishresultmodel.h squishrunnerprocess.cpp squishrunnerprocess.h diff --git a/src/plugins/squish/squish.qbs b/src/plugins/squish/squish.qbs index 29dd1da4042..4b012b05123 100644 --- a/src/plugins/squish/squish.qbs +++ b/src/plugins/squish/squish.qbs @@ -44,7 +44,6 @@ QtcPlugin { "squishperspective.cpp", "squishperspective.h", "squishplugin.cpp", - "squishplugin.h", "squishplugin_global.h", "squishprocessbase.cpp", "squishprocessbase.h", diff --git a/src/plugins/squish/squishplugin.cpp b/src/plugins/squish/squishplugin.cpp index e86ec531662..67b21f36e33 100644 --- a/src/plugins/squish/squishplugin.cpp +++ b/src/plugins/squish/squishplugin.cpp @@ -1,8 +1,6 @@ // Copyright (C) 2022 The Qt Company Ltd // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 -#include "squishplugin.h" - #include "objectsmapeditor.h" #include "squishfilehandler.h" #include "squishmessages.h" @@ -20,6 +18,7 @@ #include #include +#include #include @@ -31,10 +30,9 @@ using namespace Core; using namespace Utils; -namespace Squish { -namespace Internal { +namespace Squish::Internal { -class SquishPluginPrivate : public QObject +class SquishPluginPrivate final : public QObject { public: SquishPluginPrivate(); @@ -47,7 +45,7 @@ public: SquishNavigationWidgetFactory m_navigationWidgetFactory; ObjectsMapEditorFactory m_objectsMapEditorFactory; SquishOutputPane *m_outputPane = nullptr; - SquishTools * m_squishTools = nullptr; + SquishTools m_squishTools; SquishToolkitsPageFactory m_squishToolkitsPageFactory; SquishScriptLanguagePageFactory m_squishScriptLanguagePageFactory; @@ -55,27 +53,17 @@ public: SquishGeneratorFactory m_squishGeneratorFactory; }; -static SquishPluginPrivate *dd = nullptr; - SquishPluginPrivate::SquishPluginPrivate() { qRegisterMetaType("SquishResultItem*"); m_outputPane = SquishOutputPane::instance(); - m_squishTools = new SquishTools; initializeMenuEntries(); } SquishPluginPrivate::~SquishPluginPrivate() { delete m_outputPane; - delete m_squishTools; -} - -SquishPlugin::~SquishPlugin() -{ - delete dd; - dd = nullptr; } void SquishPluginPrivate::initializeMenuEntries() @@ -106,7 +94,6 @@ void SquishPluginPrivate::initializeMenuEntries() bool SquishPluginPrivate::initializeGlobalScripts() { - QTC_ASSERT(dd->m_squishTools, return false); SquishFileHandler::instance()->setSharedFolders({}); const FilePath squishserver = settings().squishPath().pathAppended( @@ -114,7 +101,7 @@ bool SquishPluginPrivate::initializeGlobalScripts() if (!squishserver.isExecutableFile()) return false; - dd->m_squishTools->queryGlobalScripts([](const QString &output, const QString &error) { + m_squishTools.queryGlobalScripts([](const QString &output, const QString &error) { if (output.isEmpty() || !error.isEmpty()) return; // ignore (for now?) @@ -126,31 +113,38 @@ bool SquishPluginPrivate::initializeGlobalScripts() return true; } -void SquishPlugin::initialize() +class SquishPlugin final : public ExtensionSystem::IPlugin { - dd = new SquishPluginPrivate; - ProjectExplorer::JsonWizardFactory::addWizardPath(":/squish/wizard/"); -} + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "Squish.json") -bool SquishPlugin::delayedInitialize() -{ - connect(&settings().squishPath, &BaseAspect::changed, - dd, &SquishPluginPrivate::initializeGlobalScripts); +private: + void initialize() final + { + d.reset(new SquishPluginPrivate); + ProjectExplorer::JsonWizardFactory::addWizardPath(":/squish/wizard/"); + } - return dd->initializeGlobalScripts(); -} + bool delayedInitialize() final + { + connect(&settings().squishPath, &BaseAspect::changed, + d.get(), &SquishPluginPrivate::initializeGlobalScripts); -ExtensionSystem::IPlugin::ShutdownFlag SquishPlugin::aboutToShutdown() -{ - if (dd->m_squishTools) { - if (dd->m_squishTools->shutdown()) + return d->initializeGlobalScripts(); + } + + ShutdownFlag aboutToShutdown() final + { + if (d->m_squishTools.shutdown()) return SynchronousShutdown; - connect(dd->m_squishTools, &SquishTools::shutdownFinished, + connect(&d->m_squishTools, &SquishTools::shutdownFinished, this, &ExtensionSystem::IPlugin::asynchronousShutdownFinished); return AsynchronousShutdown; } - return SynchronousShutdown; -} -} // namespace Internal -} // namespace Squish + std::unique_ptr d; +}; + +} // Squish::Internal + +#include "squishplugin.moc" diff --git a/src/plugins/squish/squishplugin.h b/src/plugins/squish/squishplugin.h deleted file mode 100644 index c27a24bcd57..00000000000 --- a/src/plugins/squish/squishplugin.h +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (C) 2022 The Qt Company Ltd -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#pragma once - -#include - -namespace Squish { -namespace Internal { - -class SquishPlugin : public ExtensionSystem::IPlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "Squish.json") -public: - SquishPlugin() = default; - ~SquishPlugin() override; - - void initialize() override; - bool delayedInitialize() override; - ShutdownFlag aboutToShutdown() override; -}; - -} // namespace Internal -} // namespace Squish