From a9bb3a03df87d02ad709f76a6cc850278add96ce Mon Sep 17 00:00:00 2001 From: con <qtc-committer@nokia.com> Date: Fri, 12 Jun 2009 12:58:02 +0200 Subject: [PATCH] Separate active run config setting in project mode. And add a sort of isEnabled functionality for run configs. This doesn't do much yet though, and is not updated correctly either. --- .../projectexplorer/runconfiguration.h | 2 + .../runsettingspropertiespage.cpp | 56 +++++++++++-------- .../runsettingspropertiespage.h | 4 +- .../runsettingspropertiespage.ui | 23 ++++++++ .../qt4projectmanager/qt4runconfiguration.cpp | 11 ++++ .../qt4projectmanager/qt4runconfiguration.h | 1 + 6 files changed, 74 insertions(+), 23 deletions(-) diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h index 71c78897695..2c3e264058d 100644 --- a/src/plugins/projectexplorer/runconfiguration.h +++ b/src/plugins/projectexplorer/runconfiguration.h @@ -75,6 +75,8 @@ public: QString name() const; void setName(const QString &name); + virtual bool isEnabled() const { return true; } + // Returns the widget used to configure this run configuration. Ownership is transferred to the caller // rename to createConfigurationWidget virtual QWidget *configurationWidget() = 0; diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.cpp b/src/plugins/projectexplorer/runsettingspropertiespage.cpp index f86c59997d1..9e9df69fb5a 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/runsettingspropertiespage.cpp @@ -69,6 +69,7 @@ public: QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; void setRunConfigurations(const QList<QSharedPointer<RunConfiguration> > &runConfigurations); + QList<QSharedPointer<RunConfiguration> > runConfigurations() const { return m_runConfigurations; } void nameChanged(RunConfiguration *rc); private: @@ -172,6 +173,7 @@ void RunConfigurationsModel::setRunConfigurations(const QList<QSharedPointer<Run RunSettingsWidget::RunSettingsWidget(Project *project) : m_project(project), m_runConfigurationsModel(new RunConfigurationsModel(this)), + m_enabledRunConfigurationsModel(new RunConfigurationsModel(this)), m_runConfigurationWidget(0) { m_ui = new Ui::RunSettingsPropertiesPage; @@ -181,20 +183,17 @@ RunSettingsWidget::RunSettingsWidget(Project *project) m_ui->addToolButton->setMenu(m_addMenu); m_ui->removeToolButton->setIcon(QIcon(Core::Constants::ICON_MINUS)); m_ui->runConfigurationCombo->setModel(m_runConfigurationsModel); + m_ui->activeRunConfigurationCombo->setModel(m_enabledRunConfigurationsModel); connect(m_addMenu, SIGNAL(aboutToShow()), this, SLOT(aboutToShowAddMenu())); connect(m_ui->runConfigurationCombo, SIGNAL(currentIndexChanged(int)), + this, SLOT(showRunConfigurationWidget(int))); + connect(m_ui->activeRunConfigurationCombo, SIGNAL(activated(int)), this, SLOT(activateRunConfiguration(int))); connect(m_ui->removeToolButton, SIGNAL(clicked(bool)), this, SLOT(removeRunConfiguration())); - connect(m_project, SIGNAL(removedRunConfiguration(QString)), - this, SLOT(initRunConfigurationComboBox())); - - connect(m_project, SIGNAL(addedRunConfiguration(QString)), - this, SLOT(initRunConfigurationComboBox())); - connect(m_project, SIGNAL(activeRunConfigurationChanged()), this, SLOT(activeRunConfigurationChanged())); @@ -251,15 +250,16 @@ void RunSettingsWidget::addRunConfiguration() if (!newRC) return; m_project->addRunConfiguration(newRC); - m_project->setActiveRunConfiguration(newRC); initRunConfigurationComboBox(); + m_ui->runConfigurationCombo->setCurrentIndex( + m_runConfigurationsModel->runConfigurations().indexOf(newRC)); connect(newRC.data(), SIGNAL(nameChanged()), this, SLOT(nameChanged())); } void RunSettingsWidget::removeRunConfiguration() { int index = m_ui->runConfigurationCombo->currentIndex(); - QSharedPointer<RunConfiguration> rc = m_project->runConfigurations().at(index); + QSharedPointer<RunConfiguration> rc = m_runConfigurationsModel->runConfigurations().at(index); disconnect(rc.data(), SIGNAL(nameChanged()), this, SLOT(nameChanged())); m_project->removeRunConfiguration(rc); initRunConfigurationComboBox(); @@ -268,25 +268,32 @@ void RunSettingsWidget::removeRunConfiguration() void RunSettingsWidget::initRunConfigurationComboBox() { const QList<QSharedPointer<RunConfiguration> > runConfigurations = m_project->runConfigurations(); - QSharedPointer<RunConfiguration> activeRunConfiguration = m_project->activeRunConfiguration(); + const QSharedPointer<RunConfiguration> activeRunConfiguration = m_project->activeRunConfiguration(); + const QSharedPointer<RunConfiguration> currentSelection = + (m_ui->runConfigurationCombo->currentIndex() >= 0) ? + m_runConfigurationsModel->runConfigurations().at(m_ui->runConfigurationCombo->currentIndex()) + : QSharedPointer<RunConfiguration>(0); m_runConfigurationsModel->setRunConfigurations(runConfigurations); - // Make sure the active run configuration is selected in the combo + if (runConfigurations.contains(currentSelection)) + m_ui->runConfigurationCombo->setCurrentIndex(runConfigurations.indexOf(currentSelection)); + else + m_ui->runConfigurationCombo->setCurrentIndex(runConfigurations.indexOf(activeRunConfiguration)); + QList<QSharedPointer<RunConfiguration> > enabledRunConfigurations; for (int i = 0; i < runConfigurations.size(); ++i) { - if (runConfigurations.at(i) == activeRunConfiguration) - m_ui->runConfigurationCombo->setCurrentIndex(i); + if (runConfigurations.at(i)->isEnabled()) + enabledRunConfigurations.append(runConfigurations.at(i)); } + m_enabledRunConfigurationsModel->setRunConfigurations(enabledRunConfigurations); + m_ui->activeRunConfigurationCombo->setCurrentIndex( + enabledRunConfigurations.indexOf(activeRunConfiguration)); m_ui->removeToolButton->setEnabled(runConfigurations.size() > 1); } -void RunSettingsWidget::activateRunConfiguration(int index) +void RunSettingsWidget::showRunConfigurationWidget(int index) { Q_ASSERT(m_project); - const QList<QSharedPointer<RunConfiguration> > runConfigurations = m_project->runConfigurations(); - Q_ASSERT(index < runConfigurations.size()); - QSharedPointer<RunConfiguration> selectedRunConfiguration = runConfigurations.at(index); - - // Change the active run configuration of the project - m_project->setActiveRunConfiguration(selectedRunConfiguration); + QSharedPointer<RunConfiguration> selectedRunConfiguration = + m_runConfigurationsModel->runConfigurations().at(index); // Update the run configuration configuration widget delete m_runConfigurationWidget; @@ -294,12 +301,17 @@ void RunSettingsWidget::activateRunConfiguration(int index) m_ui->groupBox->layout()->addWidget(m_runConfigurationWidget); } +void RunSettingsWidget::activateRunConfiguration(int index) +{ + m_project->setActiveRunConfiguration(m_enabledRunConfigurationsModel->runConfigurations().at(index)); +} + void RunSettingsWidget::activeRunConfigurationChanged() { QSharedPointer<RunConfiguration> active = m_project->activeRunConfiguration(); - delete m_runConfigurationWidget; - m_runConfigurationWidget = active->configurationWidget(); - m_ui->groupBox->layout()->addWidget(m_runConfigurationWidget); + int index = m_enabledRunConfigurationsModel->runConfigurations().indexOf(active); + if (index >= 0) + m_ui->activeRunConfigurationCombo->setCurrentIndex(index); } void RunSettingsWidget::nameChanged() diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.h b/src/plugins/projectexplorer/runsettingspropertiespage.h index 37d9141fc97..97e32829a53 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.h +++ b/src/plugins/projectexplorer/runsettingspropertiespage.h @@ -72,16 +72,18 @@ public: ~RunSettingsWidget(); private slots: - void activateRunConfiguration(int index); + void showRunConfigurationWidget(int index); void aboutToShowAddMenu(); void addRunConfiguration(); void removeRunConfiguration(); void nameChanged(); void initRunConfigurationComboBox(); + void activateRunConfiguration(int index); void activeRunConfigurationChanged(); private: Project *m_project; RunConfigurationsModel *m_runConfigurationsModel; + RunConfigurationsModel *m_enabledRunConfigurationsModel; Ui::RunSettingsPropertiesPage *m_ui; QWidget *m_runConfigurationWidget; QMenu *m_addMenu; diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.ui b/src/plugins/projectexplorer/runsettingspropertiespage.ui index 64c343a6685..c83a5a7709c 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.ui +++ b/src/plugins/projectexplorer/runsettingspropertiespage.ui @@ -62,6 +62,29 @@ </property> </widget> </item> + <item> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>Active run configuration:</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="activeRunConfigurationCombo"> + <property name="maximumSize"> + <size> + <width>500</width> + <height>16777215</height> + </size> + </property> + <property name="sizeAdjustPolicy"> + <enum>QComboBox::AdjustToContents</enum> + </property> + <property name="minimumContentsLength"> + <number>15</number> + </property> + </widget> + </item> <item> <spacer name="horizontalSpacer"> <property name="orientation"> diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp index 4e3eda3ca88..d616e4cd158 100644 --- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp @@ -91,6 +91,17 @@ QString Qt4RunConfiguration::type() const return "Qt4ProjectManager.Qt4RunConfiguration"; } +bool Qt4RunConfiguration::isEnabled() const +{ +#ifdef QTCREATOR_WITH_S60 + Qt4Project *pro = qobject_cast<Qt4Project*>(project()); + QTC_ASSERT(pro, return false); + ProjectExplorer::ToolChain::ToolChainType type = pro->toolChainType(pro->activeBuildConfiguration()); + return type != ProjectExplorer::ToolChain::WINSCW && type != ProjectExplorer::ToolChain::GCCE; +#else + return true; +#endif +} ////// /// Qt4RunConfigurationWidget diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.h b/src/plugins/qt4projectmanager/qt4runconfiguration.h index d72671d4848..db7b015d42b 100644 --- a/src/plugins/qt4projectmanager/qt4runconfiguration.h +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.h @@ -63,6 +63,7 @@ public: virtual ~Qt4RunConfiguration(); virtual QString type() const; + virtual bool isEnabled() const; virtual QWidget *configurationWidget(); virtual void save(ProjectExplorer::PersistentSettingsWriter &writer) const; virtual void restore(const ProjectExplorer::PersistentSettingsReader &reader); -- GitLab