From 8147973965aa216b9af13fc569581dff6b58977e Mon Sep 17 00:00:00 2001 From: Kai Koehne <kai.koehne@nokia.com> Date: Fri, 20 May 2011 12:52:59 +0200 Subject: [PATCH] BuildConfiguration: Adapt name if Qt version changes Change-Id: I1a34cb51f73af9779d6bdb07324d5dadcb5585b3 --- .../projectexplorer/projectconfiguration.cpp | 11 +++++++++- .../projectexplorer/projectconfiguration.h | 2 ++ src/plugins/projectexplorer/target.cpp | 8 +++++++- .../qt-desktop/qt4desktoptargetfactory.cpp | 2 +- .../qt-desktop/qt4simulatortargetfactory.cpp | 2 +- .../qt-maemo/qt4maemotargetfactory.cpp | 2 +- .../qt-s60/qt4symbiantargetfactory.cpp | 2 +- .../qt4buildconfiguration.cpp | 14 +++++++++++-- .../qt4projectconfigwidget.cpp | 20 +++++++++++++++++++ src/plugins/qt4projectmanager/qt4target.cpp | 6 ++++-- src/plugins/qt4projectmanager/qt4target.h | 7 +++++++ 11 files changed, 66 insertions(+), 10 deletions(-) diff --git a/src/plugins/projectexplorer/projectconfiguration.cpp b/src/plugins/projectexplorer/projectconfiguration.cpp index 1c073ec4777..4210a439c62 100644 --- a/src/plugins/projectexplorer/projectconfiguration.cpp +++ b/src/plugins/projectexplorer/projectconfiguration.cpp @@ -75,7 +75,11 @@ void ProjectConfiguration::setDisplayName(const QString &name) { if (displayName() == name) return; - m_displayName = name; + if (name == m_defaultDisplayName) { + m_displayName.clear(); + } else { + m_displayName = name; + } emit displayNameChanged(); } @@ -89,6 +93,11 @@ void ProjectConfiguration::setDefaultDisplayName(const QString &name) emit displayNameChanged(); } +bool ProjectConfiguration::usesDefaultDisplayName() const +{ + return m_displayName.isEmpty(); +} + QVariantMap ProjectConfiguration::toMap() const { QVariantMap map; diff --git a/src/plugins/projectexplorer/projectconfiguration.h b/src/plugins/projectexplorer/projectconfiguration.h index 711a5da1c09..ec330467489 100644 --- a/src/plugins/projectexplorer/projectconfiguration.h +++ b/src/plugins/projectexplorer/projectconfiguration.h @@ -53,6 +53,8 @@ public: QString id() const; QString displayName() const; + + bool usesDefaultDisplayName() const; void setDisplayName(const QString &name); void setDefaultDisplayName(const QString &name); diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp index f69cbaa08d5..c0a7487461a 100644 --- a/src/plugins/projectexplorer/target.cpp +++ b/src/plugins/projectexplorer/target.cpp @@ -144,7 +144,13 @@ void Target::addBuildConfiguration(BuildConfiguration *configuration) foreach (const BuildConfiguration *bc, d->m_buildConfigurations) displayNames << bc->displayName(); configurationDisplayName = Project::makeUnique(configurationDisplayName, displayNames); - configuration->setDisplayName(configurationDisplayName); + if (configurationDisplayName != configuration->displayName()) { + if (configuration->usesDefaultDisplayName()) { + configuration->setDefaultDisplayName(configurationDisplayName); + } else { + configuration->setDisplayName(configurationDisplayName); + } + } // Make sure we have a sane tool chain if at all possible if (!configuration->toolChain() diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp index 6348328b5e7..48de0fff08f 100644 --- a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp +++ b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp @@ -177,7 +177,7 @@ ProjectExplorer::Target *Qt4DesktopTargetFactory::create(ProjectExplorer::Projec Qt4DesktopTarget *t = new Qt4DesktopTarget(static_cast<Qt4Project *>(parent), id); foreach (const BuildConfigurationInfo &info, infos) - t->addQt4BuildConfiguration(msgBuildConfigurationName(info), + t->addQt4BuildConfiguration(msgBuildConfigurationName(info), QString(), info.version, info.buildConfig, info.additionalArguments, info.directory); diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp index 5db9d283273..474a2eb0457 100644 --- a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp +++ b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp @@ -162,7 +162,7 @@ ProjectExplorer::Target *Qt4SimulatorTargetFactory::create(ProjectExplorer::Proj Qt4SimulatorTarget *t = new Qt4SimulatorTarget(static_cast<Qt4Project *>(parent), id); foreach (const BuildConfigurationInfo &info, infos) - t->addQt4BuildConfiguration(msgBuildConfigurationName(info), info.version, info.buildConfig, + t->addQt4BuildConfiguration(msgBuildConfigurationName(info), QString(), info.version, info.buildConfig, info.additionalArguments, info.directory); t->addDeployConfiguration(t->createDeployConfiguration(ProjectExplorer::Constants::DEFAULT_DEPLOYCONFIGURATION_ID)); diff --git a/src/plugins/qt4projectmanager/qt-maemo/qt4maemotargetfactory.cpp b/src/plugins/qt4projectmanager/qt-maemo/qt4maemotargetfactory.cpp index ebbb55f079c..588d4fc1a74 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/qt4maemotargetfactory.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/qt4maemotargetfactory.cpp @@ -212,7 +212,7 @@ ProjectExplorer::Target *Qt4MaemoTargetFactory::create(ProjectExplorer::Project Q_ASSERT(target); foreach (const BuildConfigurationInfo &info, infos) - target->addQt4BuildConfiguration(msgBuildConfigurationName(info), + target->addQt4BuildConfiguration(msgBuildConfigurationName(info), QString(), info.version, info.buildConfig, info.additionalArguments, info.directory); diff --git a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp index 2b22ecbcb40..cfd029d4f6c 100644 --- a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp @@ -219,7 +219,7 @@ ProjectExplorer::Target *Qt4SymbianTargetFactory::create(ProjectExplorer::Projec return 0; Qt4SymbianTarget *t = new Qt4SymbianTarget(static_cast<Qt4Project *>(parent), id); foreach (const BuildConfigurationInfo &info, infos) - t->addQt4BuildConfiguration(msgBuildConfigurationName(info), + t->addQt4BuildConfiguration(msgBuildConfigurationName(info), QString(), info.version, info.buildConfig, info.additionalArguments, info.directory); diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp index cddecb48e43..4b505cc7ec6 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp @@ -734,14 +734,24 @@ BuildConfiguration *Qt4BuildConfigurationFactory::create(ProjectExplorer::Target return 0; //: Debug build configuration. We recommend not translating it. - BuildConfiguration *bc = qt4Target->addQt4BuildConfiguration(tr("%1 Debug").arg(buildConfigurationName), + QString defaultDebugName = tr("%1 Debug").arg(version->displayName()); + QString customDebugName; + if (buildConfigurationName != version->displayName()) + customDebugName = tr("%1 Debug").arg(buildConfigurationName); + + BuildConfiguration *bc = qt4Target->addQt4BuildConfiguration(defaultDebugName, customDebugName, version, (version->defaultBuildConfig() | QtSupport::BaseQtVersion::DebugBuild), QString(), QString()); if (qt4Target->id() != Constants::S60_EMULATOR_TARGET_ID) { //: Release build configuration. We recommend not translating it. - bc = qt4Target->addQt4BuildConfiguration(tr("%1 Release").arg(buildConfigurationName), + QString defaultReleaseName = tr("%1 Release").arg(version->displayName()); + QString customReleaseName; + if (buildConfigurationName != version->displayName()) + customReleaseName = tr("%1 Release").arg(buildConfigurationName); + + bc = qt4Target->addQt4BuildConfiguration(defaultReleaseName, customReleaseName, version, (version->defaultBuildConfig() & ~QtSupport::BaseQtVersion::DebugBuild), QString(), QString()); diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp index f0cf14bcd9a..898832c00c0 100644 --- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp +++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp @@ -473,9 +473,29 @@ void Qt4ProjectConfigWidget::qtVersionSelected(const QString &) QtSupport::QtVersionManager *vm = QtSupport::QtVersionManager::instance(); QtSupport::BaseQtVersion *newQtVersion = vm->version(newQtVersionId); + if (newQtVersion) { + const QString qtVersionName = newQtVersion->displayName(); + QString defaultConfigName = (m_buildConfiguration->buildType() & BuildConfiguration::Debug) ? + //: Name of a debug build configuration to created by a project wizard, %1 being the Qt version name. We recommend not translating it. + tr("%1 Debug").arg(qtVersionName) : + //: Name of a release build configuration to created by a project wizard, %1 being the Qt version name. We recommend not translating it. + tr("%1 Release").arg(qtVersionName); + + // make name unique + QStringList displayNames; + foreach (const BuildConfiguration *bc, m_buildConfiguration->target()->buildConfigurations()) { + if (bc != m_buildConfiguration) + displayNames << bc->displayName(); + } + defaultConfigName = Project::makeUnique(defaultConfigName, displayNames); + + m_buildConfiguration->setDefaultDisplayName(defaultConfigName); + } + m_ignoreChange = true; m_buildConfiguration->setQtVersion(newQtVersion); m_ignoreChange = false; + m_ui->qtVersionComboBox->setToolTip(newQtVersion ? newQtVersion->toHtml(false) : QString()); updateShadowBuildUi(); diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp index 27bd17f6ced..106bbb1aa5c 100644 --- a/src/plugins/qt4projectmanager/qt4target.cpp +++ b/src/plugins/qt4projectmanager/qt4target.cpp @@ -277,7 +277,8 @@ void Qt4BaseTarget::removeUnconfiguredCustomExectutableRunConfigurations() } } -Qt4BuildConfiguration *Qt4BaseTarget::addQt4BuildConfiguration(QString displayName, QtSupport::BaseQtVersion *qtversion, +Qt4BuildConfiguration *Qt4BaseTarget::addQt4BuildConfiguration(QString defaultDisplayName, + QString displayName, QtSupport::BaseQtVersion *qtversion, QtSupport::BaseQtVersion::QmakeBuildConfigs qmakeBuildConfiguration, QString additionalArguments, QString directory) @@ -287,7 +288,8 @@ Qt4BuildConfiguration *Qt4BaseTarget::addQt4BuildConfiguration(QString displayNa // Add the buildconfiguration Qt4BuildConfiguration *bc = new Qt4BuildConfiguration(this); - bc->setDefaultDisplayName(displayName); + bc->setDefaultDisplayName(defaultDisplayName); + bc->setDisplayName(displayName); ProjectExplorer::BuildStepList *buildSteps = bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); ProjectExplorer::BuildStepList *cleanSteps = bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN); diff --git a/src/plugins/qt4projectmanager/qt4target.h b/src/plugins/qt4projectmanager/qt4target.h index 90bb416194c..7ae9c9cc819 100644 --- a/src/plugins/qt4projectmanager/qt4target.h +++ b/src/plugins/qt4projectmanager/qt4target.h @@ -77,9 +77,16 @@ public: // This is the same for almost all Qt4Targets // so for now offer a convience function +<<<<<<< HEAD Qt4BuildConfiguration *addQt4BuildConfiguration(QString displayName, QtSupport::BaseQtVersion *qtversion, QtSupport::BaseQtVersion::QmakeBuildConfigs qmakeBuildConfiguration, +======= + Qt4BuildConfiguration *addQt4BuildConfiguration(QString defaultDisplayName, + QString displayName, + BaseQtVersion *qtversion, + BaseQtVersion::QmakeBuildConfigs qmakeBuildConfiguration, +>>>>>>> BuildConfiguration: Adapt name if Qt version changes QString additionalArguments, QString directory); -- GitLab