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
114
115
116
117
118
121
122
123
124
125
126
133#if !defined(Q_OS_DARWIN) && !defined(Q_OS_WIN)
139#ifndef QT_BOOTSTRAPPED
140 const QVersionNumber v = QVersionNumber::fromString(QJniObject::getStaticObjectField(
141 "android/os/Build$VERSION",
"RELEASE",
"Ljava/lang/String;").toString());
143 version.m_major = v.majorVersion();
144 version.m_minor = v.minorVersion();
145 version.m_micro = v.microVersion();
150 version.m_major = -1;
151 version.m_minor = -1;
153 static const struct {
193 const size_t versionIdx = QtAndroidPrivate::androidSdkVersion() - 1;
194 if (versionIdx <
sizeof(versions) /
sizeof(versions[0])) {
195 version.m_major = versions[versionIdx].major;
196 version.m_minor = versions[versionIdx].minor;
200 version.m_micro = versionIdx == 5 ? 1 : -1;
201#elif defined(Q_OS_OHOS)
202 static auto ohosVersionProps = QOhosJsThreadGateway::eval(
203 [](QOhosJsState &jsState) {
204 auto deviceInfoObj = jsState.eval<QNapi::Object>(
"@ohos.deviceInfo");
205 return std::array<
int, 3>{{
206 deviceInfoObj.get<QNapi::Number>(
"majorVersion"),
207 deviceInfoObj.get<QNapi::Number>(
"seniorVersion"),
208 deviceInfoObj.get<QNapi::Number>(
"featureVersion"),
212 version.m_major = ohosVersionProps[0];
213 version.m_minor = ohosVersionProps[1];
214 version.m_micro = ohosVersionProps[2];
216 version.m_major = -1;
217 version.m_minor = -1;
218 version.m_micro = -1;
226 return lhs >= 0 && rhs >= 0 ? lhs - rhs : 0;
232 if (v1.m_major == v2.m_major) {
233 if (v1.m_minor == v2.m_minor) {
242
243
244
245
246
247
248
249
250
251
252
255
256
257
258
259
260
261
262
263
264
265
266
269
270
271
272
273
274
275
276
277
278
279
280
283
284
285
286
287
288
289
290
291
292
293
294
297
298
299
300
303
304
305
306
307
308
311
312
313
314
315
316
317
318
321
322
323
324
325
326
331 return QStringLiteral(
"Windows");
334 return QStringLiteral(
"Mac OS");
336 return QStringLiteral(
"Mac OS X");
338 return QStringLiteral(
"OS X");
339 return QStringLiteral(
"macOS");
343 return QStringLiteral(
"iPhone OS");
344 return QStringLiteral(
"iOS");
347 return QStringLiteral(
"tvOS");
349 return QStringLiteral(
"watchOS");
351 return QStringLiteral(
"visionOS");
353 return QStringLiteral(
"Android");
355 return QStringLiteral(
"OpenHarmony");
363
364
365
366
367
371 return std::find(types.begin(), types.end(), type()) != types.end();
376 return std::find(types.begin(), types.end(), type) != types.end();
379#ifndef QT_BOOTSTRAPPED
382
383
384
385
390
391
392
393
398
399
400
401
406
407
408
409
414
415
416
417
418
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
493
494
495
496
500
501
502
503
506
507
508
509
512
513
514
515
518
519
520
521
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
597
598
599
600
603
604
605
606
609
610
611
612
615
616
617
618
623
624
625
626
627
632
633
634
635
636
641
642
643
644
649
650
651
652
657
658
659
660
661
666
667
668
669
674
675
676
677
682
683
684
685
686
691
692
693
694
699
700
701
702
707
708
709
710
715
716
717
718
723
724
725
726
731
732
733
734
738
739
740
741
745
746
747
748
752
753
754
755
759#ifndef QT_NO_DEBUG_STREAM
762 QDebugStateSaver saver(debug);
764 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