File indexing completed on 2024-05-05 03:54:43

0001 /*
0002  * SPDX-FileCopyrightText: 2021 Nicolas Fella <nicolas.fella@gmx.de>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #include "kcolorschemewatcher.h"
0008 
0009 #include "kcolorschemewatcher_qt.h"
0010 #include "kcolorschemewatcherbackend.h"
0011 
0012 #ifdef Q_OS_WINDOWS
0013 #include "kcolorschemewatcher_win.h"
0014 #endif
0015 
0016 #ifdef Q_OS_MACOS
0017 #include "kcolorschemewatcher_mac.h"
0018 #endif
0019 
0020 #ifdef QT_DBUS_LIB
0021 #include "kcolorschemewatcher_xdg.h"
0022 #endif
0023 
0024 class KColorSchemeWatcherPrivate
0025 {
0026 public:
0027     std::unique_ptr<KColorSchemeWatcherBackend> backend;
0028 
0029     KColorSchemeWatcherPrivate()
0030     {
0031 #ifdef Q_OS_WINDOWS
0032         backend = std::make_unique<KColorSchemeWatcherWin>();
0033 #elif defined(Q_OS_MACOS)
0034         backend = std::make_unique<KColorSchemeWatcherMac>();
0035 #elif defined(QT_DBUS_LIB)
0036         backend = std::make_unique<KColorSchemeWatcherXDG>();
0037 #else
0038         backend = std::make_unique<KColorSchemeWatcherQt>();
0039 #endif
0040     }
0041 };
0042 
0043 KColorSchemeWatcher::KColorSchemeWatcher(QObject *parent)
0044     : QObject(parent)
0045     , d(new KColorSchemeWatcherPrivate)
0046 {
0047     if (d->backend) {
0048         connect(d->backend.get(), &KColorSchemeWatcherBackend::systemPreferenceChanged, this, &KColorSchemeWatcher::systemPreferenceChanged);
0049     }
0050 }
0051 
0052 KColorSchemeWatcher::~KColorSchemeWatcher()
0053 {
0054 }
0055 
0056 KColorSchemeWatcher::ColorPreference KColorSchemeWatcher::systemPreference() const
0057 {
0058     if (d->backend) {
0059         return d->backend->systemPreference();
0060     }
0061 
0062     return NoPreference;
0063 }
0064 
0065 #include "moc_kcolorschemewatcher.cpp"