File indexing completed on 2024-04-28 16:52:27

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 OrgKdeKwinColorCorrectInterface(QStringLiteral("org.kde.KWin"), QStringLiteral("/ColorCorrect"), QDBusConnection::sessionBus(), this)}
0012     , m_settings{new NightColorSettings(this)}
0013 {
0014     if (!m_ccInterface->isValid()) {
0015         qWarning() << "Can't connect to nightcolor over DBus!";
0016     } else {
0017         m_enabled = m_ccInterface->running();
0018 
0019         // subscribe to property updates
0020         QDBusConnection::sessionBus().connect(QStringLiteral("org.kde.KWin"),
0021                                               QStringLiteral("/ColorCorrect"),
0022                                               QStringLiteral("org.freedesktop.DBus.Properties"),
0023                                               QStringLiteral("PropertiesChanged"),
0024                                               this,
0025                                               SLOT(enabledUpdated(QString, QVariantMap, QStringList)));
0026     }
0027 }
0028 
0029 bool NightColorUtil::enabled()
0030 {
0031     return m_enabled;
0032 }
0033 
0034 void NightColorUtil::setEnabled(bool enabled)
0035 {
0036     m_settings->setMode(ColorCorrect::NightColorMode::Constant);
0037     m_settings->setActive(enabled);
0038     m_settings->save();
0039 }
0040 
0041 void NightColorUtil::enabledUpdated(const QString &name, const QVariantMap &map, const QStringList &list)
0042 {
0043     Q_UNUSED(name);
0044     Q_UNUSED(map);
0045     Q_UNUSED(list);
0046     bool running = m_ccInterface->running();
0047     if (running != m_enabled) {
0048         m_enabled = running;
0049         Q_EMIT enabledChanged();
0050     }
0051 }