From fb4d4531e7c5587653ddffba2ff1715cf3295076 Mon Sep 17 00:00:00 2001 From: dt Date: Wed, 7 Oct 2009 13:18:26 +0200 Subject: Make a function out of duplicated code. (cherry picked from commit ea56717101c48de6b2a47271663f7516c5240e68) --- src/plugins/projectexplorer/buildconfiguration.h | 1 + src/plugins/projectexplorer/project.cpp | 41 ++++++++++++------------ src/plugins/projectexplorer/project.h | 1 + 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h index 306242598d..15d71a8553 100644 --- a/src/plugins/projectexplorer/buildconfiguration.h +++ b/src/plugins/projectexplorer/buildconfiguration.h @@ -59,6 +59,7 @@ public: QMap toMap() const; void setValuesFromMap(QMap map); + private: void setName(const QString &name); diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index 94a9585b02..32d3fbdc4f 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -104,6 +104,18 @@ void Project::moveCleanStepUp(int position) m_cleanSteps.insert(position - 1, bs); } +QString Project::makeUnique(const QString &preferedName, const QStringList &usedNames) +{ + if (!usedNames.contains(preferedName)) + return preferedName; + int i = 2; + QString tryName = preferedName + QString::number(i); + while (usedNames.contains(tryName)) + tryName = preferedName + QString::number(++i); + return tryName; +} + + void Project::addBuildConfiguration(BuildConfiguration *configuration) { QStringList buildConfigurationNames; @@ -112,12 +124,7 @@ void Project::addBuildConfiguration(BuildConfiguration *configuration) // Check that the internal name is not taken and use a different one otherwise QString configurationName = configuration->name(); - if (buildConfigurationNames.contains(configurationName)) { - int i = 2; - while (buildConfigurationNames.contains(configurationName + QString::number(i))) - ++i; - configurationName += QString::number(i); - } + configurationName = makeUnique(configurationName, buildConfigurationNames); configuration->setName(configurationName); // Check that we don't have a configuration with the same displayName @@ -125,12 +132,7 @@ void Project::addBuildConfiguration(BuildConfiguration *configuration) QStringList displayNames; foreach (const BuildConfiguration *bc, m_buildConfigurationValues) displayNames << bc->displayName(); - if (displayNames.contains(configurationDisplayName)) { - int i = 2; - while (displayNames.contains(configurationDisplayName + QString::number(i))) - ++i; - configurationDisplayName += QString::number(i); - } + configurationDisplayName = makeUnique(configurationDisplayName, displayNames); configuration->setDisplayName(configurationDisplayName); // add it @@ -511,19 +513,18 @@ EditorConfiguration *Project::editorConfiguration() const void Project::setDisplayNameFor(BuildConfiguration *configuration, const QString &displayName) { + if (configuration->displayName() == displayName) + return; + QString dn = displayName; QStringList displayNames; foreach (BuildConfiguration *bc, m_buildConfigurationValues) { if (bc != configuration) displayNames << bc->displayName(); } - if (displayNames.contains(displayName)) { - int i = 2; - while (displayNames.contains(displayName + QString::number(i))) - ++i; - configuration->setDisplayName(displayName + QString::number(i)); - } else { - configuration->setDisplayName(displayName); - } + dn = makeUnique(displayName, displayNames); + + configuration->setDisplayName(displayName); + emit buildConfigurationDisplayNameChanged(configuration->name()); } diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h index dbdd542d70..0df80346bb 100644 --- a/src/plugins/projectexplorer/project.h +++ b/src/plugins/projectexplorer/project.h @@ -183,6 +183,7 @@ protected: virtual bool restoreSettingsImpl(PersistentSettingsReader &reader); private: + static QString makeUnique(const QString &preferedName, const QStringList &usedNames); QList m_buildSteps; QList m_cleanSteps; QMap m_values; -- cgit v1.2.3