From a923cee383e28dbeeb24c97dbba3b756f6a85d82 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 20 May 2011 15:52:58 +0200 Subject: [PATCH] Qt version: Add base name of Qt folder to generated display name. With some smartness to skip over bin, qtbase and display usr as 'System'. Introduce BaseQtVersion::defaultDisplayName(). Change-Id: I5249bbd7102f40441e7a873d861c525e4194d74f Reviewed-on: http://codereview.qt.nokia.com/43 Reviewed-by: Daniel Teske --- src/plugins/qt4projectmanager/baseqtversion.cpp | 32 ++++++++++++++++++++-- src/plugins/qt4projectmanager/baseqtversion.h | 4 +++ src/plugins/qt4projectmanager/qtversionmanager.cpp | 2 +- 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/plugins/qt4projectmanager/baseqtversion.cpp b/src/plugins/qt4projectmanager/baseqtversion.cpp index e2e83df962..5666faaaa5 100644 --- a/src/plugins/qt4projectmanager/baseqtversion.cpp +++ b/src/plugins/qt4projectmanager/baseqtversion.cpp @@ -50,6 +50,7 @@ #include #include +#include #include #include @@ -183,7 +184,7 @@ BaseQtVersion::BaseQtVersion(const QString &qmakeCommand, bool isAutodetected, c m_qmakeIsExecutable(false) { ctor(qmakeCommand); - setDisplayName(qtVersionString()); + setDisplayName(defaultDisplayName(qtVersionString(), qmakeCommand, false)); } BaseQtVersion::BaseQtVersion() @@ -222,10 +223,37 @@ void BaseQtVersion::ctor(const QString& qmakePath) m_sourcePath.clear(); } - BaseQtVersion::~BaseQtVersion() { +} + +QString BaseQtVersion::defaultDisplayName(const QString &versionString, const QString &qmakePath, + bool fromPath) +{ + QString location; + if (qmakePath.isEmpty()) { + location = QCoreApplication::translate("QtVersion", ""); + } else { + // Deduce a description from '/foo/qt-folder/[qtbase]/bin/qmake' -> '/foo/qt-folder'. + // '/usr' indicates System Qt 4.X on Linux. + QDir dir = QFileInfo(qmakePath).absoluteDir(); + do { + const QString dirName = dir.dirName(); + if (dirName == QLatin1String("usr")) { // System-installed Qt. + location = QCoreApplication::translate("QtVersion", "System"); + break; + } + if (dirName.compare(QLatin1String("bin"), Qt::CaseInsensitive) + && dirName.compare(QLatin1String("qtbase"), Qt::CaseInsensitive)) { + location = dirName; + break; + } + } while (dir.cdUp()); + } + return fromPath ? + QCoreApplication::translate("QtVersion", "Qt %1 in PATH (%2)").arg(versionString, location) : + QCoreApplication::translate("QtVersion", "Qt %1 (%2)").arg(versionString, location); } void BaseQtVersion::setId(int id) diff --git a/src/plugins/qt4projectmanager/baseqtversion.h b/src/plugins/qt4projectmanager/baseqtversion.h index 60c9f9a49e..12773a0cdb 100644 --- a/src/plugins/qt4projectmanager/baseqtversion.h +++ b/src/plugins/qt4projectmanager/baseqtversion.h @@ -189,6 +189,10 @@ public: virtual QtConfigWidget *createConfigurationWidget() const; + static QString defaultDisplayName(const QString &versionString, + const QString &qmakePath, + bool fromPath = false); + protected: BaseQtVersion(); BaseQtVersion(const QString &path, bool isAutodetected = false, const QString &autodetectionSource = QString()); diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp index 669ad7381e..bc14aadfdf 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.cpp +++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp @@ -374,7 +374,7 @@ void QtVersionManager::findSystemQt() return; BaseQtVersion *version = QtVersionFactory::createQtVersionFromQMakePath(systemQMakePath); - version->setDisplayName(tr("Qt in PATH (%1)").arg(version->qtVersionString())); + version->setDisplayName(BaseQtVersion::defaultDisplayName(version->qtVersionString(), systemQMakePath, true)); m_versions.insert(version->uniqueId(), version); } -- 2.11.0