| | |
| | | // Copyright (C) 2023-2024 Stdware Collections |
| | | // Copyright (C) 2023-2024 Stdware Collections (https://www.github.com/stdware) |
| | | // Copyright (C) 2021-2023 wangwenx190 (Yuhang Zhao) |
| | | // SPDX-License-Identifier: Apache-2.0 |
| | | |
| | | #ifndef QWKWINDOWSEXTRA_P_H |
| | |
| | | |
| | | struct DynamicApis { |
| | | static const DynamicApis &instance() { |
| | | static const DynamicApis inst{}; |
| | | static const DynamicApis inst; |
| | | return inst; |
| | | } |
| | | |
| | |
| | | if (!registry.isValid()) { |
| | | return false; |
| | | } |
| | | auto value = registry.dwordValue(L"ColorPrevalence"); |
| | | if (!value.second) { |
| | | return false; |
| | | } |
| | | return value.first; |
| | | auto value = registry.value<DWORD>(L"ColorPrevalence"); |
| | | return value.value_or(false); |
| | | } |
| | | |
| | | static inline bool isHighContrastModeEnabled() { |
| | |
| | | if (!registry.isValid()) { |
| | | return false; |
| | | } |
| | | auto value = registry.dwordValue(L"AppsUseLightTheme"); |
| | | if (!value.second) { |
| | | return false; |
| | | } |
| | | return !value.first; |
| | | auto value = registry.value<DWORD>(L"AppsUseLightTheme"); |
| | | return value.value_or(false); |
| | | #endif |
| | | } |
| | | |
| | |
| | | if (!registry.isValid()) { |
| | | return {}; |
| | | } |
| | | auto value = registry.dwordValue(L"AccentColor"); |
| | | if (!value.second) { |
| | | auto value = registry.value<DWORD>(L"AccentColor"); |
| | | if (!value) { |
| | | return {}; |
| | | } |
| | | // The retrieved value is in the #AABBGGRR format, we need to |
| | | // convert it to the #AARRGGBB format which Qt expects. |
| | | QColor color = QColor::fromRgba(value.first); |
| | | QColor color = QColor::fromRgba(*value); |
| | | if (!color.isValid()) { |
| | | return {}; |
| | | } |
| | |
| | | static inline quint32 getSystemMetricsForDpi(int index, quint32 dpi) { |
| | | const DynamicApis &apis = DynamicApis::instance(); |
| | | if (apis.pGetSystemMetricsForDpi) { |
| | | return ::GetSystemMetricsForDpi(index, dpi); |
| | | return apis.pGetSystemMetricsForDpi(index, dpi); |
| | | } |
| | | return ::GetSystemMetrics(index); |
| | | } |