File indexing completed on 2024-05-19 11:37:27

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 "kcolorschemewatcherbackend.h"
0010 
0011 #ifdef Q_OS_WINDOWS
0012 #include "kcolorschemewatcher_win.h"
0013 #endif
0014 
0015 #ifdef Q_OS_MACOS
0016 #include "kcolorschemewatcher_mac.h"
0017 #endif
0018 
0019 #ifdef QT_DBUS_LIB
0020 #include "kcolorschemewatcher_xdg.h"
0021 #endif
0022 
0023 class KColorSchemeWatcherPrivate
0024 {
0025 public:
0026     std::unique_ptr<KColorSchemeWatcherBackend> backend;
0027 
0028     KColorSchemeWatcherPrivate()
0029     {
0030 #ifdef Q_OS_WINDOWS
0031         backend = std::make_unique<KColorSchemeWatcherWin>();
0032 #elif defined(Q_OS_MACOS)
0033         backend = std::make_unique<KColorSchemeWatcherMac>();
0034 #elif defined(QT_DBUS_LIB)
0035         backend = std::make_unique<KColorSchemeWatcherXDG>();
0036 #endif
0037     }
0038 };
0039 
0040 KColorSchemeWatcher::KColorSchemeWatcher(QObject *parent)
0041     : QObject(parent)
0042     , d(new KColorSchemeWatcherPrivate)
0043 {
0044     if (d->backend) {
0045         connect(d->backend.get(), &KColorSchemeWatcherBackend::systemPreferenceChanged, this, &KColorSchemeWatcher::systemPreferenceChanged);
0046     }
0047 }
0048 
0049 KColorSchemeWatcher::~KColorSchemeWatcher()
0050 {
0051 }
0052 
0053 KColorSchemeWatcher::ColorPreference KColorSchemeWatcher::systemPreference() const
0054 {
0055     if (d->backend) {
0056         return d->backend->systemPreference();
0057     }
0058 
0059     return NoPreference;
0060 }
0061 
0062 #include "moc_kcolorschemewatcher.cpp"