File indexing completed on 2024-04-21 16:17:34

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 #include "mode.h"
0009 
0010 using namespace KScreen;
0011 class Q_DECL_HIDDEN Mode::Private
0012 {
0013 public:
0014     Private()
0015         : rate(0)
0016     {
0017     }
0018 
0019     Private(const Private &other)
0020         : id(other.id)
0021         , name(other.name)
0022         , size(other.size)
0023         , rate(other.rate)
0024     {
0025     }
0026 
0027     QString id;
0028     QString name;
0029     QSize size;
0030     float rate;
0031 };
0032 
0033 Mode::Mode()
0034     : QObject(nullptr)
0035     , d(new Private())
0036 {
0037 }
0038 
0039 Mode::Mode(Mode::Private *dd)
0040     : QObject()
0041     , d(dd)
0042 {
0043 }
0044 
0045 Mode::~Mode()
0046 {
0047     delete d;
0048 }
0049 
0050 ModePtr Mode::clone() const
0051 {
0052     return ModePtr(new Mode(new Private(*d)));
0053 }
0054 
0055 const QString Mode::id() const
0056 {
0057     return d->id;
0058 }
0059 
0060 void Mode::setId(const QString &id)
0061 {
0062     if (d->id == id) {
0063         return;
0064     }
0065 
0066     d->id = id;
0067 
0068     Q_EMIT modeChanged();
0069 }
0070 
0071 QString Mode::name() const
0072 {
0073     return d->name;
0074 }
0075 
0076 void Mode::setName(const QString &name)
0077 {
0078     if (d->name == name) {
0079         return;
0080     }
0081 
0082     d->name = name;
0083 
0084     Q_EMIT modeChanged();
0085 }
0086 
0087 QSize Mode::size() const
0088 {
0089     return d->size;
0090 }
0091 
0092 void Mode::setSize(const QSize &size)
0093 {
0094     if (d->size == size) {
0095         return;
0096     }
0097 
0098     d->size = size;
0099 
0100     Q_EMIT modeChanged();
0101 }
0102 
0103 float Mode::refreshRate() const
0104 {
0105     return d->rate;
0106 }
0107 
0108 void Mode::setRefreshRate(float refresh)
0109 {
0110     if (qFuzzyCompare(d->rate, refresh)) {
0111         return;
0112     }
0113 
0114     d->rate = refresh;
0115 
0116     Q_EMIT modeChanged();
0117 }
0118 
0119 QDebug operator<<(QDebug dbg, const KScreen::ModePtr &mode)
0120 {
0121     if (mode) {
0122         dbg << "KScreen::Mode(Id:" << mode->id() << ", Size:" << mode->size() << "@" << mode->refreshRate() << ")";
0123     } else {
0124         dbg << "KScreen::Mode(NULL)";
0125     }
0126     return dbg;
0127 }