File indexing completed on 2024-04-14 15:37:37

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 #ifndef MODE_CONFIG_H
0009 #define MODE_CONFIG_H
0010 
0011 #include "kscreen_export.h"
0012 #include "types.h"
0013 
0014 #include <QDebug>
0015 #include <QMetaType>
0016 #include <QObject>
0017 #include <QSize>
0018 
0019 namespace KScreen
0020 {
0021 class KSCREEN_EXPORT Mode : public QObject
0022 {
0023     Q_OBJECT
0024     Q_PROPERTY(QString id READ id WRITE setId NOTIFY modeChanged)
0025     Q_PROPERTY(QString name READ name WRITE setName NOTIFY modeChanged)
0026     Q_PROPERTY(QSize size READ size WRITE setSize NOTIFY modeChanged)
0027     Q_PROPERTY(float refreshRate READ refreshRate WRITE setRefreshRate NOTIFY modeChanged)
0028 
0029 public:
0030     explicit Mode();
0031     ~Mode() override;
0032 
0033     ModePtr clone() const;
0034 
0035     const QString id() const;
0036     void setId(const QString &id);
0037 
0038     QString name() const;
0039     void setName(const QString &name);
0040 
0041     QSize size() const;
0042     void setSize(const QSize &size);
0043 
0044     float refreshRate() const;
0045     void setRefreshRate(float refresh);
0046 
0047 Q_SIGNALS:
0048     void modeChanged();
0049 
0050 private:
0051     Q_DISABLE_COPY(Mode)
0052 
0053     class Private;
0054     Private *const d;
0055 
0056     Mode(Private *dd);
0057 };
0058 
0059 } // KSCreen namespace
0060 
0061 KSCREEN_EXPORT QDebug operator<<(QDebug dbg, const KScreen::ModePtr &mode);
0062 
0063 Q_DECLARE_METATYPE(KScreen::ModeList)
0064 
0065 #endif // MODE_H