From 480fb3f66de31205d25b647d5b451bd9a045300b Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 25 Nov 2019 11:10:11 +0100 Subject: [PATCH] ProjectExplorer: Introduce a central mechanism to update RC aspects Using the usual pattern of setting a std::function, and calling it. In the initial steps, update() is meant to be manually called in the derived RunConfigurations, mid-term the idea is to at least cover well-known ("Kit changed", ...) cases centrally. Change-Id: Ic00572bb57fb45ef109bd0ddb8a9c3132d4f0f13 Reviewed-by: Christian Kandeler --- src/plugins/projectexplorer/runconfiguration.cpp | 11 +++++++++++ src/plugins/projectexplorer/runconfiguration.h | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp index 7c40d8bc41e..e346208fe6d 100644 --- a/src/plugins/projectexplorer/runconfiguration.cpp +++ b/src/plugins/projectexplorer/runconfiguration.cpp @@ -311,6 +311,11 @@ BuildSystem *RunConfiguration::activeBuildSystem() const return target()->buildSystem(); } +void RunConfiguration::setUpdater(const Updater &updater) +{ + m_updater = updater; +} + QVariantMap RunConfiguration::toMap() const { QVariantMap map = ProjectConfiguration::toMap(); @@ -336,6 +341,12 @@ CommandLine RunConfiguration::commandLine() const return m_commandLineGetter(); } +void RunConfiguration::update() +{ + QTC_ASSERT(m_updater, return); + m_updater(); +} + BuildTargetInfo RunConfiguration::buildTargetInfo() const { BuildSystem *bs = target()->buildSystem(); diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h index ae6ad9e2d65..c884a21f8f0 100644 --- a/src/plugins/projectexplorer/runconfiguration.h +++ b/src/plugins/projectexplorer/runconfiguration.h @@ -172,6 +172,8 @@ public: QMap aspectData() const; + void update(); + signals: void configurationFinished(); void enabledChanged(); @@ -183,6 +185,9 @@ protected: BuildConfiguration *activeBuildConfiguration() const; BuildSystem *activeBuildSystem() const; + using Updater = std::function; + void setUpdater(const Updater &updater); + virtual void updateEnabledState(); virtual void doAdditionalSetup(const RunConfigurationCreationInfo &) {} @@ -194,6 +199,7 @@ private: QString m_buildKey; CommandLineGetter m_commandLineGetter; + Updater m_updater; }; class RunConfigurationCreationInfo