From 8fd395feb45f7f64e47191fdf22ca4d5ba0dc970 Mon Sep 17 00:00:00 2001 From: con <qtc-committer@nokia.com> Date: Tue, 23 Jun 2009 14:14:29 +0200 Subject: [PATCH] Update the enabled state of run configurations on toolchain change. And if Qt version changed. --- src/plugins/projectexplorer/project.h | 1 + .../projectexplorer/projectexplorer.cpp | 20 ++++++++++-------- .../runsettingspropertiespage.cpp | 2 ++ .../qt4projectmanager/qt-s60/qt-s60-todo.txt | 5 +---- src/plugins/qt4projectmanager/qt4project.cpp | 21 +++++++++++++++++-- src/plugins/qt4projectmanager/qt4project.h | 1 + 6 files changed, 35 insertions(+), 15 deletions(-) diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h index 0af783ec4fb..63737f6932e 100644 --- a/src/plugins/projectexplorer/project.h +++ b/src/plugins/projectexplorer/project.h @@ -148,6 +148,7 @@ signals: void fileListChanged(); void activeBuildConfigurationChanged(); void activeRunConfigurationChanged(); + void runConfigurationsEnabledStateChanged(); void removedRunConfiguration(const QString &name); void addedRunConfiguration(const QString &name); // This signal is jut there for updating the tree list in the buildsettings wizard diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index bbab5eca3bf..ccaa5750dfe 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1887,15 +1887,17 @@ void ProjectExplorerPlugin::populateRunConfigurationMenu() foreach (const Project *pro, m_session->projects()) { foreach (QSharedPointer<RunConfiguration> runConfiguration, pro->runConfigurations()) { - const QString title = QString("%1 (%2)").arg(pro->name(), runConfiguration->name()); - QAction *act = new QAction(title, m_runConfigurationActionGroup); - act->setCheckable(true); - act->setData(qVariantFromValue(runConfiguration)); - act->setChecked(runConfiguration == activeRunConfiguration); - m_runConfigurationMenu->addAction(act); - if (debug) - qDebug() << "RunConfiguration" << runConfiguration << "project:" << pro->name() - << "active:" << (runConfiguration == activeRunConfiguration); + if (runConfiguration->isEnabled()) { + const QString title = QString("%1 (%2)").arg(pro->name(), runConfiguration->name()); + QAction *act = new QAction(title, m_runConfigurationActionGroup); + act->setCheckable(true); + act->setData(qVariantFromValue(runConfiguration)); + act->setChecked(runConfiguration == activeRunConfiguration); + m_runConfigurationMenu->addAction(act); + if (debug) + qDebug() << "RunConfiguration" << runConfiguration << "project:" << pro->name() + << "active:" << (runConfiguration == activeRunConfiguration); + } } } diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.cpp b/src/plugins/projectexplorer/runsettingspropertiespage.cpp index 9e9df69fb5a..4a63d1aaa9e 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/runsettingspropertiespage.cpp @@ -196,6 +196,8 @@ RunSettingsWidget::RunSettingsWidget(Project *project) connect(m_project, SIGNAL(activeRunConfigurationChanged()), this, SLOT(activeRunConfigurationChanged())); + connect(m_project, SIGNAL(runConfigurationsEnabledStateChanged()), + this, SLOT(initRunConfigurationComboBox())); initRunConfigurationComboBox(); const QList<QSharedPointer<RunConfiguration> > runConfigurations = m_project->runConfigurations(); diff --git a/src/plugins/qt4projectmanager/qt-s60/qt-s60-todo.txt b/src/plugins/qt4projectmanager/qt-s60/qt-s60-todo.txt index 7dc3c3c6072..38a01bdbb7a 100644 --- a/src/plugins/qt4projectmanager/qt-s60/qt-s60-todo.txt +++ b/src/plugins/qt4projectmanager/qt-s60/qt-s60-todo.txt @@ -7,16 +7,13 @@ * QtVersion: * gui for overriding the default make target if necessary, make arguments --> make options - * more general "debug / release" configuration to be used in toolchain??? * build parser should be defined/created by toolchain, not make step * Debugging helpers * must probably be compiled for different toolchains * Run Configurations - * enabled property doesn't update correctly - * missing signals qtVersionChanged + toolChainChanged - * handling of active run config getting disabled + * handling of active run config getting disabled not optimal yet * Run on device * makesis, signsis and applicationinstaller don't report errors back diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index d3587f60229..bdddeeb6df9 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -834,6 +834,7 @@ int Qt4Project::qtVersionId(const QString &buildConfiguration) const void Qt4Project::setQtVersion(const QString &buildConfiguration, int id) { setValue(buildConfiguration, "QtVersionId", id); + updateActiveRunConfiguration(); } void Qt4Project::setToolChainType(const QString &buildConfiguration, ProjectExplorer::ToolChain::ToolChainType type) @@ -841,16 +842,32 @@ void Qt4Project::setToolChainType(const QString &buildConfiguration, ProjectExpl setValue(buildConfiguration, "ToolChain", (int)type); delete m_toolChain; m_toolChain = 0; + updateActiveRunConfiguration(); +} + +void Qt4Project::updateActiveRunConfiguration() +{ + if (!activeRunConfiguration()->isEnabled()) { + foreach (QSharedPointer<RunConfiguration> runConfiguration, runConfigurations()) { + if (runConfiguration->isEnabled()) { + setActiveRunConfiguration(runConfiguration); + } + } + } + emit runConfigurationsEnabledStateChanged(); + emit invalidateCachedTargetInformation(); } ProjectExplorer::ToolChain::ToolChainType Qt4Project::toolChainType(const QString &buildConfiguration) const { - ProjectExplorer::ToolChain::ToolChainType type = + const ProjectExplorer::ToolChain::ToolChainType originalType = (ProjectExplorer::ToolChain::ToolChainType)value(buildConfiguration, "ToolChain").toInt(); + ProjectExplorer::ToolChain::ToolChainType type = originalType; const QtVersion *version = qtVersion(buildConfiguration); if (!version->possibleToolChainTypes().contains(type)) // use default tool chain type = version->defaultToolchainType(); - const_cast<Qt4Project *>(this)->setToolChainType(buildConfiguration, type); + if (type != originalType) + const_cast<Qt4Project *>(this)->setToolChainType(buildConfiguration, type); return type; } diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h index ce108142194..3c3ef898033 100644 --- a/src/plugins/qt4projectmanager/qt4project.h +++ b/src/plugins/qt4projectmanager/qt4project.h @@ -233,6 +233,7 @@ private: void addDefaultBuild(); static QString qmakeVarName(ProjectExplorer::FileType type); + void updateActiveRunConfiguration(); Qt4Manager *m_manager; Internal::Qt4ProFileNode *m_rootProjectNode; -- GitLab