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