diff options
author | dt <qtc-committer@nokia.com> | 2009-10-07 13:18:26 +0200 |
---|---|---|
committer | con <qtc-committer@nokia.com> | 2009-10-09 10:41:59 +0200 |
commit | fb4d4531e7c5587653ddffba2ff1715cf3295076 (patch) | |
tree | d78481cc618db0c70c536dbc575efd1597884602 | |
parent | b519844164d7b6be786484879accc8bb3260982f (diff) |
Make a function out of duplicated code.
(cherry picked from commit ea56717101c48de6b2a47271663f7516c5240e68)
-rw-r--r-- | src/plugins/projectexplorer/buildconfiguration.h | 1 | ||||
-rw-r--r-- | src/plugins/projectexplorer/project.cpp | 41 | ||||
-rw-r--r-- | 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<QString, QVariant> toMap() const; void setValuesFromMap(QMap<QString, QVariant> 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<BuildStep *> m_buildSteps; QList<BuildStep *> m_cleanSteps; QMap<QString, QVariant> m_values; |