File indexing completed on 2025-03-02 05:10:50

0001 // SPDX-FileCopyrightText: 2023 by Devin Lin <devin@kde.org>
0002 // SPDX-License-Identifier: GPL-2.0-or-later
0003 
0004 #pragma once
0005 
0006 #include <QDBusServiceWatcher>
0007 #include <QObject>
0008 
0009 #include <kscreen/config.h>
0010 
0011 #include "brightnesscontrolinterface.h"
0012 #include "colorssettings.h"
0013 
0014 class PrepareUtil : public QObject
0015 {
0016     Q_OBJECT
0017     Q_PROPERTY(int scaling READ scaling WRITE setScaling NOTIFY scalingChanged);
0018     Q_PROPERTY(QStringList scalingOptions READ scalingOptions CONSTANT);
0019     Q_PROPERTY(int brightness READ brightness WRITE setBrightness NOTIFY brightnessChanged);
0020     Q_PROPERTY(int maxBrightness READ maxBrightness NOTIFY maxBrightnessChanged)
0021     Q_PROPERTY(bool brightnessAvailable READ brightnessAvailable NOTIFY brightnessAvailableChanged)
0022     Q_PROPERTY(bool usingDarkTheme READ usingDarkTheme WRITE setUsingDarkTheme NOTIFY usingDarkThemeChanged)
0023 
0024 public:
0025     PrepareUtil(QObject *parent = nullptr);
0026 
0027     int scaling() const;
0028     void setScaling(int scaling);
0029 
0030     QStringList scalingOptions();
0031 
0032     int brightness() const;
0033     void setBrightness(int brightness);
0034 
0035     int maxBrightness() const;
0036 
0037     bool brightnessAvailable() const;
0038 
0039     bool usingDarkTheme() const;
0040     void setUsingDarkTheme(bool usingDarkTheme);
0041 
0042 Q_SIGNALS:
0043     void scalingChanged();
0044     void brightnessChanged();
0045     void maxBrightnessChanged();
0046     void brightnessAvailableChanged();
0047     void usingDarkThemeChanged();
0048 
0049 private Q_SLOTS:
0050     void fetchBrightness();
0051     void fetchMaxBrightness();
0052 
0053 private:
0054     int m_scaling;
0055     int m_brightness;
0056     int m_maxBrightness;
0057     bool m_usingDarkTheme;
0058 
0059     ColorsSettings *m_colorsSettings;
0060     KScreen::ConfigPtr m_config;
0061     org::kde::Solid::PowerManagement::Actions::BrightnessControl *m_brightnessInterface;
0062     QDBusServiceWatcher *m_brightnessInterfaceWatcher;
0063 };