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>
24#include <QtCore/private/qcore_ohos_p.h>
31
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
115
116
117
118
119
122
123
124
125
126
127
134#if !defined(Q_OS_DARWIN) && !defined(Q_OS_WIN)
140#ifndef QT_BOOTSTRAPPED
141 const QVersionNumber v = QVersionNumber::fromString(QJniObject::getStaticObjectField(
142 "android/os/Build$VERSION",
"RELEASE",
"Ljava/lang/String;").toString());
144 version.m_major = v.majorVersion();
145 version.m_minor = v.minorVersion();
146 version.m_micro = v.microVersion();
151 version.m_major = -1;
152 version.m_minor = -1;
154 static const struct {
194 const size_t versionIdx = QtAndroidPrivate::androidSdkVersion() - 1;
195 if (versionIdx <
sizeof(versions) /
sizeof(versions[0])) {
196 version.m_major = versions[versionIdx].major;
197 version.m_minor = versions[versionIdx].minor;
201 version.m_micro = versionIdx == 5 ? 1 : -1;
202#elif defined(Q_OS_OHOS)
203 static auto ohosVersionProps = QOhosJsThreadGateway::eval(
204 [](QOhosJsState &jsState) {
205 auto deviceInfoObj = jsState.eval<QNapi::Object>(
"@ohos.deviceInfo");
206 return std::array<
int, 3>{{
207 deviceInfoObj.get<QNapi::Number>(
"majorVersion"),
208 deviceInfoObj.get<QNapi::Number>(
"seniorVersion"),
209 deviceInfoObj.get<QNapi::Number>(
"featureVersion"),
213 version.m_major = ohosVersionProps[0];
214 version.m_minor = ohosVersionProps[1];
215 version.m_micro = ohosVersionProps[2];
217 version.m_major = -1;
218 version.m_minor = -1;
219 version.m_micro = -1;
227 return lhs >= 0 && rhs >= 0 ? lhs - rhs : 0;
233 if (v1.m_major == v2.m_major) {
234 if (v1.m_minor == v2.m_minor) {
243
244
245
246
247
248
249
250
251
252
253
256
257
258
259
260
261
262
263
264
265
266
267
270
271
272
273
274
275
276
277
278
279
280
281
284
285
286
287
288
289
290
291
292
293
294
295
298
299
300
301
304
305
306
307
308
309
312
313
314
315
316
317
318
319
322
323
324
325
326
327
332 return QStringLiteral(
"Windows");
335 return QStringLiteral(
"Mac OS");
337 return QStringLiteral(
"Mac OS X");
339 return QStringLiteral(
"OS X");
340 return QStringLiteral(
"macOS");
344 return QStringLiteral(
"iPhone OS");
345 return QStringLiteral(
"iOS");
348 return QStringLiteral(
"tvOS");
350 return QStringLiteral(
"watchOS");
352 return QStringLiteral(
"visionOS");
354 return QStringLiteral(
"Android");
356 return QStringLiteral(
"OpenHarmony");
364
365
366
367
368
372 return std::find(types.begin(), types.end(), type()) != types.end();
377 return std::find(types.begin(), types.end(), type) != types.end();
380#ifndef QT_BOOTSTRAPPED
383
384
385
386
391
392
393
394
399
400
401
402
407
408
409
410
415
416
417
418
419
423
424
425
426
427
431
432
433
434
435
439
440
441
442
443
447
448
449
450
451
455
456
457
458
459
463
464
465
466
467
471
472
473
474
475
479
480
481
482
483
487
488
489
490
494
495
496
497
501
502
503
504
507
508
509
510
513
514
515
516
519
520
521
522
527
528
529
530
535
536
537
538
543
544
545
546
551
552
553
554
559
560
561
562
567
568
569
570
575
576
577
578
583
584
585
586
591
592
593
594
598
599
600
601
604
605
606
607
610
611
612
613
616
617
618
619
622
623
624
625
630
631
632
633
634
639
640
641
642
643
648
649
650
651
656
657
658
659
664
665
666
667
668
673
674
675
676
681
682
683
684
689
690
691
692
693
698
699
700
701
706
707
708
709
714
715
716
717
722
723
724
725
730
731
732
733
738
739
740
741
745
746
747
748
752
753
754
755
759
760
761
762
766#ifndef QT_NO_DEBUG_STREAM
769 QDebugStateSaver saver(debug);
771 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