diff options
author | hjk <hjk@qt.io> | 2019-07-30 09:15:56 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2019-07-31 11:36:55 +0000 |
commit | 4461efdfbb050c5bab105264e9c1d0bab9fe04b5 (patch) | |
tree | ad4e6e985e7c55d242b91348e9347ee5c06259cc /src/plugins/projectexplorer/target.cpp | |
parent | 7d3091a7b9e42efc382f0c1d33e9a34931734ee2 (diff) |
ProjectExplorer: Move *ConfigurationModel ownership to target
The models hold essentially duplicated information besides the actual
configuration lists that are already in the target and are only
used in a context where the target is known and accessible.
As the models keep track of all added or removed configurations
and can be fed configurations of the right types only, the need
to filter is gone.
Change-Id: Iec2c6879223893297c71e7632310ac526b704237
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/projectexplorer/target.cpp')
-rw-r--r-- | src/plugins/projectexplorer/target.cpp | 45 |
1 files changed, 35 insertions, 10 deletions
diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp index ce3f4c9b32..6c6c7255bb 100644 --- a/src/plugins/projectexplorer/target.cpp +++ b/src/plugins/projectexplorer/target.cpp @@ -23,6 +23,7 @@ ** ****************************************************************************/ +#include "projectconfigurationmodel.h" #include "target.h" #include "buildconfiguration.h" @@ -59,7 +60,8 @@ using namespace Utils; -namespace { +namespace ProjectExplorer { + const char ACTIVE_BC_KEY[] = "ProjectExplorer.Target.ActiveBuildConfiguration"; const char BC_KEY_PREFIX[] = "ProjectExplorer.Target.BuildConfiguration."; const char BC_COUNT_KEY[] = "ProjectExplorer.Target.BuildConfigurationCount"; @@ -82,18 +84,19 @@ static QString formatDeviceInfo(const ProjectExplorer::IDevice::DeviceInfo &inpu return lines.join(QLatin1String("<br>")); } -} // namespace - // ------------------------------------------------------------------------- // Target // ------------------------------------------------------------------------- -namespace ProjectExplorer { - class TargetPrivate { public: - TargetPrivate(Kit *k); + TargetPrivate(Target *t, Kit *k) : + m_kit(k), + m_buildConfigurationModel(t), + m_deployConfigurationModel(t), + m_runConfigurationModel(t) + { } bool m_isEnabled = true; QIcon m_overlayIcon; @@ -110,15 +113,16 @@ public: Kit *const m_kit; MacroExpander m_macroExpander; + + ProjectConfigurationModel m_buildConfigurationModel; + ProjectConfigurationModel m_deployConfigurationModel; + ProjectConfigurationModel m_runConfigurationModel; }; -TargetPrivate::TargetPrivate(Kit *k) : - m_kit(k) -{ } Target::Target(Project *project, Kit *k, _constructor_tag) : QObject(project), - d(std::make_unique<TargetPrivate>(k)) + d(std::make_unique<TargetPrivate>(this, k)) { QTC_CHECK(d->m_kit); connect(DeviceManager::instance(), &DeviceManager::updated, this, &Target::updateDeviceState); @@ -227,6 +231,7 @@ void Target::addBuildConfiguration(BuildConfiguration *bc) emit addedProjectConfiguration(bc); emit addedBuildConfiguration(bc); + d->m_buildConfigurationModel.addProjectConfiguration(bc); if (!activeBuildConfiguration()) setActiveBuildConfiguration(bc); @@ -255,6 +260,7 @@ bool Target::removeBuildConfiguration(BuildConfiguration *bc) emit removedBuildConfiguration(bc); emit removedProjectConfiguration(bc); + d->m_buildConfigurationModel.removeProjectConfiguration(bc); delete bc; return true; @@ -296,6 +302,7 @@ void Target::addDeployConfiguration(DeployConfiguration *dc) d->m_deployConfigurations.push_back(dc); emit addedProjectConfiguration(dc); + d->m_deployConfigurationModel.addProjectConfiguration(dc); emit addedDeployConfiguration(dc); if (!d->m_activeDeployConfiguration) @@ -324,6 +331,7 @@ bool Target::removeDeployConfiguration(DeployConfiguration *dc) } emit removedProjectConfiguration(dc); + d->m_deployConfigurationModel.removeProjectConfiguration(dc); emit removedDeployConfiguration(dc); delete dc; @@ -413,6 +421,7 @@ void Target::addRunConfiguration(RunConfiguration *rc) d->m_runConfigurations.push_back(rc); emit addedProjectConfiguration(rc); + d->m_runConfigurationModel.addProjectConfiguration(rc); emit addedRunConfiguration(rc); if (!activeRunConfiguration()) @@ -435,6 +444,7 @@ void Target::removeRunConfiguration(RunConfiguration *rc) emit removedRunConfiguration(rc); emit removedProjectConfiguration(rc); + d->m_runConfigurationModel.removeProjectConfiguration(rc); delete rc; } @@ -728,6 +738,21 @@ MacroExpander *Target::macroExpander() const return &d->m_macroExpander; } +ProjectConfigurationModel *Target::buildConfigurationModel() const +{ + return &d->m_buildConfigurationModel; +} + +ProjectConfigurationModel *Target::deployConfigurationModel() const +{ + return &d->m_deployConfigurationModel; +} + +ProjectConfigurationModel *Target::runConfigurationModel() const +{ + return &d->m_runConfigurationModel; +} + void Target::updateDeviceState() { IDevice::ConstPtr current = DeviceKitAspect::device(kit()); |