From d4eef825282a4438d19e8b4f45e111cd40fd88cf Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 20 Nov 2024 16:57:57 +0100 Subject: [PATCH] Coco: Move some build step related code from plugin to cocobuildstep.cpp Closer to the standard pattern. Change-Id: Ibbc34b66353e63009651e1593263c58d97ce917c Reviewed-by: Markus Redeker Reviewed-by: Jarek Kobus --- src/plugins/coco/cocobuildstep.cpp | 81 +++++++++++++++++++++++------- src/plugins/coco/cocobuildstep.h | 14 +----- src/plugins/coco/cocoplugin.cpp | 29 +---------- 3 files changed, 67 insertions(+), 57 deletions(-) diff --git a/src/plugins/coco/cocobuildstep.cpp b/src/plugins/coco/cocobuildstep.cpp index a28497a5618..75c0bb3a7c5 100644 --- a/src/plugins/coco/cocobuildstep.cpp +++ b/src/plugins/coco/cocobuildstep.cpp @@ -8,33 +8,23 @@ #include "cocotr.h" #include + #include -#include -#include +#include +#include + #include +#include + +#include + #include namespace Coco::Internal { using namespace ProjectExplorer; -QMakeStepFactory::QMakeStepFactory() -{ - registerStep(Utils::Id{Constants::COCO_STEP_ID}); - setSupportedProjectType(QmakeProjectManager::Constants::QMAKEPROJECT_ID); - setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); - setRepeatable(false); -} - -CMakeStepFactory::CMakeStepFactory() -{ - registerStep(Utils::Id{Constants::COCO_STEP_ID}); - setSupportedProjectType(CMakeProjectManager::Constants::CMAKE_PROJECT_ID); - setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); - setRepeatable(false); -} - CocoBuildStep *CocoBuildStep::create(BuildConfiguration *buildConfig) { // The "new" command creates a small memory leak which we can tolerate. @@ -122,4 +112,59 @@ Tasking::GroupItem CocoBuildStep::runRecipe() return Tasking::GroupItem({}); } +// Factories + +class QMakeStepFactory final : public BuildStepFactory +{ +public: + QMakeStepFactory() + { + registerStep(Utils::Id{Constants::COCO_STEP_ID}); + setSupportedProjectType(QmakeProjectManager::Constants::QMAKEPROJECT_ID); + setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); + setRepeatable(false); + } +}; + +class CMakeStepFactory final : public BuildStepFactory +{ +public: + CMakeStepFactory() + { + registerStep(Utils::Id{Constants::COCO_STEP_ID}); + setSupportedProjectType(CMakeProjectManager::Constants::CMAKE_PROJECT_ID); + setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); + setRepeatable(false); + } +}; + +static void addBuildStep(Target *target) +{ + for (BuildConfiguration *config : target->buildConfigurations()) { + if (BuildSettings::supportsBuildConfig(*config)) { + BuildStepList *steps = config->buildSteps(); + + if (!steps->contains(Constants::COCO_STEP_ID)) + steps->insertStep(0, CocoBuildStep::create(config)); + + steps->firstOfType()->display(config); + } + } +} + +void setupCocoBuildSteps() +{ + static QMakeStepFactory theQmakeStepFactory; + static CMakeStepFactory theCmakeStepFactory; + + QObject::connect(ProjectManager::instance(), &ProjectManager::projectAdded, [&](Project *project) { + if (Target *target = project->activeTarget()) + addBuildStep(target); + + QObject::connect(project, &Project::addedTarget, [](Target *target) { + addBuildStep(target); + }); + }); +} + } // namespace Coco::Internal diff --git a/src/plugins/coco/cocobuildstep.h b/src/plugins/coco/cocobuildstep.h index 15b48565fbc..d87bb0f76b1 100644 --- a/src/plugins/coco/cocobuildstep.h +++ b/src/plugins/coco/cocobuildstep.h @@ -15,18 +15,6 @@ class QPushButton; namespace Coco::Internal { -class QMakeStepFactory: public ProjectExplorer::BuildStepFactory -{ -public: - QMakeStepFactory(); -}; - -class CMakeStepFactory: public ProjectExplorer::BuildStepFactory -{ -public: - CMakeStepFactory(); -}; - class CocoBuildStep : public ProjectExplorer::BuildStep { Q_OBJECT @@ -56,4 +44,6 @@ private: QPushButton *m_reconfigureButton; }; +void setupCocoBuildSteps(); + } // namespace Coco::Internal diff --git a/src/plugins/coco/cocoplugin.cpp b/src/plugins/coco/cocoplugin.cpp index 0f453d3372c..b838d8c81dc 100644 --- a/src/plugins/coco/cocoplugin.cpp +++ b/src/plugins/coco/cocoplugin.cpp @@ -13,7 +13,6 @@ #include #include #include -#include #include #include @@ -108,28 +107,13 @@ public: void addEntryToProjectSettings(); private: - QMakeStepFactory m_qmakeStepFactory; - CMakeStepFactory m_cmakeStepFactory; - CocoLanguageClient *m_client = nullptr; }; -static void addBuildStep(Target *target) -{ - for (BuildConfiguration *config : target->buildConfigurations()) { - if (BuildSettings::supportsBuildConfig(*config)) { - BuildStepList *steps = config->buildSteps(); - - if (!steps->contains(Constants::COCO_STEP_ID)) - steps->insertStep(0, CocoBuildStep::create(config)); - - steps->firstOfType()->display(config); - } - } -} - void CocoPlugin::initialize() { + setupCocoBuildSteps(); + IOptionsPage::registerCategory( "I.Coco", QCoreApplication::translate("Coco", "Coco"), @@ -139,15 +123,6 @@ void CocoPlugin::initialize() GlobalSettingsPage::instance().widget(); addEntryToProjectSettings(); - connect(ProjectManager::instance(), &ProjectManager::projectAdded, this, [&](Project *project) { - if (Target *target = project->activeTarget()) - addBuildStep(target); - - connect(project, &Project::addedTarget, this, [](Target *target) { - addBuildStep(target); - }); - }); - initLanguageServer(); }