File indexing completed on 2024-04-21 14:56:35

0001 /*
0002  * SPDX-FileCopyrightText: 2020 Piyush Aggarwal <piyushaggarwal002@gmail.com>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #include "kcolorschemewatcher_win.h"
0008 
0009 #include <windows.h>
0010 
0011 #include <QAbstractEventDispatcher>
0012 
0013 #include <QDebug>
0014 
0015 KColorSchemeWatcherWin::KColorSchemeWatcherWin()
0016 {
0017     QAbstractEventDispatcher::instance()->installNativeEventFilter(this);
0018 
0019     m_preferDarkMode = !(m_settings.value(QStringLiteral("AppsUseLightTheme"), true).value<bool>());
0020 }
0021 
0022 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
0023 bool KColorSchemeWatcherWin::nativeEventFilter(const QByteArray &eventType, void *message, long *)
0024 #else
0025 bool KColorSchemeWatcherWin::nativeEventFilter(const QByteArray &eventType, void *message, qintptr *)
0026 #endif
0027 {
0028     MSG *msg = static_cast<MSG *>(message);
0029     switch (msg->message) {
0030     case WM_SETTINGCHANGE: {
0031         m_settings.sync();
0032         const bool preferDarkModeNow = !(m_settings.value(QStringLiteral("AppsUseLightTheme"), true).value<bool>());
0033         if (m_preferDarkMode != preferDarkModeNow) {
0034             m_preferDarkMode = preferDarkModeNow;
0035             Q_EMIT systemPreferenceChanged();
0036         }
0037 
0038         break;
0039     }
0040     default: {
0041     }
0042     }
0043     return false;
0044 }
0045 
0046 KColorSchemeWatcher::ColorPreference KColorSchemeWatcherWin::systemPreference() const
0047 {
0048     return m_preferDarkMode ? KColorSchemeWatcher::PreferDark : KColorSchemeWatcher::PreferLight;
0049 }
0050 
0051 #include "moc_kcolorschemewatcher_win.cpp"