summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordt <qtc-committer@nokia.com>2009-10-07 13:18:26 +0200
committercon <qtc-committer@nokia.com>2009-10-09 10:41:59 +0200
commitfb4d4531e7c5587653ddffba2ff1715cf3295076 (patch)
treed78481cc618db0c70c536dbc575efd1597884602
parentb519844164d7b6be786484879accc8bb3260982f (diff)
downloadqt-creator-fb4d4531e7c5587653ddffba2ff1715cf3295076.tar.gz
Make a function out of duplicated code.
(cherry picked from commit ea56717101c48de6b2a47271663f7516c5240e68)
-rw-r--r--src/plugins/projectexplorer/buildconfiguration.h1
-rw-r--r--src/plugins/projectexplorer/project.cpp41
-rw-r--r--src/plugins/projectexplorer/project.h1
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;