summaryrefslogtreecommitdiffstats
path: root/src/corelib/global/qoperatingsystemversion.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/global/qoperatingsystemversion.cpp')
-rw-r--r--src/corelib/global/qoperatingsystemversion.cpp152
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)
{