File indexing completed on 2024-05-12 05:33:54
0001 /* 0002 * SPDX-FileCopyrightText: 2015 Sebastian Kügler <sebas@kde.org> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <QCommandLineParser> 0010 #include <QObject> 0011 0012 #include "output.h" 0013 #include "types.h" 0014 0015 namespace KScreen 0016 { 0017 class ConfigOperation; 0018 class Dpms; 0019 0020 class Doctor : public QObject 0021 { 0022 Q_OBJECT 0023 0024 public: 0025 explicit Doctor(QObject *parent = nullptr); 0026 ~Doctor() override; 0027 0028 void setOptionList(const QStringList &positionalArgs); 0029 void start(QCommandLineParser *m_parser); 0030 void configReceived(KScreen::ConfigOperation *op); 0031 OutputPtr findOutput(const QString &query); 0032 KScreen::ModePtr findMode(OutputPtr output, const QString &query); 0033 0034 void showBackends() const; 0035 void showOutputs() const; 0036 void showJson() const; 0037 0038 void setEnabled(OutputPtr output, bool enable = true); 0039 void setPosition(OutputPtr output, const QPoint &pos); 0040 bool setMode(OutputPtr output, const QString &query); 0041 void setScale(OutputPtr output, qreal scale); 0042 void setRotation(OutputPtr output, KScreen::Output::Rotation rot); 0043 void setOverscan(OutputPtr output, uint32_t overscan); 0044 void setVrrPolicy(OutputPtr output, KScreen::Output::VrrPolicy policy); 0045 void setRgbRange(OutputPtr output, KScreen::Output::RgbRange rgbRange); 0046 void setPrimary(OutputPtr output); 0047 void setPriority(OutputPtr output, uint32_t priority); 0048 void setHdrEnabled(OutputPtr output, bool enable); 0049 void setSdrBrightness(OutputPtr output, uint32_t brightness); 0050 void setWcgEnabled(OutputPtr output, bool enable); 0051 0052 Q_SIGNALS: 0053 void outputsChanged(); 0054 void started(); 0055 void configChanged(); 0056 0057 private: 0058 // static QString modeString(KWayland::Server::OutputDeviceInterface* outputdevice, int mid); 0059 void applyConfig(); 0060 void parseOutputArgs(); 0061 KScreen::ConfigPtr m_config; 0062 QCommandLineParser *m_parser; 0063 bool m_changed; 0064 QStringList m_outputArgs; 0065 Dpms *m_dpmsClient; 0066 }; 0067 0068 } // namespace