Add convenience method to check Windows 11 availability
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Tue, 5 Nov 2024 08:02:14 +0000 (17:02 +0900)
committerMatthieu Gallien <matthieu.gallien@nextcloud.com>
Tue, 19 Nov 2024 13:09:05 +0000 (14:09 +0100)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
src/libsync/theme.cpp

index e699cf4d136a366eab2653ab2ad4e01f72eaf7b8..2f9944b929fe8f79901f1c1847c275efc8dec910 100644 (file)
 #include <QJsonDocument>
 #include <QJsonArray>
 
+#ifdef Q_OS_WIN
+#include <windows.h>
+#endif
+
 #include "nextcloudtheme.h"
 
 #ifdef THEME_INCLUDE
@@ -62,6 +66,24 @@ bool shouldPreferSvg()
     return QByteArray(APPLICATION_ICON_SET).toUpper() == QByteArrayLiteral("SVG");
 }
 
+#ifdef Q_OS_WIN
+bool IsWindows11OrGreater() {
+    OSVERSIONINFOEX osvi = {};
+    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
+    osvi.dwMajorVersion = 10;
+    osvi.dwMinorVersion = 0;
+    osvi.dwBuildNumber = 22000;
+
+    DWORDLONG const conditionMask = VerSetConditionMask(
+        VerSetConditionMask(
+            VerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL),
+            VER_MINORVERSION, VER_GREATER_EQUAL),
+        VER_BUILDNUMBER, VER_GREATER_EQUAL);
+
+    return VerifyVersionInfo(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_BUILDNUMBER, conditionMask) != 0;
+}
+#endif
+
 }
 
 namespace OCC {