diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp index e95e0429b705bb1fa861fa78474b64431c03e0b5..cf50b4a2be1976d26a675488dbc6d51875e550fe 100644 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp @@ -157,16 +157,8 @@ void BuildSettingsWidget::setupUi() vbox->addLayout(hbox); } - m_makeActiveLabel = new QLabel(this); - m_makeActiveLabel->setContentsMargins(m_leftMargin, 4, 0, 4); - m_makeActiveLabel->setVisible(false); - vbox->addWidget(m_makeActiveLabel); - m_buildConfiguration = m_project->activeBuildConfiguration(); - connect(m_makeActiveLabel, SIGNAL(linkActivated(QString)), - this, SLOT(makeActive())); - connect(m_buildConfigurationComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(currentIndexChanged(int))); @@ -178,8 +170,7 @@ void BuildSettingsWidget::setupUi() // this, SLOT(buildConfigurationDisplayNameChanged(const QString &))); connect(m_project, SIGNAL(activeBuildConfigurationChanged()), - this, SLOT(checkMakeActiveLabel())); - + this, SLOT(updateConfigurationComboBoxLabels())); connect(m_project, SIGNAL(addedBuildConfiguration(ProjectExplorer::BuildConfiguration*)), this, SLOT(addedBuildConfiguration(ProjectExplorer::BuildConfiguration*))); @@ -214,9 +205,8 @@ void BuildSettingsWidget::buildConfigurationDisplayNameChanged() { for (int i = 0; i < m_buildConfigurationComboBox->count(); ++i) { BuildConfiguration *bc = m_buildConfigurationComboBox->itemData(i).value<BuildConfiguration *>(); - m_buildConfigurationComboBox->setItemText(i, bc->displayName()); + m_buildConfigurationComboBox->setItemText(i, buildConfigurationItemName(bc)); } - checkMakeActiveLabel(); } void BuildSettingsWidget::addSubWidget(const QString &name, QWidget *widget) @@ -253,11 +243,6 @@ QList<QWidget *> BuildSettingsWidget::subWidgets() const return m_subWidgets; } -void BuildSettingsWidget::makeActive() -{ - m_project->setActiveBuildConfiguration(m_buildConfiguration); -} - void BuildSettingsWidget::updateAddButtonMenu() { m_addButtonMenu->clear(); @@ -297,23 +282,23 @@ void BuildSettingsWidget::updateBuildSettings() // Add tree items foreach (BuildConfiguration *bc, m_project->buildConfigurations()) { - m_buildConfigurationComboBox->addItem(bc->displayName(), QVariant::fromValue<BuildConfiguration *>(bc)); + m_buildConfigurationComboBox->addItem(buildConfigurationItemName(bc), QVariant::fromValue<BuildConfiguration *>(bc)); if (bc == m_buildConfiguration) m_buildConfigurationComboBox->setCurrentIndex(m_buildConfigurationComboBox->count() - 1); } m_buildConfigurationComboBox->blockSignals(blocked); - activeBuildConfigurationChanged(); + currentBuildConfigurationChanged(); } void BuildSettingsWidget::currentIndexChanged(int index) { m_buildConfiguration = m_buildConfigurationComboBox->itemData(index).value<BuildConfiguration *>(); - activeBuildConfigurationChanged(); + currentBuildConfigurationChanged(); } -void BuildSettingsWidget::activeBuildConfigurationChanged() +void BuildSettingsWidget::currentBuildConfigurationChanged() { for (int i = 0; i < m_buildConfigurationComboBox->count(); ++i) { if (m_buildConfigurationComboBox->itemData(i).value<BuildConfiguration *>() == m_buildConfiguration) { @@ -326,18 +311,23 @@ void BuildSettingsWidget::activeBuildConfigurationChanged() buildStepWidget->init(m_buildConfiguration); } } - checkMakeActiveLabel(); } -void BuildSettingsWidget::checkMakeActiveLabel() +void BuildSettingsWidget::updateConfigurationComboBoxLabels() { - m_makeActiveLabel->setVisible(false); - if (!m_project->activeBuildConfiguration() || m_project->activeBuildConfiguration() != m_buildConfiguration) { - m_makeActiveLabel->setText(tr("<a href=\"#\">Make %1 active.</a>").arg(m_buildConfiguration->displayName())); - m_makeActiveLabel->setVisible(true); + for (int i = 0; i < m_buildConfigurationComboBox->count(); ++i) { + BuildConfiguration *bc = m_buildConfigurationComboBox->itemData(i).value<BuildConfiguration *>(); + m_buildConfigurationComboBox->setItemText(i, buildConfigurationItemName(bc)); } } +QString BuildSettingsWidget::buildConfigurationItemName(const BuildConfiguration *bc) const +{ + if (bc == m_project->activeBuildConfiguration()) + return tr("%1 (Active)").arg(bc->displayName()); + return bc->displayName(); +} + void BuildSettingsWidget::createConfiguration() { QAction *action = qobject_cast<QAction *>(sender()); diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.h b/src/plugins/projectexplorer/buildsettingspropertiespage.h index 9749ca6fa66c2c752aa0ac170befc8f792c64cf5..80121aa46fadf805088ac41adbd77e0517a3e81b 100644 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.h +++ b/src/plugins/projectexplorer/buildsettingspropertiespage.h @@ -91,21 +91,22 @@ public: private slots: void updateBuildSettings(); void currentIndexChanged(int index); - void activeBuildConfigurationChanged(); + void currentBuildConfigurationChanged(); void createConfiguration(); void cloneConfiguration(); void deleteConfiguration(); void updateAddButtonMenu(); - void checkMakeActiveLabel(); - void makeActive(); void addedBuildConfiguration(ProjectExplorer::BuildConfiguration *bc); void removedBuildConfiguration(ProjectExplorer::BuildConfiguration *bc); void buildConfigurationDisplayNameChanged(); + void updateConfigurationComboBoxLabels(); + private: void cloneConfiguration(BuildConfiguration *toClone); void deleteConfiguration(BuildConfiguration *toDelete); + QString buildConfigurationItemName(const BuildConfiguration *bc) const; Project *m_project; BuildConfiguration *m_buildConfiguration; @@ -114,7 +115,6 @@ private: QPushButton *m_removeButton; QComboBox *m_buildConfigurationComboBox; QMenu *m_addButtonMenu; - QLabel *m_makeActiveLabel; QList<QWidget *> m_subWidgets; QList<QLabel *> m_labels; diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.cpp b/src/plugins/projectexplorer/runsettingspropertiespage.cpp index a5a28aad54e129bc13c8111f65461cb80f09b5df..2d8b1a647048c16f539d0e942b34d6603d203ed1 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/runsettingspropertiespage.cpp @@ -63,7 +63,8 @@ class RunConfigurationsModel : public QAbstractListModel { public: RunConfigurationsModel(QObject *parent = 0) - : QAbstractListModel(parent) + : QAbstractListModel(parent), + m_activeRunConfiguration(0) {} int rowCount(const QModelIndex &parent = QModelIndex()) const; @@ -73,9 +74,11 @@ public: void setRunConfigurations(const QList<RunConfiguration *> &runConfigurations); QList<RunConfiguration *> runConfigurations() const { return m_runConfigurations; } void displayNameChanged(RunConfiguration *rc); + void activeRunConfigurationChanged(RunConfiguration *rc); private: QList<RunConfiguration *> m_runConfigurations; + RunConfiguration *m_activeRunConfiguration; }; } // namespace Internal @@ -158,12 +161,21 @@ void RunConfigurationsModel::displayNameChanged(RunConfiguration *rc) } } +void RunConfigurationsModel::activeRunConfigurationChanged(RunConfiguration *rc) +{ + m_activeRunConfiguration = rc; + emit dataChanged(index(0, 0), index(m_runConfigurations.size()-1, 0)); +} + QVariant RunConfigurationsModel::data(const QModelIndex &index, int role) const { if (role == Qt::DisplayRole) { const int row = index.row(); if (row < m_runConfigurations.size()) { - return m_runConfigurations.at(row)->displayName(); + RunConfiguration *rc = m_runConfigurations.at(row); + if (rc == m_activeRunConfiguration) + return tr("%1 (Active)").arg(rc->displayName()); + return rc->displayName(); } } @@ -194,10 +206,6 @@ RunSettingsWidget::RunSettingsWidget(Project *project) m_ui->removeToolButton->setText(tr("Remove")); m_ui->runConfigurationCombo->setModel(m_runConfigurationsModel); - m_makeActiveLabel = new QLabel(this); - m_makeActiveLabel->setVisible(false); - layout()->addWidget(m_makeActiveLabel); - connect(m_addMenu, SIGNAL(aboutToShow()), this, SLOT(aboutToShowAddMenu())); connect(m_ui->runConfigurationCombo, SIGNAL(currentIndexChanged(int)), @@ -209,12 +217,8 @@ RunSettingsWidget::RunSettingsWidget(Project *project) this, SLOT(initRunConfigurationComboBox())); connect(m_project, SIGNAL(addedRunConfiguration(ProjectExplorer::RunConfiguration *)), this, SLOT(initRunConfigurationComboBox())); - connect(m_project, SIGNAL(activeRunConfigurationChanged()), - this, SLOT(updateMakeActiveLabel())); - - connect(m_makeActiveLabel, SIGNAL(linkActivated(QString)), - this, SLOT(makeActive())); + this, SLOT(activeRunConfigurationChanged())); initRunConfigurationComboBox(); const QList<RunConfiguration *> runConfigurations = m_project->runConfigurations(); @@ -298,7 +302,12 @@ void RunSettingsWidget::initRunConfigurationComboBox() else m_ui->runConfigurationCombo->setCurrentIndex(runConfigurations.indexOf(activeRunConfiguration)); m_ui->removeToolButton->setEnabled(runConfigurations.size() > 1); - updateMakeActiveLabel(); + activeRunConfigurationChanged(); +} + +void RunSettingsWidget::activeRunConfigurationChanged() +{ + m_runConfigurationsModel->activeRunConfigurationChanged(m_project->activeRunConfiguration()); } void RunSettingsWidget::showRunConfigurationWidget(int index) @@ -316,39 +325,10 @@ void RunSettingsWidget::showRunConfigurationWidget(int index) delete m_runConfigurationWidget; m_runConfigurationWidget = selectedRunConfiguration->configurationWidget(); layout()->addWidget(m_runConfigurationWidget); - updateMakeActiveLabel(); -} - -void RunSettingsWidget::updateMakeActiveLabel() -{ - m_makeActiveLabel->setVisible(false); - RunConfiguration *rc = 0; - int index = m_ui->runConfigurationCombo->currentIndex(); - if (index != -1) { - rc = m_runConfigurationsModel->runConfigurations().at(index); - } - if (rc) { - if (m_project->activeRunConfiguration() != rc) { - m_makeActiveLabel->setText(tr("<a href=\"#\">Make %1 active.</a>").arg(rc->displayName())); - m_makeActiveLabel->setVisible(true); - } - } -} - -void RunSettingsWidget::makeActive() -{ - RunConfiguration *rc = 0; - int index = m_ui->runConfigurationCombo->currentIndex(); - if (index != -1) { - rc = m_runConfigurationsModel->runConfigurations().at(index); - } - if (rc) - m_project->setActiveRunConfiguration(rc); } void RunSettingsWidget::displayNameChanged() { RunConfiguration *rc = qobject_cast<RunConfiguration *>(sender()); m_runConfigurationsModel->displayNameChanged(rc); - updateMakeActiveLabel(); } diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.h b/src/plugins/projectexplorer/runsettingspropertiespage.h index 8d070d1fa620e1542326bdd7a6e00c6efa210682..c7efeb8f63a8f4766ee6a60852bb79727300fa4e 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.h +++ b/src/plugins/projectexplorer/runsettingspropertiespage.h @@ -86,13 +86,11 @@ private slots: void removeRunConfiguration(); void displayNameChanged(); void initRunConfigurationComboBox(); - void updateMakeActiveLabel(); - void makeActive(); + void activeRunConfigurationChanged(); private: Project *m_project; RunConfigurationsModel *m_runConfigurationsModel; Ui::RunSettingsPropertiesPage *m_ui; - QLabel *m_makeActiveLabel; QWidget *m_runConfigurationWidget; QMenu *m_addMenu; };