File indexing completed on 2024-05-12 17:08:30

0001 /*
0002  * SPDX-FileCopyrightText: 2018-2019 Daniel Vrátil <dvratil@kde.org>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 #ifndef FAKEDEVICE_H
0008 #define FAKEDEVICE_H
0009 
0010 #include <QDBusObjectPath>
0011 #include <QJsonObject>
0012 #include <QObject>
0013 
0014 class FakeDeviceException : public std::runtime_error
0015 {
0016 public:
0017     FakeDeviceException(const QString &what)
0018         : std::runtime_error(what.toStdString())
0019     {
0020     }
0021 };
0022 
0023 class FakeDevice : public QObject
0024 {
0025     Q_OBJECT
0026     Q_CLASSINFO("D-Bus Interface", "org.freedesktop.bolt1.Device")
0027 
0028     Q_PROPERTY(QString Uid READ uid CONSTANT)
0029     Q_PROPERTY(QString Name READ name CONSTANT)
0030     Q_PROPERTY(QString Vendor READ vendor CONSTANT)
0031     Q_PROPERTY(QString Type READ type CONSTANT)
0032     Q_PROPERTY(QString Status READ status CONSTANT)
0033     Q_PROPERTY(QString AuthFlags READ authFlags CONSTANT)
0034     Q_PROPERTY(QString Parent READ parent CONSTANT)
0035     Q_PROPERTY(QString SysfsPath READ sysfsPath CONSTANT)
0036     Q_PROPERTY(bool Stored READ stored CONSTANT)
0037     Q_PROPERTY(QString Policy READ policy CONSTANT)
0038     Q_PROPERTY(QString Key READ key CONSTANT)
0039     Q_PROPERTY(QString Label READ label WRITE setLabel NOTIFY labelChanged)
0040     Q_PROPERTY(quint64 ConnectTime READ connectTime CONSTANT)
0041     Q_PROPERTY(quint64 AuthorizeTime READ authorizeTime CONSTANT)
0042     Q_PROPERTY(quint64 StoreTime READ storeTime CONSTANT)
0043 public:
0044     explicit FakeDevice(const QString &uid, QObject *parent = nullptr);
0045     explicit FakeDevice(const QJsonObject &json, QObject *parent = nullptr);
0046     ~FakeDevice() override;
0047 
0048     QDBusObjectPath dbusPath() const;
0049 
0050     QString uid() const;
0051     QString name() const;
0052     void setName(const QString &name);
0053     QString vendor() const;
0054     void setVendor(const QString &vendor);
0055     QString type() const;
0056     void setType(const QString &type);
0057     QString status() const;
0058     void setStatus(const QString &status);
0059     QString authFlags() const;
0060     void setAuthFlags(const QString &authFlags);
0061     QString parent() const;
0062     void setParent(const QString &parent);
0063     QString sysfsPath() const;
0064     void setSysfsPath(const QString &sysfsPath);
0065     bool stored() const;
0066     void setStored(bool stored);
0067     QString policy() const;
0068     void setPolicy(const QString &policy);
0069     QString key() const;
0070     void setKey(const QString &key);
0071     QString label() const;
0072     void setLabel(const QString &label);
0073     quint64 connectTime() const;
0074     void setConnectTime(quint64 connectTime);
0075     quint64 authorizeTime() const;
0076     void setAuthorizeTime(quint64 authorizeTime);
0077     quint64 storeTime() const;
0078     void setStoreTime(quint64 storeTime);
0079 
0080 public Q_SLOTS:
0081     void Authorize(const QString &flags);
0082 
0083 Q_SIGNALS:
0084     void labelChanged(const QString &label);
0085 
0086 private:
0087     QDBusObjectPath mDBusPath;
0088 
0089     QString mUid;
0090     QString mName;
0091     QString mVendor;
0092     QString mType;
0093     QString mStatus = QStringLiteral("unknown");
0094     QString mAuthFlags = QStringLiteral("none");
0095     QString mParent;
0096     QString mSysfsPath;
0097     QString mPolicy = QStringLiteral("unknown");
0098     QString mKey;
0099     QString mLabel;
0100     quint64 mConnectTime = 0;
0101     quint64 mAuthorizeTime = 0;
0102     quint64 mStoreTime = 0;
0103     bool mStored = false;
0104 };
0105 
0106 #endif