KGuiAddons

kcolorschemewatcher_win.cpp
1/*
2 * SPDX-FileCopyrightText: 2020 Piyush Aggarwal <piyushaggarwal002@gmail.com>
3 *
4 * SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6
7#include "kcolorschemewatcher_win.h"
8#include "kcolorschemewatcher.h"
9
10#include <windows.h>
11
12#include <QAbstractEventDispatcher>
13
14#include <QDebug>
15
16static bool isHighContrastModeActive()
17{
18 HIGHCONTRAST result;
19 result.cbSize = sizeof(HIGHCONTRAST);
20 if (SystemParametersInfo(SPI_GETHIGHCONTRAST, result.cbSize, &result, 0)) {
21 return (result.dwFlags & HCF_HIGHCONTRASTON);
22 }
23 return false;
24}
25
26KColorSchemeWatcherWin::KColorSchemeWatcherWin()
27{
29
30 m_preference = getCurrentSystemPreference();
31}
32
33bool KColorSchemeWatcherWin::nativeEventFilter(const QByteArray &eventType, void *message, qintptr *)
34{
35 MSG *msg = static_cast<MSG *>(message);
36 switch (msg->message) {
37 case WM_SETTINGCHANGE: {
38 m_settings.sync();
39 const auto currentPreference = getCurrentSystemPreference();
40 if (m_preference != currentPreference) {
41 m_preference = currentPreference;
42 Q_EMIT systemPreferenceChanged();
43 }
44
45 break;
46 }
47 default: {
48 }
49 }
50 return false;
51}
52
53KColorSchemeWatcher::ColorPreference KColorSchemeWatcherWin::systemPreference() const
54{
55 return m_preference;
56}
57
58KColorSchemeWatcher::ColorPreference KColorSchemeWatcherWin::getCurrentSystemPreference() const
59{
60 if (isHighContrastModeActive()) {
62 } else if (m_settings.value(QStringLiteral("AppsUseLightTheme"), true).value<bool>()) {
64 }
66}
67
68#include "moc_kcolorschemewatcher_win.cpp"
ColorPreference
Encodes the color preference of the user to be used by applications as configured in the system setti...
@ PreferHighContrast
The user prefers a light color scheme.
@ PreferLight
The user prefers a dark color scheme.
@ PreferDark
No preference available.
void installNativeEventFilter(QAbstractNativeEventFilter *filterObj)
QAbstractEventDispatcher * instance(QThread *thread)
Q_EMITQ_EMIT
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Apr 11 2025 11:51:51 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.