From 4d00dc5ef62bbcf43b65a4822b9a7c82b8259b8d Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 1 Feb 2024 17:55:04 +0100 Subject: [PATCH] Squish: Dissolve plugin pimpl Change-Id: I8e291e91c5d8c94274f39db40a625a796d8ad9b7 Reviewed-by: Reviewed-by: Christian Stenger --- src/plugins/squish/squishplugin.cpp | 118 ++++++++++++---------------- 1 file changed, 51 insertions(+), 67 deletions(-) diff --git a/src/plugins/squish/squishplugin.cpp b/src/plugins/squish/squishplugin.cpp index 3fd1a3bc569..e7929285e29 100644 --- a/src/plugins/squish/squishplugin.cpp +++ b/src/plugins/squish/squishplugin.cpp @@ -32,67 +32,6 @@ using namespace Utils; namespace Squish::Internal { -class SquishPluginPrivate final : public QObject -{ -public: - SquishPluginPrivate(); - - bool initializeGlobalScripts(); -}; - -SquishPluginPrivate::SquishPluginPrivate() -{ - qRegisterMetaType("SquishResultItem*"); - - const Id menuId = "Squish.Menu"; - ActionContainer *menu = ActionManager::createMenu(menuId); - menu->menu()->setTitle(Tr::tr("&Squish")); - menu->setOnAllDisabledBehavior(ActionContainer::Show); - - ActionBuilder serverSettings(this, "Squish.ServerSettings"); - serverSettings.setText(Tr::tr("&Server Settings...")); - serverSettings.addToContainer(menuId); - serverSettings.addOnTriggered(this, [] { - if (!settings().squishPath().exists()) { - SquishMessages::criticalMessage(Tr::tr("Invalid Squish settings. Configure Squish " - "installation path inside " - "Preferences... > Squish > General to use " - "this wizard.")); - return; - } - - SquishServerSettingsDialog dialog; - dialog.exec(); - }); - - ActionContainer *toolsMenu = ActionManager::actionContainer(Core::Constants::M_TOOLS); - toolsMenu->addMenu(menu); -} - -bool SquishPluginPrivate::initializeGlobalScripts() -{ - // The code expects squishTestTreeModel to exist, so force creation now. - (void) SquishTestTreeModel::instance(); - - SquishFileHandler::instance()->setSharedFolders({}); - - const FilePath squishserver = settings().squishPath().pathAppended("bin/squishserver") - .withExecutableSuffix(); - if (!squishserver.isExecutableFile()) - return false; - - SquishTools::instance()->queryGlobalScripts([](const QString &output, const QString &error) { - if (output.isEmpty() || !error.isEmpty()) - return; // ignore (for now?) - - // FIXME? comma, special characters in paths - const Utils::FilePaths globalDirs = Utils::transform( - output.trimmed().split(',', Qt::SkipEmptyParts), &Utils::FilePath::fromUserInput); - SquishFileHandler::instance()->setSharedFolders(globalDirs); - }); - return true; -} - class SquishPlugin final : public ExtensionSystem::IPlugin { Q_OBJECT @@ -106,20 +45,67 @@ private: setupSquishOutputPane(this); setupSquishTools(this); - d.reset(new SquishPluginPrivate); - setupSquishWizardPages(); setupSquishNavigationWidgetFactory(); + qRegisterMetaType("SquishResultItem*"); + + const Id menuId = "Squish.Menu"; + ActionContainer *menu = ActionManager::createMenu(menuId); + menu->menu()->setTitle(Tr::tr("&Squish")); + menu->setOnAllDisabledBehavior(ActionContainer::Show); + + ActionBuilder serverSettings(this, "Squish.ServerSettings"); + serverSettings.setText(Tr::tr("&Server Settings...")); + serverSettings.addToContainer(menuId); + serverSettings.addOnTriggered(this, [] { + if (!settings().squishPath().exists()) { + SquishMessages::criticalMessage(Tr::tr("Invalid Squish settings. Configure Squish " + "installation path inside " + "Preferences... > Squish > General to use " + "this wizard.")); + return; + } + + SquishServerSettingsDialog dialog; + dialog.exec(); + }); + + ActionContainer *toolsMenu = ActionManager::actionContainer(Core::Constants::M_TOOLS); + toolsMenu->addMenu(menu); ProjectExplorer::JsonWizardFactory::addWizardPath(":/squish/wizard/"); } + bool initializeGlobalScripts() + { + // The code expects squishTestTreeModel to exist, so force creation now. + (void) SquishTestTreeModel::instance(); + + SquishFileHandler::instance()->setSharedFolders({}); + + const FilePath squishserver = settings().squishPath().pathAppended("bin/squishserver") + .withExecutableSuffix(); + if (!squishserver.isExecutableFile()) + return false; + + SquishTools::instance()->queryGlobalScripts([](const QString &output, const QString &error) { + if (output.isEmpty() || !error.isEmpty()) + return; // ignore (for now?) + + // FIXME? comma, special characters in paths + const Utils::FilePaths globalDirs = Utils::transform( + output.trimmed().split(',', Qt::SkipEmptyParts), &Utils::FilePath::fromUserInput); + SquishFileHandler::instance()->setSharedFolders(globalDirs); + }); + return true; + } + bool delayedInitialize() final { connect(&settings().squishPath, &BaseAspect::changed, - d.get(), &SquishPluginPrivate::initializeGlobalScripts); + this, &SquishPlugin::initializeGlobalScripts); - return d->initializeGlobalScripts(); + return initializeGlobalScripts(); } ShutdownFlag aboutToShutdown() final @@ -130,8 +116,6 @@ private: this, &ExtensionSystem::IPlugin::asynchronousShutdownFinished); return AsynchronousShutdown; } - - std::unique_ptr d; }; } // Squish::Internal