aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/target.cpp
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2019-07-30 09:15:56 +0200
committerhjk <hjk@qt.io>2019-07-31 11:36:55 +0000
commit4461efdfbb050c5bab105264e9c1d0bab9fe04b5 (patch)
treead4e6e985e7c55d242b91348e9347ee5c06259cc /src/plugins/projectexplorer/target.cpp
parent7d3091a7b9e42efc382f0c1d33e9a34931734ee2 (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.cpp45
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());