File indexing completed on 2024-05-05 07:55:26

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 bool KColorSchemeWatcherWin::nativeEventFilter(const QByteArray &eventType, void *message, qintptr *)
0023 {
0024     MSG *msg = static_cast<MSG *>(message);
0025     switch (msg->message) {
0026     case WM_SETTINGCHANGE: {
0027         m_settings.sync();
0028         const bool preferDarkModeNow = !(m_settings.value(QStringLiteral("AppsUseLightTheme"), true).value<bool>());
0029         if (m_preferDarkMode != preferDarkModeNow) {
0030             m_preferDarkMode = preferDarkModeNow;
0031             Q_EMIT systemPreferenceChanged();
0032         }
0033 
0034         break;
0035     }
0036     default: {
0037     }
0038     }
0039     return false;
0040 }
0041 
0042 KColorSchemeWatcher::ColorPreference KColorSchemeWatcherWin::systemPreference() const
0043 {
0044     return m_preferDarkMode ? KColorSchemeWatcher::PreferDark : KColorSchemeWatcher::PreferLight;
0045 }
0046 
0047 #include "moc_kcolorschemewatcher_win.cpp"