7#if !defined(Q_OS_DARWIN) && !defined(Q_OS_WIN)
11#if defined(Q_OS_DARWIN)
12#include <QtCore/private/qcore_mac_p.h>
15#include <qversionnumber.h>
19#include <QtCore/private/qjnihelpers_p.h>
23#if defined(Q_OS_HARMONY)
24#include <QtCore/private/qcore_ohos_p.h>
25#include <QtCore/private/qohosmemoizingjsthreadfetcher_p.h>
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
116
117
118
119
120
123
124
125
126
127
128
135#if defined(Q_OS_HARMONY)
136static QOhosMemoizingJsThreadFetcher<std::array<
int, 3>> ohosVersionPropsFetcher(
137 [](QOhosJsState &jsState) -> std::optional<std::array<
int, 3>> {
138 auto deviceInfoObj = jsState.eval<QNapi::Object>(
"@ohos.deviceInfo");
139 return std::array<
int, 3>{{
140 deviceInfoObj.get<QNapi::Number>(
"majorVersion"),
141 deviceInfoObj.get<QNapi::Number>(
"seniorVersion"),
142 deviceInfoObj.get<QNapi::Number>(
"featureVersion"),
145 "DeviceInfo.*Version");
148#if !defined(Q_OS_DARWIN) && !defined(Q_OS_WIN)
154#ifndef QT_BOOTSTRAPPED
155 const QVersionNumber v = QVersionNumber::fromString(QJniObject::getStaticObjectField(
156 "android/os/Build$VERSION",
"RELEASE",
"Ljava/lang/String;").toString());
158 version.m_major = v.majorVersion();
159 version.m_minor = v.minorVersion();
160 version.m_micro = v.microVersion();
165 version.m_major = -1;
166 version.m_minor = -1;
168 static const struct {
208 const size_t versionIdx = QtAndroidPrivate::androidSdkVersion() - 1;
209 if (versionIdx <
sizeof(versions) /
sizeof(versions[0])) {
210 version.m_major = versions[versionIdx].major;
211 version.m_minor = versions[versionIdx].minor;
215 version.m_micro = versionIdx == 5 ? 1 : -1;
216#elif defined(Q_OS_HARMONY)
217 constexpr std::array<
int, 3> fallbackOhosVersionProps = {{-1, -1, -1}};
218 const auto ohosVersionProps = ohosVersionPropsFetcher.optValue().value_or(fallbackOhosVersionProps);
220 version.m_major = ohosVersionProps[0];
221 version.m_minor = ohosVersionProps[1];
222 version.m_micro = ohosVersionProps[2];
224 version.m_major = -1;
225 version.m_minor = -1;
226 version.m_micro = -1;
234 return lhs >= 0 && rhs >= 0 ? lhs - rhs : 0;
240 if (v1.m_major == v2.m_major) {
241 if (v1.m_minor == v2.m_minor) {
250
251
252
253
254
255
256
257
258
259
260
263
264
265
266
267
268
269
270
271
272
273
274
277
278
279
280
281
282
283
284
285
286
287
288
291
292
293
294
295
296
297
298
299
300
301
302
305
306
307
308
311
312
313
314
315
316
319
320
321
322
323
324
325
326
329
330
331
332
333
334
339 return QStringLiteral(
"Windows");
342 return QStringLiteral(
"Mac OS");
344 return QStringLiteral(
"Mac OS X");
346 return QStringLiteral(
"OS X");
347 return QStringLiteral(
"macOS");
351 return QStringLiteral(
"iPhone OS");
352 return QStringLiteral(
"iOS");
355 return QStringLiteral(
"tvOS");
357 return QStringLiteral(
"watchOS");
359 return QStringLiteral(
"visionOS");
361 return QStringLiteral(
"Android");
363 return QStringLiteral(
"HarmonyOS");
371
372
373
374
375
379 return std::find(types.begin(), types.end(), type()) != types.end();
384 return std::find(types.begin(), types.end(), type) != types.end();
387#ifndef QT_BOOTSTRAPPED
390
391
392
393
398
399
400
401
406
407
408
409
414
415
416
417
422
423
424
425
426
430
431
432
433
434
438
439
440
441
442
446
447
448
449
450
454
455
456
457
458
462
463
464
465
466
470
471
472
473
474
478
479
480
481
482
486
487
488
489
490
494
495
496
497
501
502
503
504
508
509
510
511
514
515
516
517
520
521
522
523
526
527
528
529
534
535
536
537
542
543
544
545
550
551
552
553
558
559
560
561
566
567
568
569
574
575
576
577
582
583
584
585
590
591
592
593
598
599
600
601
605
606
607
608
611
612
613
614
617
618
619
620
623
624
625
626
629
630
631
632
637
638
639
640
641
646
647
648
649
650
655
656
657
658
663
664
665
666
671
672
673
674
675
680
681
682
683
688
689
690
691
696
697
698
699
700
705
706
707
708
713
714
715
716
721
722
723
724
729
730
731
732
737
738
739
740
745
746
747
748
752
753
754
755
759
760
761
762
766
767
768
769
773#ifndef QT_NO_DEBUG_STREAM
776 QDebugStateSaver saver(debug);
778 debug <<
"QOperatingSystemVersion(" << ov.name()
constexpr int majorVersion() const
constexpr int minorVersion() const
constexpr int microVersion() const
static constexpr OSType currentType()
constexpr OSType type() const
static constexpr QOperatingSystemVersionBase Windows11_21H2
\variable QOperatingSystemVersion::Windows11_21H2
static constexpr QOperatingSystemVersionBase AndroidNougat
\variable QOperatingSystemVersion::AndroidNougat
static constexpr QOperatingSystemVersionBase Android10
\variable QOperatingSystemVersion::Android10
static constexpr QOperatingSystemVersionBase MacOSSierra
\variable QOperatingSystemVersion::MacOSSierra
static constexpr QOperatingSystemVersionBase OSXYosemite
\variable QOperatingSystemVersion::OSXYosemite
static constexpr QOperatingSystemVersionBase Android12L
\variable QOperatingSystemVersion::Android12L
static constexpr QOperatingSystemVersionBase Windows10_1909
\variable QOperatingSystemVersion::Windows10_1909
static constexpr QOperatingSystemVersionBase AndroidKitKat
\variable QOperatingSystemVersion::AndroidKitKat
static constexpr QOperatingSystemVersionBase AndroidJellyBean
\variable QOperatingSystemVersion::MacOSSonoma
static constexpr QOperatingSystemVersionBase AndroidOreo_MR1
\variable QOperatingSystemVersion::AndroidOreo_MR1
static constexpr QOperatingSystemVersionBase Android13
\variable QOperatingSystemVersion::Android13
static constexpr QOperatingSystemVersionBase MacOSCatalina
\variable QOperatingSystemVersion::MacOSCatalina
static constexpr QOperatingSystemVersionBase AndroidLollipop_MR1
\variable QOperatingSystemVersion::AndroidLollipop_MR1
static constexpr QOperatingSystemVersionBase Windows10
\variable QOperatingSystemVersion::Windows10
static constexpr QOperatingSystemVersionBase Windows10_1903
\variable QOperatingSystemVersion::Windows10_1903
static constexpr QOperatingSystemVersionBase Android12
\variable QOperatingSystemVersion::Android12
static constexpr QOperatingSystemVersionBase OSXElCapitan
\variable QOperatingSystemVersion::OSXElCapitan
static constexpr QOperatingSystemVersionBase MacOSMojave
\variable QOperatingSystemVersion::MacOSMojave
static constexpr QOperatingSystemVersionBase Windows8
\variable QOperatingSystemVersion::Windows8
static constexpr QOperatingSystemVersionBase AndroidNougat_MR1
\variable QOperatingSystemVersion::AndroidNougat_MR1
static constexpr QOperatingSystemVersionBase Windows10_2004
\variable QOperatingSystemVersion::Windows10_2004
static constexpr QOperatingSystemVersionBase MacOSHighSierra
\variable QOperatingSystemVersion::MacOSHighSierra
static constexpr QOperatingSystemVersionBase Windows10_21H2
\variable QOperatingSystemVersion::Windows10_21H2
static constexpr QOperatingSystemVersionBase AndroidMarshmallow
\variable QOperatingSystemVersion::AndroidMarshmallow
constexpr QOperatingSystemVersion(OSType osType, int vmajor, int vminor=-1, int vmicro=-1)
Constructs a QOperatingSystemVersion consisting of the OS type osType, and major, minor,...
static constexpr QOperatingSystemVersionBase AndroidJellyBean_MR2
\variable QOperatingSystemVersion::AndroidJellyBean_MR2
static constexpr QOperatingSystemVersionBase Windows10_20H2
\variable QOperatingSystemVersion::Windows10_20H2
static constexpr QOperatingSystemVersionBase AndroidPie
\variable QOperatingSystemVersion::AndroidPie
static constexpr QOperatingSystemVersionBase AndroidOreo
\variable QOperatingSystemVersion::AndroidOreo
static constexpr QOperatingSystemVersionBase OSXMavericks
\variable QOperatingSystemVersion::Windows11_23H2
static constexpr QOperatingSystemVersionBase MacOSMonterey
\variable QOperatingSystemVersion::MacOSMonterey
static constexpr QOperatingSystemVersionBase Windows7
\variable QOperatingSystemVersion::Windows7
static constexpr QOperatingSystemVersionBase MacOSVentura
\variable QOperatingSystemVersion::MacOSVentura
static constexpr QOperatingSystemVersionBase Windows10_1809
\variable QOperatingSystemVersion::Windows10_1809
static constexpr QOperatingSystemVersionBase AndroidJellyBean_MR1
\variable QOperatingSystemVersion::AndroidJellyBean_MR1
static constexpr QOperatingSystemVersionBase MacOSBigSur
\variable QOperatingSystemVersion::MacOSBigSur
static constexpr QOperatingSystemVersionBase AndroidLollipop
\variable QOperatingSystemVersion::AndroidLollipop
static constexpr QOperatingSystemVersionBase Windows8_1
\variable QOperatingSystemVersion::Windows8_1
static constexpr QOperatingSystemVersionBase Windows10_21H1
\variable QOperatingSystemVersion::Windows10_21H1
static constexpr QOperatingSystemVersionBase Windows11_22H2
\variable QOperatingSystemVersion::Windows11_22H2
static constexpr QOperatingSystemVersionBase Windows10_22H2
\variable QOperatingSystemVersion::Windows10_22H2
static constexpr QOperatingSystemVersionBase Android11
\variable QOperatingSystemVersion::Android11
static constexpr QOperatingSystemVersionBase Windows11
\variable QOperatingSystemVersion::Windows11
Combined button and popup list for selecting options.
static int compareVersionComponents(int lhs, int rhs) noexcept