1 // This file is part of Desktop App Toolkit,
2 // a set of libraries for developing nice desktop applications.
3 //
4 // For license and copyright information please follow this link:
5 // https://github.com/desktop-app/legal/blob/master/LEGAL
6 //
7 #pragma once
8 
9 class QJsonObject;
10 class QString;
11 class QDate;
12 
13 namespace Platform {
14 
15 enum class OutdateReason {
16 	IsOld,
17 	Is32Bit,
18 };
19 
20 [[nodiscard]] QString DeviceModelPretty();
21 [[nodiscard]] QString SystemVersionPretty();
22 [[nodiscard]] QString SystemCountry();
23 [[nodiscard]] QString SystemLanguage();
24 [[nodiscard]] QDate WhenSystemBecomesOutdated();
25 [[nodiscard]] OutdateReason WhySystemBecomesOutdated();
26 [[nodiscard]] int AutoUpdateVersion();
27 [[nodiscard]] QString AutoUpdateKey();
28 
29 [[nodiscard]] constexpr bool IsWindows();
30 [[nodiscard]] constexpr bool IsWindows32Bit();
31 [[nodiscard]] constexpr bool IsWindows64Bit();
32 [[nodiscard]] constexpr bool IsWindowsStoreBuild();
33 [[nodiscard]] bool IsWindows7OrGreater();
34 [[nodiscard]] bool IsWindows8OrGreater();
35 [[nodiscard]] bool IsWindows8Point1OrGreater();
36 [[nodiscard]] bool IsWindows10OrGreater();
37 [[nodiscard]] bool IsWindows11OrGreater();
38 
39 [[nodiscard]] constexpr bool IsMac();
40 [[nodiscard]] constexpr bool IsMacStoreBuild();
41 [[nodiscard]] bool IsMac10_12OrGreater();
42 [[nodiscard]] bool IsMac10_13OrGreater();
43 [[nodiscard]] bool IsMac10_14OrGreater();
44 [[nodiscard]] bool IsMac10_15OrGreater();
45 [[nodiscard]] bool IsMac11_0OrGreater();
46 
47 [[nodiscard]] constexpr bool IsLinux();
48 [[nodiscard]] bool IsX11();
49 [[nodiscard]] bool IsWayland();
50 
51 [[nodiscard]] QString GetLibcName();
52 [[nodiscard]] QString GetLibcVersion();
53 [[nodiscard]] QString GetWindowManager();
54 
55 void Start(QJsonObject settings);
56 void Finish();
57 
58 } // namespace Platform
59 
60 #ifdef Q_OS_MAC
61 #include "base/platform/mac/base_info_mac.h"
62 #elif defined Q_OS_UNIX // Q_OS_MAC
63 #include "base/platform/linux/base_info_linux.h"
64 #elif defined Q_OS_WIN // Q_OS_MAC || Q_OS_UNIX
65 #include "base/platform/win/base_info_win.h"
66 #endif // Q_OS_MAC || Q_OS_UNIX || Q_OS_WIN
67