File indexing completed on 2024-05-12 15:32:33

0001 /*
0002  * BluezQt - Asynchronous BlueZ wrapper library
0003  *
0004  * SPDX-FileCopyrightText: 2015 David Rosca <nowrep@gmail.com>
0005  *
0006  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007  */
0008 
0009 #ifndef DECLARATIVEDEVICE_H
0010 #define DECLARATIVEDEVICE_H
0011 
0012 #include "declarativeinput.h"
0013 #include "declarativemediaplayer.h"
0014 #include "device.h"
0015 
0016 class DeclarativeAdapter;
0017 class DeclarativeBattery;
0018 
0019 class DeclarativeDevice : public QObject
0020 {
0021     Q_OBJECT
0022 
0023     Q_PROPERTY(QString ubi READ ubi CONSTANT)
0024     Q_PROPERTY(QString address READ address CONSTANT)
0025     Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
0026     Q_PROPERTY(QString friendlyName READ friendlyName NOTIFY friendlyNameChanged)
0027     Q_PROPERTY(QString remoteName READ remoteName NOTIFY remoteNameChanged)
0028     Q_PROPERTY(quint32 deviceClass READ deviceClass NOTIFY deviceClassChanged)
0029     Q_PROPERTY(BluezQt::Device::Type type READ type NOTIFY typeChanged)
0030     Q_PROPERTY(quint16 appearance READ appearance NOTIFY appearanceChanged)
0031     Q_PROPERTY(QString icon READ icon NOTIFY iconChanged)
0032     Q_PROPERTY(bool paired READ isPaired NOTIFY pairedChanged)
0033     Q_PROPERTY(bool trusted READ isTrusted WRITE setTrusted NOTIFY trustedChanged)
0034     Q_PROPERTY(bool blocked READ isBlocked WRITE setBlocked NOTIFY blockedChanged)
0035     Q_PROPERTY(bool legacyPairing READ hasLegacyPairing NOTIFY legacyPairingChanged)
0036     Q_PROPERTY(qint16 rssi READ rssi NOTIFY rssiChanged)
0037     Q_PROPERTY(bool connected READ isConnected NOTIFY connectedChanged)
0038     Q_PROPERTY(QStringList uuids READ uuids NOTIFY uuidsChanged)
0039     Q_PROPERTY(QString modalias READ modalias NOTIFY modaliasChanged)
0040     Q_PROPERTY(DeclarativeBattery *battery READ battery NOTIFY batteryChanged)
0041     Q_PROPERTY(DeclarativeInput *input READ input NOTIFY inputChanged)
0042     Q_PROPERTY(DeclarativeMediaPlayer *mediaPlayer READ mediaPlayer NOTIFY mediaPlayerChanged)
0043     Q_PROPERTY(DeclarativeAdapter *adapter READ adapter CONSTANT)
0044 
0045 public:
0046     explicit DeclarativeDevice(BluezQt::DevicePtr device, DeclarativeAdapter *adapter);
0047 
0048     QString ubi() const;
0049 
0050     QString address() const;
0051 
0052     QString name() const;
0053     void setName(const QString &name);
0054 
0055     QString friendlyName() const;
0056 
0057     QString remoteName() const;
0058 
0059     quint32 deviceClass() const;
0060 
0061     BluezQt::Device::Type type() const;
0062 
0063     quint16 appearance() const;
0064 
0065     QString icon() const;
0066 
0067     bool isPaired() const;
0068 
0069     bool isTrusted() const;
0070     void setTrusted(bool trusted);
0071 
0072     bool isBlocked() const;
0073     void setBlocked(bool blocked);
0074 
0075     bool hasLegacyPairing() const;
0076 
0077     qint16 rssi() const;
0078 
0079     bool isConnected() const;
0080 
0081     QStringList uuids() const;
0082 
0083     QString modalias() const;
0084 
0085     DeclarativeBattery *battery() const;
0086 
0087     DeclarativeInput *input() const;
0088 
0089     DeclarativeMediaPlayer *mediaPlayer() const;
0090 
0091     DeclarativeAdapter *adapter() const;
0092 
0093 public Q_SLOTS:
0094     BluezQt::PendingCall *connectToDevice();
0095     BluezQt::PendingCall *disconnectFromDevice();
0096     BluezQt::PendingCall *connectProfile(const QString &uuid);
0097     BluezQt::PendingCall *disconnectProfile(const QString &uuid);
0098     BluezQt::PendingCall *pair();
0099     BluezQt::PendingCall *cancelPairing();
0100 
0101 Q_SIGNALS:
0102     void deviceRemoved(DeclarativeDevice *device);
0103     void deviceChanged(DeclarativeDevice *device);
0104     void nameChanged(const QString &name);
0105     void friendlyNameChanged(const QString &friendlyName);
0106     void remoteNameChanged(const QString &remoteName);
0107     void deviceClassChanged(quint32 deviceClass);
0108     void typeChanged(BluezQt::Device::Type type);
0109     void appearanceChanged(quint16 appearance);
0110     void iconChanged(const QString &icon);
0111     void pairedChanged(bool paired);
0112     void trustedChanged(bool trusted);
0113     void blockedChanged(bool blocked);
0114     void legacyPairingChanged(bool legacyPairing);
0115     void rssiChanged(qint16 rssi);
0116     void connectedChanged(bool connected);
0117     void uuidsChanged(const QStringList &uuids);
0118     void modaliasChanged(const QString &modalias);
0119     void batteryChanged(DeclarativeBattery *battery);
0120     void inputChanged(DeclarativeInput *input);
0121     void mediaPlayerChanged(DeclarativeMediaPlayer *mediaPlayer);
0122 
0123 private:
0124     void updateBattery();
0125     void updateInput();
0126     void updateMediaPlayer();
0127 
0128     BluezQt::DevicePtr m_device;
0129     DeclarativeAdapter *m_adapter;
0130     DeclarativeBattery *m_battery;
0131     DeclarativeInput *m_input;
0132     DeclarativeMediaPlayer *m_mediaPlayer;
0133 };
0134 
0135 #endif // DECLARATIVEDEVICE_H