diff options
Diffstat (limited to 'src/corelib/global/qoperatingsystemversion.cpp')
-rw-r--r-- | src/corelib/global/qoperatingsystemversion.cpp | 152 |
1 files changed, 112 insertions, 40 deletions
diff --git a/src/corelib/global/qoperatingsystemversion.cpp b/src/corelib/global/qoperatingsystemversion.cpp index 58c683e54d..cf6063fca0 100644 --- a/src/corelib/global/qoperatingsystemversion.cpp +++ b/src/corelib/global/qoperatingsystemversion.cpp @@ -15,6 +15,7 @@ #include <qdebug.h> #ifdef Q_OS_ANDROID +#include <QtCore/private/qjnihelpers_p.h> #include <QJniObject> #endif @@ -33,7 +34,7 @@ QT_BEGIN_NAMESPACE operating system version (as opposed to the kernel version number or marketing version). - Presently, Android, Apple Platforms (iOS, macOS, tvOS, and watchOS), + Presently, Android, Apple Platforms (iOS, macOS, tvOS, watchOS, and visionOS), and Windows are supported. The \a majorVersion(), \a minorVersion(), and \a microVersion() functions @@ -97,6 +98,7 @@ QT_BEGIN_NAMESPACE \value MacOS The Apple macOS operating system. \value TvOS The Apple tvOS operating system. \value WatchOS The Apple watchOS operating system. + \value VisionOS The Apple visionOS operating system. \value Windows The Microsoft Windows operating system. \value Unknown An unknown or unsupported operating system. @@ -110,15 +112,11 @@ QT_BEGIN_NAMESPACE */ /*! + \fn QOperatingSystemVersion::current() Returns a QOperatingSystemVersion indicating the current OS and its version number. \sa currentType() */ -QOperatingSystemVersion QOperatingSystemVersion::current() -{ - return QOperatingSystemVersionBase::current(); -} - QOperatingSystemVersionBase QOperatingSystemVersionBase::current() { static const QOperatingSystemVersionBase v = current_impl(); @@ -179,11 +177,13 @@ QOperatingSystemVersionBase QOperatingSystemVersionBase::current_impl() { 9, 0 }, // API level 28 { 10, 0 }, // API level 29 { 11, 0 }, // API level 30 + { 12, 0 }, // API level 31 + { 12, 0 }, // API level 32 + { 13, 0 }, // API level 33 }; // This will give us at least the first 2 version components - const size_t versionIdx = size_t(QJniObject::getStaticField<jint>( - "android/os/Build$VERSION", "SDK_INT")) - 1; + const size_t versionIdx = QtAndroidPrivate::androidSdkVersion() - 1; if (versionIdx < sizeof(versions) / sizeof(versions[0])) { version.m_major = versions[versionIdx].major; version.m_minor = versions[versionIdx].minor; @@ -200,13 +200,13 @@ QOperatingSystemVersionBase QOperatingSystemVersionBase::current_impl() } #endif -static inline int compareVersionComponents(int lhs, int rhs) +static inline int compareVersionComponents(int lhs, int rhs) noexcept { return lhs >= 0 && rhs >= 0 ? lhs - rhs : 0; } int QOperatingSystemVersionBase::compare(QOperatingSystemVersionBase v1, - QOperatingSystemVersionBase v2) + QOperatingSystemVersionBase v2) noexcept { if (v1.m_major == v2.m_major) { if (v1.m_minor == v2.m_minor) { @@ -303,11 +303,6 @@ int QOperatingSystemVersionBase::compare(QOperatingSystemVersionBase v1, \sa type() */ -QString QOperatingSystemVersion::name() const -{ - return QOperatingSystemVersionBase::name(); -} - QString QOperatingSystemVersionBase::name(QOperatingSystemVersionBase osversion) { switch (osversion.type()) { @@ -331,6 +326,8 @@ QString QOperatingSystemVersionBase::name(QOperatingSystemVersionBase osversion) return QStringLiteral("tvOS"); case QOperatingSystemVersionBase::WatchOS: return QStringLiteral("watchOS"); + case QOperatingSystemVersionBase::VisionOS: + return QStringLiteral("visionOS"); case QOperatingSystemVersionBase::Android: return QStringLiteral("Android"); case QOperatingSystemVersionBase::Unknown: @@ -356,6 +353,8 @@ bool QOperatingSystemVersionBase::isAnyOfType(std::initializer_list<OSType> type return std::find(types.begin(), types.end(), type) != types.end(); } +#ifndef QT_BOOTSTRAPPED + /*! \variable QOperatingSystemVersion::Windows7 \brief a version corresponding to Windows 7 (version 6.1). @@ -382,7 +381,7 @@ const QOperatingSystemVersion QOperatingSystemVersion::Windows8_1 = /*! \variable QOperatingSystemVersion::Windows10 - \brief a version corresponding to Windows 10 (version 10.0). + \brief a version corresponding to general Windows 10 (version 10.0). \since 5.9 */ const QOperatingSystemVersion QOperatingSystemVersion::Windows10 = @@ -390,51 +389,95 @@ const QOperatingSystemVersion QOperatingSystemVersion::Windows10 = /*! \variable QOperatingSystemVersion::Windows10_1809 - \brief a version corresponding to Windows 10 1809 (version 10.0.17763). + \brief a version corresponding to Windows 10 October 2018 Update + Version 1809 (version 10.0.17763). \since 6.3 */ +const QOperatingSystemVersionBase QOperatingSystemVersion::Windows10_1809; /*! \variable QOperatingSystemVersion::Windows10_1903 - \brief a version corresponding to Windows 10 1903 (version 10.0.18362). + \brief a version corresponding to Windows 10 May 2019 Update + Version 1903 (version 10.0.18362). \since 6.3 */ +const QOperatingSystemVersionBase QOperatingSystemVersion::Windows10_1903; /*! \variable QOperatingSystemVersion::Windows10_1909 - \brief a version corresponding to Windows 10 1909 (version 10.0.18363). + \brief a version corresponding to Windows 10 November 2019 Update + Version 1909 (version 10.0.18363). \since 6.3 */ +const QOperatingSystemVersionBase QOperatingSystemVersion::Windows10_1909; /*! \variable QOperatingSystemVersion::Windows10_2004 - \brief a version corresponding to Windows 10 2004 (version 10.0.19041). + \brief a version corresponding to Windows 10 May 2020 Update + Version 2004 (version 10.0.19041). \since 6.3 */ +const QOperatingSystemVersionBase QOperatingSystemVersion::Windows10_2004; /*! \variable QOperatingSystemVersion::Windows10_20H2 - \brief a version corresponding to Windows 10 20H2 (version 10.0.19042). + \brief a version corresponding to Windows 10 October 2020 Update + Version 20H2 (version 10.0.19042). \since 6.3 */ +const QOperatingSystemVersionBase QOperatingSystemVersion::Windows10_20H2; /*! \variable QOperatingSystemVersion::Windows10_21H1 - \brief a version corresponding to Windows 10 21H1 (version 10.0.19043). + \brief a version corresponding to Windows 10 May 2021 Update + Version 21H1 (version 10.0.19043). \since 6.3 */ +const QOperatingSystemVersionBase QOperatingSystemVersion::Windows10_21H1; /*! \variable QOperatingSystemVersion::Windows10_21H2 - \brief a version corresponding to Windows 10 21H2 (version 10.0.19044). + \brief a version corresponding to Windows 10 November 2021 Update + Version 21H2 (version 10.0.19044). \since 6.3 */ +const QOperatingSystemVersionBase QOperatingSystemVersion::Windows10_21H2; + +/*! + \variable QOperatingSystemVersion::Windows10_22H2 + \brief a version corresponding to Windows 10 October 2022 Update + Version 22H2 (version 10.0.19045). + \since 6.5 + */ +const QOperatingSystemVersionBase QOperatingSystemVersion::Windows10_22H2; /*! \variable QOperatingSystemVersion::Windows11 - \brief a version corresponding to Windows 11 (version 10.0.22000). + \brief a version corresponding to the initial release of Windows 11 + (version 10.0.22000). \since 6.3 */ +const QOperatingSystemVersionBase QOperatingSystemVersion::Windows11; + +/*! + \variable QOperatingSystemVersion::Windows11_21H2 + \brief a version corresponding to Windows 11 Version 21H2 (version 10.0.22000). + \since 6.4 + */ +const QOperatingSystemVersionBase QOperatingSystemVersion::Windows11_21H2; + +/*! + \variable QOperatingSystemVersion::Windows11_22H2 + \brief a version corresponding to Windows 11 Version 22H2 (version 10.0.22621). + \since 6.4 + */ +const QOperatingSystemVersionBase QOperatingSystemVersion::Windows11_22H2; + +/*! + \variable QOperatingSystemVersion::Windows11_23H2 + \brief a version corresponding to Windows 11 Version 23H2 (version 10.0.22631). + \since 6.6 + */ /*! \variable QOperatingSystemVersion::OSXMavericks @@ -494,24 +537,11 @@ const QOperatingSystemVersion QOperatingSystemVersion::MacOSCatalina = /*! \variable QOperatingSystemVersion::MacOSBigSur - \brief a version corresponding to macOS Big Sur - - The actual version number depends on whether the application was built - using the Xcode 12 SDK. If it was, the version number corresponds - to macOS 11.0. If not it will correspond to macOS 10.16. - - By comparing QOperatingSystemVersion::current() to this constant - you will always end up comparing to the right version number. + \brief a version corresponding to macOS Big Sur (version 11). \since 6.0 */ -const QOperatingSystemVersion QOperatingSystemVersion::MacOSBigSur = [] { -#if defined(Q_OS_DARWIN) - if (QMacVersion::buildSDK(QMacVersion::ApplicationBinary) >= QOperatingSystemVersion(QOperatingSystemVersion::MacOS, 10, 16)) - return QOperatingSystemVersion(QOperatingSystemVersion::MacOS, 11, 0); - else -#endif - return QOperatingSystemVersion(QOperatingSystemVersion::MacOS, 10, 16); -}(); +const QOperatingSystemVersion QOperatingSystemVersion::MacOSBigSur = + QOperatingSystemVersion(QOperatingSystemVersion::MacOS, 11, 0); /*! \variable QOperatingSystemVersion::MacOSMonterey @@ -522,6 +552,19 @@ const QOperatingSystemVersion QOperatingSystemVersion::MacOSMonterey = QOperatingSystemVersion(QOperatingSystemVersion::MacOS, 12, 0); /*! + \variable QOperatingSystemVersion::MacOSVentura + \brief a version corresponding to macOS Ventura (version 13). + \since 6.4 +*/ +const QOperatingSystemVersionBase QOperatingSystemVersion::MacOSVentura; + +/*! + \variable QOperatingSystemVersion::MacOSSonoma + \brief a version corresponding to macOS Sonoma (version 14). + \since 6.5 +*/ + +/*! \variable QOperatingSystemVersion::AndroidJellyBean \brief a version corresponding to Android Jelly Bean (version 4.1, API level 16). \since 5.9 @@ -637,6 +680,35 @@ const QOperatingSystemVersion QOperatingSystemVersion::Android10 = const QOperatingSystemVersion QOperatingSystemVersion::Android11 = QOperatingSystemVersion(QOperatingSystemVersion::Android, 11, 0); +/*! + \variable QOperatingSystemVersion::Android12 + \brief a version corresponding to Android 12 (version 12.0, API level 31). + \since 6.5 + */ +const QOperatingSystemVersionBase QOperatingSystemVersion::Android12; + +/*! + \variable QOperatingSystemVersion::Android12L + \brief a version corresponding to Android 12L (version 12.0, API level 32). + \since 6.5 + */ +const QOperatingSystemVersionBase QOperatingSystemVersion::Android12L; + +/*! + \variable QOperatingSystemVersion::Android13 + \brief a version corresponding to Android 13 (version 13.0, API level 33). + \since 6.5 + */ +const QOperatingSystemVersionBase QOperatingSystemVersion::Android13; + +/*! + \variable QOperatingSystemVersion::Android14 + \brief a version corresponding to Android 14 (version 14.0, API level 34). + \since 6.7 + */ + +#endif // !QT_BOOTSTRAPPED + #ifndef QT_NO_DEBUG_STREAM QDebug operator<<(QDebug debug, const QOperatingSystemVersion &ov) { |