diff --git a/src/plugins/coreplugin/icore.cpp b/src/plugins/coreplugin/icore.cpp index 32a74650f18..85585277585 100644 --- a/src/plugins/coreplugin/icore.cpp +++ b/src/plugins/coreplugin/icore.cpp @@ -29,8 +29,11 @@ #include "icore.h" +#include #include +#include + /*! \namespace Core \brief The Core namespace contains all classes that make up the Core plugin @@ -508,6 +511,41 @@ QString ICore::userResourcePath() return urp; } +static QString compilerString() +{ +#if defined(Q_CC_CLANG) // must be before GNU, because clang claims to be GNU too + QString isAppleString; +#if defined(__apple_build_version__) // Apple clang has other version numbers + isAppleString = QLatin1String(" (Apple)"); +#endif + return QLatin1String("Clang " ) + QString::number(__clang_major__) + QLatin1Char('.') + + QString::number(__clang_minor__) + isAppleString; +#elif defined(Q_CC_GNU) + return QLatin1String("GCC " ) + QLatin1String(__VERSION__); +#elif defined(Q_CC_MSVC) + if (_MSC_VER >= 1500) // 1500: MSVC 2008, 1600: MSVC 2010, ... + return QLatin1String("MSVC ") + QString::number(2008 + 2 * ((_MSC_VER / 100) - 15)); +#endif + return QLatin1String(""); +} + +QString ICore::versionString() +{ + QString ideVersionDescription; +#ifdef IDE_VERSION_DESCRIPTION + ideVersionDescription = tr(" (%1)").arg(QLatin1String(Constants::IDE_VERSION_DESCRIPTION_STR)); +#endif + return tr("Qt Creator %1%2").arg(QLatin1String(Constants::IDE_VERSION_LONG), + ideVersionDescription); +} + +QString ICore::buildCompatibilityString() +{ + return tr("Based on Qt %1 (%2, %3 bit)").arg(QLatin1String(qVersion()), + compilerString(), + QString::number(QSysInfo::WordSize)); +} + IContext *ICore::currentContextObject() { return m_mainwindow->currentContextObject(); diff --git a/src/plugins/coreplugin/icore.h b/src/plugins/coreplugin/icore.h index 82de766924b..f8d8b261c26 100644 --- a/src/plugins/coreplugin/icore.h +++ b/src/plugins/coreplugin/icore.h @@ -113,6 +113,9 @@ public: static QString resourcePath(); static QString userResourcePath(); + static QString versionString(); + static QString buildCompatibilityString(); + static QWidget *mainWindow(); static Utils::AppMainWindow *appMainWindow(); static QStatusBar *statusBar(); diff --git a/src/plugins/coreplugin/versiondialog.cpp b/src/plugins/coreplugin/versiondialog.cpp index 9ece9693f33..00aee2737b0 100644 --- a/src/plugins/coreplugin/versiondialog.cpp +++ b/src/plugins/coreplugin/versiondialog.cpp @@ -31,10 +31,9 @@ #include #include +#include #include -#include - #include #include #include @@ -55,13 +54,6 @@ VersionDialog::VersionDialog(QWidget *parent) QGridLayout *layout = new QGridLayout(this); layout->setSizeConstraint(QLayout::SetFixedSize); - QString version = QLatin1String(Constants::IDE_VERSION_LONG); - - QString ideVersionDescription; -#ifdef IDE_VERSION_DESCRIPTION - ideVersionDescription = tr("(%1)").arg(QLatin1String(Constants::IDE_VERSION_DESCRIPTION_STR)); -#endif - QString ideRev; #ifdef IDE_REVISION //: This gets conditionally inserted as argument %8 into the description string. @@ -69,23 +61,24 @@ VersionDialog::VersionDialog(QWidget *parent) #endif const QString description = tr( - "

Qt Creator %1 %8

" - "Based on Qt %2 (%3 bit)
" + "

%1

" + "%2
" "
" - "Built on %4 at %5
" + "Built on %3 at %4
" "
" - "%9" + "%5" "
" "Copyright 2008-%6 %7. All rights reserved.
" "
" "The program is provided AS IS with NO WARRANTY OF ANY KIND, " "INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A " "PARTICULAR PURPOSE.
") - .arg(version, - QLatin1String(qVersion()), QString::number(QSysInfo::WordSize), - QLatin1String(__DATE__), QLatin1String(__TIME__), QLatin1String(Constants::IDE_YEAR), - (QLatin1String(Constants::IDE_AUTHOR)), ideVersionDescription, - ideRev); + .arg(ICore::versionString(), + ICore::buildCompatibilityString(), + QLatin1String(__DATE__), QLatin1String(__TIME__), + ideRev, + QLatin1String(Constants::IDE_YEAR), + QLatin1String(Constants::IDE_AUTHOR)); QLabel *copyRightLabel = new QLabel(description); copyRightLabel->setWordWrap(true);