File indexing completed on 2024-05-12 09:38:48

0001 /*
0002  * SPDX-FileCopyrightText: 2022 by Devin Lin <devin@kde.org>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #include "nightcolorutil.h"
0008 
0009 NightColorUtil::NightColorUtil(QObject *parent)
0010     : QObject{parent}
0011     , m_ccInterface{new OrgKdeKWinNightLightInterface(QStringLiteral("org.kde.KWin.NightLight"),
0012                                                       QStringLiteral("/org/kde/KWin/NightLight"),
0013                                                       QDBusConnection::sessionBus(),
0014                                                       this)}
0015     , m_settings{new NightColorSettings(this)}
0016 {
0017     if (!m_ccInterface->isValid()) {
0018         qWarning() << "Can't connect to nightcolor over DBus!";
0019     } else {
0020         m_enabled = m_ccInterface->running();
0021 
0022         // subscribe to property updates
0023         QDBusConnection::sessionBus().connect(QStringLiteral("org.kde.KWin.NightLight"),
0024                                               QStringLiteral("/org/kde/KWin/NightLight"),
0025                                               QStringLiteral("org.freedesktop.DBus.Properties"),
0026                                               QStringLiteral("PropertiesChanged"),
0027                                               this,
0028                                               SLOT(enabledUpdated(QString, QVariantMap, QStringList)));
0029     }
0030 }
0031 
0032 bool NightColorUtil::enabled()
0033 {
0034     return m_enabled;
0035 }
0036 
0037 void NightColorUtil::setEnabled(bool enabled)
0038 {
0039     m_settings->setMode(ColorCorrect::NightColorMode::Constant);
0040     m_settings->setActive(enabled);
0041     m_settings->save();
0042 }
0043 
0044 void NightColorUtil::enabledUpdated(const QString &name, const QVariantMap &map, const QStringList &list)
0045 {
0046     Q_UNUSED(name);
0047     Q_UNUSED(map);
0048     Q_UNUSED(list);
0049     bool running = m_ccInterface->running();
0050     if (running != m_enabled) {
0051         m_enabled = running;
0052         Q_EMIT enabledChanged();
0053     }
0054 }