From 782a52020a9823bb7dc744ab20849f2558b64652 Mon Sep 17 00:00:00 2001 From: Sine Striker <trueful@163.com> Date: 周六, 14 12月 2024 17:23:54 +0800 Subject: [PATCH] Update WinRegistry --- src/core/qwindowkit_windows.h | 55 ++++++++++++++++++++++--------------------------------- 1 files changed, 22 insertions(+), 33 deletions(-) diff --git a/src/core/qwindowkit_windows.h b/src/core/qwindowkit_windows.h index 8c5c7c0..d6c0afe 100644 --- a/src/core/qwindowkit_windows.h +++ b/src/core/qwindowkit_windows.h @@ -62,22 +62,22 @@ inline bool IsWindows1122H2OrGreater_Real() { RTL_OSVERSIONINFOW rovi = GetRealOSVersion(); return (rovi.dwMajorVersion > 10) || - (rovi.dwMajorVersion == 10 && (rovi.dwMinorVersion > 0 || - rovi.dwBuildNumber >= 22621)); + (rovi.dwMajorVersion == 10 && + (rovi.dwMinorVersion > 0 || rovi.dwBuildNumber >= 22621)); } inline bool IsWindows11OrGreater_Real() { RTL_OSVERSIONINFOW rovi = GetRealOSVersion(); return (rovi.dwMajorVersion > 10) || - (rovi.dwMajorVersion == 10 && (rovi.dwMinorVersion > 0 || - rovi.dwBuildNumber >= 22000)); + (rovi.dwMajorVersion == 10 && + (rovi.dwMinorVersion > 0 || rovi.dwBuildNumber >= 22000)); } inline bool IsWindows1020H1OrGreater_Real() { RTL_OSVERSIONINFOW rovi = GetRealOSVersion(); return (rovi.dwMajorVersion > 10) || - (rovi.dwMajorVersion == 10 && (rovi.dwMinorVersion > 0 || - rovi.dwBuildNumber >= 19041)); + (rovi.dwMajorVersion == 10 && + (rovi.dwMinorVersion > 0 || rovi.dwBuildNumber >= 19041)); } inline bool IsWindows102004OrGreater_Real() { @@ -87,8 +87,8 @@ inline bool IsWindows101903OrGreater_Real() { RTL_OSVERSIONINFOW rovi = GetRealOSVersion(); return (rovi.dwMajorVersion > 10) || - (rovi.dwMajorVersion == 10 && (rovi.dwMinorVersion > 0 || - rovi.dwBuildNumber >= 18362)); + (rovi.dwMajorVersion == 10 && + (rovi.dwMinorVersion > 0 || rovi.dwBuildNumber >= 18362)); } inline bool IsWindows1019H1OrGreater_Real() { @@ -98,8 +98,8 @@ inline bool IsWindows101809OrGreater_Real() { RTL_OSVERSIONINFOW rovi = GetRealOSVersion(); return (rovi.dwMajorVersion > 10) || - (rovi.dwMajorVersion == 10 && (rovi.dwMinorVersion > 0 || - rovi.dwBuildNumber >= 17763)); + (rovi.dwMajorVersion == 10 && + (rovi.dwMinorVersion > 0 || rovi.dwBuildNumber >= 17763)); } inline bool IsWindows10RS5OrGreater_Real() { @@ -147,9 +147,6 @@ QString stringValue(QStringView subKey) const; QPair<DWORD, bool> dwordValue(QStringView subKey) const; - template<typename T> - std::optional<T> value(QStringView subKey) const; - private: HKEY m_key; @@ -159,34 +156,26 @@ inline bool WindowsRegistryKey::isValid() const { return m_key != nullptr; } - - template<> - inline std::optional<DWORD> WindowsRegistryKey::value(QStringView subKey) const { - const auto dv = dwordValue(subKey); - if (!dv.second) { - return {}; - } - return dv.first; - } #elif QT_VERSION < QT_VERSION_CHECK(6, 8, 1) + using WindowsRegistryKey = QWinRegistryKey; +#else class WindowsRegistryKey : public QWinRegistryKey { public: - WindowsRegistryKey(HKEY parentHandle, QStringView subKey, REGSAM permissions = KEY_READ, REGSAM access = 0); + WindowsRegistryKey(HKEY parentHandle, QStringView subKey, REGSAM permissions = KEY_READ, + REGSAM access = 0) + : QWinRegistryKey(parentHandle, subKey, permissions, access) { + } - template<typename T> - std::optional<T> value(QStringView subKey) const; + inline QPair<DWORD, bool> dwordValue(QStringView subKey) const; }; - template<> - inline std::optional<DWORD> WindowsRegistryKey::value(QStringView subKey) const { - const auto dv = dwordValue(subKey); - if (!dv.second) { - return {}; + inline QPair<DWORD, bool> WindowsRegistryKey::dwordValue(QStringView subKey) const { + const auto val = value<DWORD>(subKey); + if (!val) { + return {0, false}; } - return dv.first; + return {val.value(), true}; } -#else - using WindowsRegistryKey = QWinRegistryKey; #endif // -- Gitblit v1.9.1