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