diff --git a/src/plugins/projectexplorer/kit.cpp b/src/plugins/projectexplorer/kit.cpp index 03249ba7951..ace5407d198 100644 --- a/src/plugins/projectexplorer/kit.cpp +++ b/src/plugins/projectexplorer/kit.cpp @@ -53,6 +53,22 @@ const char ICON_KEY[] = "PE.Profile.Icon"; namespace ProjectExplorer { +// -------------------------------------------------------------------- +// Helper: +// -------------------------------------------------------------------- + +static QString cleanName(const QString &name) +{ + QString result = name; + result.replace(QRegExp("\\W"), QLatin1String("_")); + result.replace(QRegExp("_+"), "_"); // compact _ + result.remove(QRegExp("^_*")); // remove leading _ + result.remove(QRegExp("_+$")); // remove trailing _ + if (result.isEmpty()) + result = QLatin1String("unknown"); + return result; +} + // ------------------------------------------------------------------------- // KitPrivate // ------------------------------------------------------------------------- @@ -185,6 +201,22 @@ void Kit::setDisplayName(const QString &name) kitUpdated(); } +QString Kit::fileSystemFriendlyName() const +{ + QString name = cleanName(displayName()); + foreach (Kit *i, KitManager::instance()->kits()) { + if (i == this) + continue; + if (name == cleanName(i->displayName())) { + // append part of the kit id: That should be unique enough;-) + // Leading { will be turned into _ which should be fine. + name = cleanName(name + QLatin1Char('_') + (id().toString().left(7))); + break; + } + } + return name; +} + bool Kit::isAutoDetected() const { return d->m_autodetected; diff --git a/src/plugins/projectexplorer/kit.h b/src/plugins/projectexplorer/kit.h index 82e303c0c14..d275fb59137 100644 --- a/src/plugins/projectexplorer/kit.h +++ b/src/plugins/projectexplorer/kit.h @@ -64,6 +64,8 @@ public: QString displayName() const; void setDisplayName(const QString &name); + QString fileSystemFriendlyName() const; + bool isAutoDetected() const; Core::Id id() const; diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index eed22d62ae9..f9d33f6505f 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -1412,7 +1412,8 @@ QString Qt4Project::buildNameFor(const Kit *k) { if (!k) return QLatin1String("unknown"); - return QString::fromLatin1(k->id().name()).mid(31, 6); // part of the UUID, should be pretty unique;-) + + return k->fileSystemFriendlyName(); } Target *Qt4Project::createTarget(Kit *k, const QList &infoList)