File indexing completed on 2024-04-28 09:26:09

0001 /*
0002  *  SPDX-FileCopyrightText: 2012 Alejandro Fiestas Olivares <afiestas@kde.org>
0003  *  SPDX-FileCopyrightText: 2014 Daniel Vrátil <dvratil@redhat.com>
0004  *
0005  *  SPDX-License-Identifier: LGPL-2.1-or-later
0006  */
0007 
0008 #pragma once
0009 
0010 #include "kscreen_export.h"
0011 #include "types.h"
0012 
0013 #include <QDebug>
0014 #include <QMetaType>
0015 #include <QObject>
0016 #include <QSize>
0017 
0018 namespace KScreen
0019 {
0020 class KSCREEN_EXPORT Mode : public QObject
0021 {
0022     Q_OBJECT
0023     Q_PROPERTY(QString id READ id WRITE setId NOTIFY modeChanged)
0024     Q_PROPERTY(QString name READ name WRITE setName NOTIFY modeChanged)
0025     Q_PROPERTY(QSize size READ size WRITE setSize NOTIFY modeChanged)
0026     Q_PROPERTY(float refreshRate READ refreshRate WRITE setRefreshRate NOTIFY modeChanged)
0027 
0028 public:
0029     explicit Mode();
0030     ~Mode() override;
0031 
0032     ModePtr clone() const;
0033 
0034     const QString id() const;
0035     void setId(const QString &id);
0036 
0037     QString name() const;
0038     void setName(const QString &name);
0039 
0040     QSize size() const;
0041     void setSize(const QSize &size);
0042 
0043     float refreshRate() const;
0044     void setRefreshRate(float refresh);
0045 
0046 Q_SIGNALS:
0047     void modeChanged();
0048 
0049 private:
0050     Q_DISABLE_COPY(Mode)
0051 
0052     class Private;
0053     Private *const d;
0054 
0055     Mode(Private *dd);
0056 };
0057 
0058 } // KSCreen namespace
0059 
0060 KSCREEN_EXPORT QDebug operator<<(QDebug dbg, const KScreen::ModePtr &mode);