/* This file is part of the KDE project SPDX-FileCopyrightText: 2024 Xaver Hugl SPDX-License-Identifier: LGPL-2.0-or-later */ #pragma once #include "displaybrightness.h" #include #include #include #include #include class KWinDisplayDetector; class KWinDisplayBrightness : public DisplayBrightness { public: explicit KWinDisplayBrightness(const KScreen::OutputPtr &output, KWinDisplayDetector *detector); QString id() const override; QString label() const override; int knownSafeMinBrightness() const override; int maxBrightness() const override; int brightness() const override; void setBrightness(int brightness) override; bool isInternal() const override; void applyPendingBrightness(); void setConfigOperationDone(); private: void handleBrightnessChanged(); const KScreen::OutputPtr m_output; KWinDisplayDetector *const m_detector; double m_desiredBrightness; bool m_inhibitChangeSignal = false; }; class KWinDisplayDetector : public DisplayBrightnessDetector { Q_OBJECT public: explicit KWinDisplayDetector(QObject *parent = nullptr); ~KWinDisplayDetector(); void detect() override; QList displays() const override; void scheduleSetConfig(); private: void checkOutputs(); void setConfig(); void setConfigDone(); KScreen::ConfigPtr m_config; KScreen::SetConfigOperation *m_setConfigOp = nullptr; std::unordered_map> m_displays; QList m_displayList; QTimer m_setConfigTimer; bool m_setConfigOutOfDate = false; };