From 9c96565756b561a1e456b242ae42a6eb62ddcca1 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 11 Jan 2024 13:46:21 +0100 Subject: [PATCH] AppMan: Use new setup pattern for AppManagerDeployConfigurationAutoSwitcher Change-Id: Id5c487318c5dfbefacc5c2600da6511cbf6f4fec Reviewed-by: Dominik Holland --- ...managerdeployconfigurationautoswitcher.cpp | 78 ++++++++++--------- ...ppmanagerdeployconfigurationautoswitcher.h | 30 +------ .../qtapplicationmanager/appmanagerplugin.cpp | 4 +- 3 files changed, 47 insertions(+), 65 deletions(-) diff --git a/src/plugins/qtapplicationmanager/appmanagerdeployconfigurationautoswitcher.cpp b/src/plugins/qtapplicationmanager/appmanagerdeployconfigurationautoswitcher.cpp index 36ca9bf15ec..ae6e7866c95 100644 --- a/src/plugins/qtapplicationmanager/appmanagerdeployconfigurationautoswitcher.cpp +++ b/src/plugins/qtapplicationmanager/appmanagerdeployconfigurationautoswitcher.cpp @@ -13,36 +13,47 @@ #include #include +#include + using namespace ProjectExplorer; -namespace AppManager { -namespace Internal { +namespace AppManager::Internal { -class AppManagerDeployConfigurationAutoSwitcherPrivate +class AppManagerDeployConfigurationAutoSwitcher final : public QObject { public: - Project *project = nullptr; - Target *target = nullptr; - RunConfiguration *runConfiguration = nullptr; - DeployConfiguration *deployConfiguration = nullptr; - QHash deployConfigurationsUsageHistory; + AppManagerDeployConfigurationAutoSwitcher(); + +private: + void onActiveDeployConfigurationChanged(DeployConfiguration *dc); + void onActiveRunConfigurationChanged(RunConfiguration *rc); + void onActiveTargetChanged(Target *target); + void onStartupProjectChanged(Project *project); + + Project *m_project = nullptr; + Target *m_target = nullptr; + RunConfiguration *m_runConfiguration = nullptr; + DeployConfiguration *m_deployConfiguration = nullptr; + QHash m_deployConfigurationsUsageHistory; }; -AppManagerDeployConfigurationAutoSwitcher::AppManagerDeployConfigurationAutoSwitcher(QObject *parent) - : QObject(parent) - , d(new AppManagerDeployConfigurationAutoSwitcherPrivate()) +AppManagerDeployConfigurationAutoSwitcher::AppManagerDeployConfigurationAutoSwitcher() { -} + ProjectManager *projectManager = ProjectManager::instance(); + QTC_ASSERT(projectManager, return); -AppManagerDeployConfigurationAutoSwitcher::~AppManagerDeployConfigurationAutoSwitcher() = default; + connect(projectManager, &ProjectManager::startupProjectChanged, + this, &AppManagerDeployConfigurationAutoSwitcher::onStartupProjectChanged, Qt::UniqueConnection); + onStartupProjectChanged(projectManager->startupProject()); +} void AppManagerDeployConfigurationAutoSwitcher::onActiveDeployConfigurationChanged(DeployConfiguration *deployConfiguration) { - if (d->deployConfiguration != deployConfiguration) { - d->deployConfiguration = deployConfiguration; + if (m_deployConfiguration != deployConfiguration) { + m_deployConfiguration = deployConfiguration; if (deployConfiguration && deployConfiguration->target()) { if (auto runConfiguration = deployConfiguration->target()->activeRunConfiguration()) { - d->deployConfigurationsUsageHistory.insert(runConfiguration, deployConfiguration); + m_deployConfigurationsUsageHistory.insert(runConfiguration, deployConfiguration); } } } @@ -60,14 +71,14 @@ static bool isApplicationManagerDeployConfiguration(const DeployConfiguration *d void AppManagerDeployConfigurationAutoSwitcher::onActiveRunConfigurationChanged(RunConfiguration *runConfiguration) { - if (d->runConfiguration != runConfiguration) { - d->runConfiguration = runConfiguration; + if (m_runConfiguration != runConfiguration) { + m_runConfiguration = runConfiguration; if (runConfiguration) { if (auto target = runConfiguration->target()) { - const auto stored = d->deployConfigurationsUsageHistory.contains(runConfiguration); + const auto stored = m_deployConfigurationsUsageHistory.contains(runConfiguration); if (stored) { // deploy selection stored -> restore - auto deployConfiguration = d->deployConfigurationsUsageHistory.value(runConfiguration, nullptr); + auto deployConfiguration = m_deployConfigurationsUsageHistory.value(runConfiguration, nullptr); target->setActiveDeployConfiguration(deployConfiguration, SetActive::NoCascade); } else if (auto activeDeployConfiguration = target->activeDeployConfiguration()) { // active deploy configuration exists @@ -106,11 +117,11 @@ void AppManagerDeployConfigurationAutoSwitcher::onActiveRunConfigurationChanged( void AppManagerDeployConfigurationAutoSwitcher::onActiveTargetChanged(Target *target) { - if (d->target != target) { - if (d->target) { - disconnect(d->target, nullptr, this, nullptr); + if (m_target != target) { + if (m_target) { + disconnect(m_target, nullptr, this, nullptr); } - d->target = target; + m_target = target; if (target) { connect(target, &Target::activeRunConfigurationChanged, this, &AppManagerDeployConfigurationAutoSwitcher::onActiveRunConfigurationChanged); @@ -124,11 +135,11 @@ void AppManagerDeployConfigurationAutoSwitcher::onActiveTargetChanged(Target *ta void AppManagerDeployConfigurationAutoSwitcher::onStartupProjectChanged(Project *project) { - if (d->project != project) { - if (d->project) { - disconnect(d->project, nullptr, this, nullptr); + if (m_project != project) { + if (m_project) { + disconnect(m_project, nullptr, this, nullptr); } - d->project = project; + m_project = project; if (project) { connect(project, &Project::activeTargetChanged, this, &AppManagerDeployConfigurationAutoSwitcher::onActiveTargetChanged); @@ -137,14 +148,9 @@ void AppManagerDeployConfigurationAutoSwitcher::onStartupProjectChanged(Project } } -void AppManagerDeployConfigurationAutoSwitcher::initialize() +void setupAppManagerDeployConfigurationAutoSwitcher() { - if (auto projectManager = ProjectManager::instance()) { - connect(projectManager, &ProjectManager::startupProjectChanged, - this, &AppManagerDeployConfigurationAutoSwitcher::onStartupProjectChanged, Qt::UniqueConnection); - onStartupProjectChanged(projectManager->startupProject()); - } + static AppManagerDeployConfigurationAutoSwitcher theAppManagerDeployConfigurationAutoSwitcher; } -} // namespace Internal -} // namespace AppManager +} // AppManager::Internal diff --git a/src/plugins/qtapplicationmanager/appmanagerdeployconfigurationautoswitcher.h b/src/plugins/qtapplicationmanager/appmanagerdeployconfigurationautoswitcher.h index 021ef783c1b..015cf8fec6f 100644 --- a/src/plugins/qtapplicationmanager/appmanagerdeployconfigurationautoswitcher.h +++ b/src/plugins/qtapplicationmanager/appmanagerdeployconfigurationautoswitcher.h @@ -5,32 +5,8 @@ #pragma once -#include -#include +namespace AppManager::Internal { -namespace AppManager { -namespace Internal { +void setupAppManagerDeployConfigurationAutoSwitcher(); -class AppManagerDeployConfigurationAutoSwitcherPrivate; - -class AppManagerDeployConfigurationAutoSwitcher : public QObject -{ - Q_OBJECT - - QScopedPointer d; - -public: - AppManagerDeployConfigurationAutoSwitcher(QObject *parent = nullptr); - ~AppManagerDeployConfigurationAutoSwitcher() override; - - void initialize(); - -private: - void onActiveDeployConfigurationChanged(ProjectExplorer::DeployConfiguration *dc); - void onActiveRunConfigurationChanged(ProjectExplorer::RunConfiguration *rc); - void onActiveTargetChanged(ProjectExplorer::Target *target); - void onStartupProjectChanged(ProjectExplorer::Project *project); -}; - -} // namespace Internal -} // namespace AppManager +} // AppManager::Internal diff --git a/src/plugins/qtapplicationmanager/appmanagerplugin.cpp b/src/plugins/qtapplicationmanager/appmanagerplugin.cpp index f93deac8a67..5ba055a9f5b 100644 --- a/src/plugins/qtapplicationmanager/appmanagerplugin.cpp +++ b/src/plugins/qtapplicationmanager/appmanagerplugin.cpp @@ -21,7 +21,6 @@ namespace AppManager::Internal { class AppManagerPluginPrivate { public: - AppManagerDeployConfigurationAutoSwitcher deployConfigurationAutoSwitcher; AppManagerDeployConfigurationFactory deployConfigFactory; AppManagerRunConfigurationFactory runConfigFactory; @@ -44,8 +43,9 @@ void AppManagerPlugin::initialize() setupAppManagerInstallPackageStep(); setupAppManagerRemoteInstallPackageStep(); + setupAppManagerDeployConfigurationAutoSwitcher(); + d = new AppManagerPluginPrivate; - d->deployConfigurationAutoSwitcher.initialize(); } } // AppManager::Internal