From 97d501de42d3e573bfff53f5d68b5e576969ab13 Mon Sep 17 00:00:00 2001 From: dt <qtc-committer@nokia.com> Date: Fri, 12 Mar 2010 14:58:51 +0100 Subject: [PATCH] Switching buildconfiguration on the projects page now changes the active This is now possible due to the async evaluation --- .../buildsettingspropertiespage.cpp | 78 +++++-------------- .../buildsettingspropertiespage.h | 11 +-- 2 files changed, 22 insertions(+), 67 deletions(-) diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp index d7813b47dca..a50d1a530aa 100644 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp @@ -174,31 +174,21 @@ void BuildSettingsWidget::setupUi() m_removeButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); hbox->addWidget(m_removeButton); - m_makeActiveButton = new QPushButton(this); - m_makeActiveButton->setText(tr("Make Active")); - m_makeActiveButton->setToolTip(tr("Sets this build configuration to be used for this target.")); - m_makeActiveButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - hbox->addWidget(m_makeActiveButton); - hbox->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Fixed)); vbox->addLayout(hbox); } m_buildConfiguration = m_target->activeBuildConfiguration(); + updateAddButtonMenu(); + updateBuildSettings(); + connect(m_buildConfigurationComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(currentIndexChanged(int))); connect(m_removeButton, SIGNAL(clicked()), this, SLOT(deleteConfiguration())); - connect(m_makeActiveButton, SIGNAL(clicked()), - this, SLOT(makeActive())); - - // TODO update on displayNameChange -// connect(m_project, SIGNAL(buildConfigurationDisplayNameChanged(const QString &)), -// this, SLOT(buildConfigurationDisplayNameChanged(const QString &))); - connect(m_target, SIGNAL(activeBuildConfigurationChanged(ProjectExplorer::BuildConfiguration*)), this, SLOT(updateActiveConfiguration())); @@ -216,9 +206,6 @@ void BuildSettingsWidget::setupUi() if (m_target->buildConfigurationFactory()) connect(m_target->buildConfigurationFactory(), SIGNAL(availableCreationIdsChanged()), SLOT(updateAddButtonMenu())); - - updateAddButtonMenu(); - updateBuildSettings(); } void BuildSettingsWidget::addedBuildConfiguration(BuildConfiguration *bc) @@ -237,11 +224,11 @@ void BuildSettingsWidget::buildConfigurationDisplayNameChanged() { for (int i = 0; i < m_buildConfigurationComboBox->count(); ++i) { BuildConfiguration *bc = m_buildConfigurationComboBox->itemData(i).value<BuildConfiguration *>(); - m_buildConfigurationComboBox->setItemText(i, buildConfigurationItemName(bc)); + m_buildConfigurationComboBox->setItemText(i, bc->displayName()); } } -void BuildSettingsWidget::addSubWidget(const QString &name, QWidget *widget) +void BuildSettingsWidget::addSubWidget(const QString &name, BuildConfigWidget *widget) { widget->setContentsMargins(m_leftMargin, 10, 0, 0); @@ -269,7 +256,7 @@ void BuildSettingsWidget::clear() m_labels.clear(); } -QList<QWidget *> BuildSettingsWidget::subWidgets() const +QList<BuildConfigWidget *> BuildSettingsWidget::subWidgets() const { return m_subWidgets; } @@ -293,8 +280,6 @@ void BuildSettingsWidget::updateAddButtonMenu() void BuildSettingsWidget::updateBuildSettings() { - // TODO save position, entry from combbox - // Delete old tree items bool blocked = m_buildConfigurationComboBox->blockSignals(true); m_buildConfigurationComboBox->clear(); @@ -316,30 +301,30 @@ void BuildSettingsWidget::updateBuildSettings() // Add tree items foreach (BuildConfiguration *bc, m_target->buildConfigurations()) { - m_buildConfigurationComboBox->addItem(buildConfigurationItemName(bc), QVariant::fromValue<BuildConfiguration *>(bc)); + m_buildConfigurationComboBox->addItem(bc->displayName(), QVariant::fromValue<BuildConfiguration *>(bc)); if (bc == m_buildConfiguration) m_buildConfigurationComboBox->setCurrentIndex(m_buildConfigurationComboBox->count() - 1); } - m_buildConfigurationComboBox->blockSignals(blocked); + foreach (BuildConfigWidget *widget, subWidgets()) + widget->init(m_buildConfiguration); - currentBuildConfigurationChanged(); + m_buildConfigurationComboBox->blockSignals(blocked); } void BuildSettingsWidget::currentIndexChanged(int index) { - m_buildConfiguration = m_buildConfigurationComboBox->itemData(index).value<BuildConfiguration *>(); - currentBuildConfigurationChanged(); + BuildConfiguration *buildConfiguration = m_buildConfigurationComboBox->itemData(index).value<BuildConfiguration *>(); + m_target->setActiveBuildConfiguration(buildConfiguration); } -void BuildSettingsWidget::currentBuildConfigurationChanged() +void BuildSettingsWidget::updateActiveConfiguration() { - m_makeActiveButton->setEnabled(m_buildConfiguration - && m_buildConfiguration != m_target->activeBuildConfiguration()); - - if (!m_buildConfiguration) + if (!m_buildConfiguration || m_buildConfiguration == m_target->activeBuildConfiguration()) return; + m_buildConfiguration = m_target->activeBuildConfiguration(); + for (int i = 0; i < m_buildConfigurationComboBox->count(); ++i) { if (m_buildConfigurationComboBox->itemData(i).value<BuildConfiguration *>() == m_buildConfiguration) { m_buildConfigurationComboBox->setCurrentIndex(i); @@ -354,28 +339,6 @@ void BuildSettingsWidget::currentBuildConfigurationChanged() } } -void BuildSettingsWidget::updateActiveConfiguration() -{ - for (int i = 0; i < m_buildConfigurationComboBox->count(); ++i) { - BuildConfiguration *bc = m_buildConfigurationComboBox->itemData(i).value<BuildConfiguration *>(); - m_buildConfigurationComboBox->setItemText(i, buildConfigurationItemName(bc)); - } - m_makeActiveButton->setEnabled(currentBuildConfiguration() - && currentBuildConfiguration() != m_target->activeBuildConfiguration()); -} - -QString BuildSettingsWidget::buildConfigurationItemName(const BuildConfiguration *bc) const -{ - if (bc == m_target->activeBuildConfiguration()) - return tr("%1 (Active)").arg(bc->displayName()); - return bc->displayName(); -} - -BuildConfiguration *BuildSettingsWidget::currentBuildConfiguration() const { - const int index = m_buildConfigurationComboBox->currentIndex(); - return m_buildConfigurationComboBox->itemData(index).value<BuildConfiguration *>(); -} - void BuildSettingsWidget::createConfiguration() { if (!m_target->buildConfigurationFactory()) @@ -392,17 +355,12 @@ void BuildSettingsWidget::createConfiguration() void BuildSettingsWidget::cloneConfiguration() { - cloneConfiguration(currentBuildConfiguration()); + cloneConfiguration(m_buildConfiguration); } void BuildSettingsWidget::deleteConfiguration() { - deleteConfiguration(currentBuildConfiguration()); -} - -void BuildSettingsWidget::makeActive() -{ - m_target->setActiveBuildConfiguration(currentBuildConfiguration()); + deleteConfiguration(m_buildConfiguration); } void BuildSettingsWidget::cloneConfiguration(BuildConfiguration *sourceConfiguration) diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.h b/src/plugins/projectexplorer/buildsettingspropertiespage.h index 42ee349e9a9..05ceb158763 100644 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.h +++ b/src/plugins/projectexplorer/buildsettingspropertiespage.h @@ -44,6 +44,7 @@ QT_END_NAMESPACE namespace ProjectExplorer { class BuildConfiguration; +class BuildConfigWidget; class IBuildStepFactory; namespace Internal { @@ -88,20 +89,18 @@ public: ~BuildSettingsWidget(); void clear(); - void addSubWidget(const QString &name, QWidget *widget); - QList<QWidget *> subWidgets() const; + void addSubWidget(const QString &name, BuildConfigWidget *widget); + QList<BuildConfigWidget *> subWidgets() const; void setupUi(); private slots: void updateBuildSettings(); void currentIndexChanged(int index); - void currentBuildConfigurationChanged(); void createConfiguration(); void cloneConfiguration(); void deleteConfiguration(); - void makeActive(); void updateAddButtonMenu(); void addedBuildConfiguration(ProjectExplorer::BuildConfiguration *bc); @@ -112,8 +111,6 @@ private slots: private: void cloneConfiguration(BuildConfiguration *toClone); void deleteConfiguration(BuildConfiguration *toDelete); - QString buildConfigurationItemName(const BuildConfiguration *bc) const; - BuildConfiguration *currentBuildConfiguration() const; Target *m_target; BuildConfiguration *m_buildConfiguration; @@ -124,7 +121,7 @@ private: QComboBox *m_buildConfigurationComboBox; QMenu *m_addButtonMenu; - QList<QWidget *> m_subWidgets; + QList<BuildConfigWidget *> m_subWidgets; QList<QLabel *> m_labels; int m_leftMargin; -- GitLab