diff options
-rw-r--r-- | subsurfacesysinfo.cpp | 153 | ||||
-rw-r--r-- | subsurfacesysinfo.h | 132 |
2 files changed, 17 insertions, 268 deletions
diff --git a/subsurfacesysinfo.cpp b/subsurfacesysinfo.cpp index 934e01320..a5fd1fe0d 100644 --- a/subsurfacesysinfo.cpp +++ b/subsurfacesysinfo.cpp @@ -46,6 +46,10 @@ #include <QFile> #include <QSettings> +#ifndef QStringLiteral +# define QStringLiteral QString::fromUtf8 +#endif + #ifdef Q_OS_UNIX #include <sys/utsname.h> #endif @@ -55,6 +59,8 @@ #include <CoreServices/CoreServices.h> #endif +// --- this is a copy of Qt 5.4's src/corelib/global/archdetect.cpp --- + // main part: processor type #if defined(Q_PROCESSOR_ALPHA) # define ARCH_PROCESSOR "alpha" @@ -126,24 +132,9 @@ #define ARCH_FULL ARCH_PROCESSOR "-" ARCH_ENDIANNESS "-" ARCH_POINTER ARCH_ABI +// --- end of archdetect.cpp --- -#if defined(Q_OS_OSX) - -SubsurfaceSysInfo::MacVersion SubsurfaceSysInfo::macVersion() -{ -#if defined(Q_OS_OSX) - SInt32 gestalt_version; - if (Gestalt(gestaltSystemVersionMinor, &gestalt_version) == noErr) { - // add 2 because OS X 10.0 is 0x02 in the enum - return SubsurfaceSysInfo::MacVersion(gestalt_version + 2); - } -#elif defined(Q_OS_IOS) - return qt_ios_version(); // qtcore_mac_objc.mm -#endif - return SubsurfaceSysInfo::MV_Unknown; -} -const SubsurfaceSysInfo::MacVersion SubsurfaceSysInfo::MacintoshVersion = SubsurfaceSysInfo::macVersion(); -#elif defined(Q_OS_WIN) || defined(Q_OS_CYGWIN) || defined(Q_OS_WINCE) || defined(Q_OS_WINRT) +#if defined(Q_OS_WIN) || defined(Q_OS_CYGWIN) || defined(Q_OS_WINCE) || defined(Q_OS_WINRT) QT_BEGIN_INCLUDE_NAMESPACE #include "qt_windows.h" @@ -181,118 +172,6 @@ static inline OSVERSIONINFO winOsVersion() } #endif // !Q_OS_WINRT -SubsurfaceSysInfo::WinVersion SubsurfaceSysInfo::windowsVersion() -{ -#ifndef VER_PLATFORM_WIN32s -#define VER_PLATFORM_WIN32s 0 -#endif -#ifndef VER_PLATFORM_WIN32_WINDOWS -#define VER_PLATFORM_WIN32_WINDOWS 1 -#endif -#ifndef VER_PLATFORM_WIN32_NT -#define VER_PLATFORM_WIN32_NT 2 -#endif -#ifndef VER_PLATFORM_WIN32_CE -#define VER_PLATFORM_WIN32_CE 3 -#endif - - static SubsurfaceSysInfo::WinVersion winver; - if (winver) - return winver; -#ifdef Q_OS_WINRT - winver = SubsurfaceSysInfo::WV_WINDOWS8; -#else - winver = SubsurfaceSysInfo::WV_NT; - const OSVERSIONINFO osver = winOsVersion(); -#ifdef Q_OS_WINCE - DWORD qt_cever = 0; - qt_cever = osver.dwMajorVersion * 100; - qt_cever += osver.dwMinorVersion * 10; -#endif - switch (osver.dwPlatformId) { - case VER_PLATFORM_WIN32s: - winver = SubsurfaceSysInfo::WV_32s; - break; - case VER_PLATFORM_WIN32_WINDOWS: - // We treat Windows Me (minor 90) the same as Windows 98 - if (osver.dwMinorVersion == 90) - winver = SubsurfaceSysInfo::WV_Me; - else if (osver.dwMinorVersion == 10) - winver = SubsurfaceSysInfo::WV_98; - else - winver = SubsurfaceSysInfo::WV_95; - break; -#ifdef Q_OS_WINCE - case VER_PLATFORM_WIN32_CE: - if (qt_cever >= 600) - winver = SubsurfaceSysInfo::WV_CE_6; - if (qt_cever >= 500) - winver = SubsurfaceSysInfo::WV_CE_5; - else if (qt_cever >= 400) - winver = SubsurfaceSysInfo::WV_CENET; - else - winver = SubsurfaceSysInfo::WV_CE; - break; -#endif - default: // VER_PLATFORM_WIN32_NT - if (osver.dwMajorVersion < 5) { - winver = SubsurfaceSysInfo::WV_NT; - } else if (osver.dwMajorVersion == 5 && osver.dwMinorVersion == 0) { - winver = SubsurfaceSysInfo::WV_2000; - } else if (osver.dwMajorVersion == 5 && osver.dwMinorVersion == 1) { - winver = SubsurfaceSysInfo::WV_XP; - } else if (osver.dwMajorVersion == 5 && osver.dwMinorVersion == 2) { - winver = SubsurfaceSysInfo::WV_2003; - } else if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 0) { - winver = SubsurfaceSysInfo::WV_VISTA; - } else if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 1) { - winver = SubsurfaceSysInfo::WV_WINDOWS7; - } else if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 2) { - winver = SubsurfaceSysInfo::WV_WINDOWS8; - } else if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 3) { - winver = SubsurfaceSysInfo::WV_WINDOWS8_1; - } else { - qWarning("Qt: Untested Windows version %d.%d detected!", - int(osver.dwMajorVersion), int(osver.dwMinorVersion)); - winver = SubsurfaceSysInfo::WV_NT_based; - } - } - -#ifdef QT_DEBUG - { - QByteArray override = qgetenv("QT_WINVER_OVERRIDE"); - if (override.isEmpty()) - return winver; - - if (override == "Me") - winver = SubsurfaceSysInfo::WV_Me; - if (override == "95") - winver = SubsurfaceSysInfo::WV_95; - else if (override == "98") - winver = SubsurfaceSysInfo::WV_98; - else if (override == "NT") - winver = SubsurfaceSysInfo::WV_NT; - else if (override == "2000") - winver = SubsurfaceSysInfo::WV_2000; - else if (override == "2003") - winver = SubsurfaceSysInfo::WV_2003; - else if (override == "XP") - winver = SubsurfaceSysInfo::WV_XP; - else if (override == "VISTA") - winver = SubsurfaceSysInfo::WV_VISTA; - else if (override == "WINDOWS7") - winver = SubsurfaceSysInfo::WV_WINDOWS7; - else if (override == "WINDOWS8") - winver = SubsurfaceSysInfo::WV_WINDOWS8; - else if (override == "WINDOWS8_1") - winver = SubsurfaceSysInfo::WV_WINDOWS8_1; - } -#endif -#endif // !Q_OS_WINRT - - return winver; -} - static const char *winVer_helper() { switch (int(SubsurfaceSysInfo::WindowsVersion)) { @@ -325,9 +204,6 @@ static const char *winVer_helper() // unknown, future version return 0; } - -const SubsurfaceSysInfo::WinVersion SubsurfaceSysInfo::WindowsVersion = SubsurfaceSysInfo::windowsVersion(); - #endif #if defined(Q_OS_UNIX) @@ -403,7 +279,7 @@ static QUnixOSVersion detectUnixVersion() } #endif -QString SubsurfaceSysInfo::unknownText() +static QString unknownText() { return QStringLiteral("unknown"); } @@ -525,15 +401,6 @@ QString SubsurfaceSysInfo::prettyOsName() // get the known codenames const char *basename = 0; switch (int(MacintoshVersion)) { - case MV_CHEETAH: - case MV_PUMA: - case MV_JAGUAR: - case MV_PANTHER: - case MV_TIGER: - // This version of Qt does not run on those versions of OS X - // so this case label will never be reached - Q_UNREACHABLE(); - break; case MV_LEOPARD: basename = "Mac OS X Leopard ("; break; @@ -549,7 +416,7 @@ QString SubsurfaceSysInfo::prettyOsName() case MV_MAVERICKS: basename = "OS X Mavericks ("; break; - case MV_YOSEMITE: + case 0x000C: // MV_YOSEMITE basename = "OS X Yosemite ("; break; } diff --git a/subsurfacesysinfo.h b/subsurfacesysinfo.h index 896ff5899..2cd8abace 100644 --- a/subsurfacesysinfo.h +++ b/subsurfacesysinfo.h @@ -43,9 +43,12 @@ #ifndef SUBSURFACESYSINFO_H #define SUBSURFACESYSINFO_H -#include <QtGlobal> +#include <QSysInfo> #if QT_VERSION < 0x050000 +#ifdef Q_OS_MACX +# define Q_OS_OSX +#endif #if defined(__arm__) || defined(__TARGET_ARCH_ARM) || defined(_M_ARM) || defined(__arm64__) # define Q_PROCESSOR_ARM # if defined(__arm64__) @@ -200,137 +203,16 @@ #endif #endif // Qt < 5.0.0 -class QString; -class SubsurfaceSysInfo { +class SubsurfaceSysInfo : public QSysInfo { public: - enum Sizes { - WordSize = (sizeof(void *)<<3) - }; - -#ifndef QStringLiteral - // no lambdas, not GCC, or GCC in C++98 mode with 4-byte wchar_t - // fallback, return a temporary QString - // source code is assumed to be encoded in UTF-8 - -# define QStringLiteral(str) QString::fromUtf8("" str "", sizeof(str) - 1) -#endif - - -#if defined(QT_BUILD_QMAKE) - enum Endian { - BigEndian, - LittleEndian - }; - /* needed to bootstrap qmake */ - static const int ByteOrder; -#elif defined(Q_BYTE_ORDER) - enum Endian { - BigEndian, - LittleEndian - -# ifdef Q_QDOC - , ByteOrder = <platform-dependent> -# elif Q_BYTE_ORDER == Q_BIG_ENDIAN - , ByteOrder = BigEndian -# elif Q_BYTE_ORDER == Q_LITTLE_ENDIAN - , ByteOrder = LittleEndian -# else -# error "Undefined byte order" -# endif - }; -#endif -#if defined(Q_OS_WIN) || defined(Q_OS_CYGWIN) - enum WinVersion { - WV_32s = 0x0001, - WV_95 = 0x0002, - WV_98 = 0x0003, - WV_Me = 0x0004, - WV_DOS_based= 0x000f, - - /* codenames */ - WV_NT = 0x0010, - WV_2000 = 0x0020, - WV_XP = 0x0030, - WV_2003 = 0x0040, - WV_VISTA = 0x0080, - WV_WINDOWS7 = 0x0090, - WV_WINDOWS8 = 0x00a0, - WV_WINDOWS8_1 = 0x00b0, - WV_NT_based = 0x00f0, - - /* version numbers */ - WV_4_0 = WV_NT, - WV_5_0 = WV_2000, - WV_5_1 = WV_XP, - WV_5_2 = WV_2003, - WV_6_0 = WV_VISTA, - WV_6_1 = WV_WINDOWS7, - WV_6_2 = WV_WINDOWS8, - WV_6_3 = WV_WINDOWS8_1, - - WV_CE = 0x0100, - WV_CENET = 0x0200, - WV_CE_5 = 0x0300, - WV_CE_6 = 0x0400, - WV_CE_based = 0x0f00 - }; - static const WinVersion WindowsVersion; - static WinVersion windowsVersion(); - -#endif -#ifdef Q_OS_MAC -# define Q_MV_IOS(major, minor) (QSysInfo::MV_IOS | major << 4 | minor) - enum MacVersion { - MV_Unknown = 0x0000, - - /* version */ - MV_9 = 0x0001, - MV_10_0 = 0x0002, - MV_10_1 = 0x0003, - MV_10_2 = 0x0004, - MV_10_3 = 0x0005, - MV_10_4 = 0x0006, - MV_10_5 = 0x0007, - MV_10_6 = 0x0008, - MV_10_7 = 0x0009, - MV_10_8 = 0x000A, - MV_10_9 = 0x000B, - MV_10_10 = 0x000C, - - /* codenames */ - MV_CHEETAH = MV_10_0, - MV_PUMA = MV_10_1, - MV_JAGUAR = MV_10_2, - MV_PANTHER = MV_10_3, - MV_TIGER = MV_10_4, - MV_LEOPARD = MV_10_5, - MV_SNOWLEOPARD = MV_10_6, - MV_LION = MV_10_7, - MV_MOUNTAINLION = MV_10_8, - MV_MAVERICKS = MV_10_9, - MV_YOSEMITE = MV_10_10, - - /* iOS */ - MV_IOS = 1 << 8, - MV_IOS_4_3 = Q_MV_IOS(4, 3), - MV_IOS_5_0 = Q_MV_IOS(5, 0), - MV_IOS_5_1 = Q_MV_IOS(5, 1), - MV_IOS_6_0 = Q_MV_IOS(6, 0), - MV_IOS_6_1 = Q_MV_IOS(6, 1), - MV_IOS_7_0 = Q_MV_IOS(7, 0), - MV_IOS_7_1 = Q_MV_IOS(7, 1), - MV_IOS_8_0 = Q_MV_IOS(8, 0) - }; - static const MacVersion MacintoshVersion; - static MacVersion macVersion(); -#endif - static QString unknownText(); +#if QT_VERSION <= 0x050400 static QString cpuArchitecture(); static QString fullCpuArchitecture(); static QString osType(); static QString osKernelVersion(); static QString osVersion(); static QString prettyOsName(); +#endif }; |