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>
This commit is contained in:
hjk
2019-07-30 09:15:56 +02:00
parent 7d3091a7b9
commit 4461efdfbb
7 changed files with 76 additions and 121 deletions

View File

@@ -83,7 +83,7 @@ BuildSettingsWidget::BuildSettingsWidget(Target *target) :
hbox->addWidget(new QLabel(tr("Edit build configuration:"), this));
m_buildConfigurationComboBox = new QComboBox(this);
m_buildConfigurationComboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents);
m_buildConfigurationComboBox->setModel(new BuildConfigurationModel(m_target, this));
m_buildConfigurationComboBox->setModel(m_target->buildConfigurationModel());
hbox->addWidget(m_buildConfigurationComboBox);
m_addButton = new QPushButton(this);
@@ -113,8 +113,8 @@ BuildSettingsWidget::BuildSettingsWidget(Target *target) :
}
m_buildConfiguration = m_target->activeBuildConfiguration();
auto model = static_cast<BuildConfigurationModel *>(m_buildConfigurationComboBox->model());
m_buildConfigurationComboBox->setCurrentIndex(model->indexFor(m_buildConfiguration).row());
m_buildConfigurationComboBox->setCurrentIndex(
m_target->buildConfigurationModel()->indexFor(m_buildConfiguration));
updateAddButtonMenu();
updateBuildSettings();
@@ -217,8 +217,8 @@ void BuildSettingsWidget::updateBuildSettings()
void BuildSettingsWidget::currentIndexChanged(int index)
{
auto model = static_cast<BuildConfigurationModel *>(m_buildConfigurationComboBox->model());
auto buildConfiguration = qobject_cast<BuildConfiguration *>(model->projectConfigurationAt(index));
auto buildConfiguration = qobject_cast<BuildConfiguration *>(
m_target->buildConfigurationModel()->projectConfigurationAt(index));
SessionManager::setActiveBuildConfiguration(m_target, buildConfiguration, SetActive::Cascade);
}
@@ -229,8 +229,8 @@ void BuildSettingsWidget::updateActiveConfiguration()
m_buildConfiguration = m_target->activeBuildConfiguration();
auto model = static_cast<BuildConfigurationModel *>(m_buildConfigurationComboBox->model());
m_buildConfigurationComboBox->setCurrentIndex(model->indexFor(m_buildConfiguration).row());
m_buildConfigurationComboBox->setCurrentIndex(
m_target->buildConfigurationModel()->indexFor(m_buildConfiguration));
updateBuildSettings();
}