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 #include "declarativedevice.h"
0010 #include "declarativeadapter.h"
0011 #include "declarativebattery.h"
0012 
0013 #include <QStringList>
0014 
0015 DeclarativeDevice::DeclarativeDevice(BluezQt::DevicePtr device, DeclarativeAdapter *adapter)
0016     : QObject(adapter)
0017     , m_device(device)
0018     , m_adapter(adapter)
0019     , m_battery(nullptr)
0020     , m_input(nullptr)
0021     , m_mediaPlayer(nullptr)
0022 {
0023     connect(m_device.data(), &BluezQt::Device::nameChanged, this, &DeclarativeDevice::nameChanged);
0024     connect(m_device.data(), &BluezQt::Device::friendlyNameChanged, this, &DeclarativeDevice::friendlyNameChanged);
0025     connect(m_device.data(), &BluezQt::Device::remoteNameChanged, this, &DeclarativeDevice::remoteNameChanged);
0026     connect(m_device.data(), &BluezQt::Device::deviceClassChanged, this, &DeclarativeDevice::deviceClassChanged);
0027     connect(m_device.data(), &BluezQt::Device::typeChanged, this, &DeclarativeDevice::typeChanged);
0028     connect(m_device.data(), &BluezQt::Device::appearanceChanged, this, &DeclarativeDevice::appearanceChanged);
0029     connect(m_device.data(), &BluezQt::Device::iconChanged, this, &DeclarativeDevice::iconChanged);
0030     connect(m_device.data(), &BluezQt::Device::pairedChanged, this, &DeclarativeDevice::pairedChanged);
0031     connect(m_device.data(), &BluezQt::Device::trustedChanged, this, &DeclarativeDevice::trustedChanged);
0032     connect(m_device.data(), &BluezQt::Device::blockedChanged, this, &DeclarativeDevice::blockedChanged);
0033     connect(m_device.data(), &BluezQt::Device::legacyPairingChanged, this, &DeclarativeDevice::legacyPairingChanged);
0034     connect(m_device.data(), &BluezQt::Device::rssiChanged, this, &DeclarativeDevice::rssiChanged);
0035     connect(m_device.data(), &BluezQt::Device::connectedChanged, this, &DeclarativeDevice::connectedChanged);
0036     connect(m_device.data(), &BluezQt::Device::uuidsChanged, this, &DeclarativeDevice::uuidsChanged);
0037     connect(m_device.data(), &BluezQt::Device::modaliasChanged, this, &DeclarativeDevice::modaliasChanged);
0038     connect(m_device.data(), &BluezQt::Device::mediaPlayerChanged, this, &DeclarativeDevice::updateMediaPlayer);
0039     connect(m_device.data(), &BluezQt::Device::inputChanged, this, &DeclarativeDevice::updateInput);
0040     connect(m_device.data(), &BluezQt::Device::batteryChanged, this, &DeclarativeDevice::updateBattery);
0041 
0042     connect(m_device.data(), &BluezQt::Device::deviceRemoved, this, [this]() {
0043         Q_EMIT deviceRemoved(this);
0044     });
0045 
0046     connect(m_device.data(), &BluezQt::Device::deviceChanged, this, [this]() {
0047         Q_EMIT deviceChanged(this);
0048     });
0049 
0050     updateInput();
0051     updateMediaPlayer();
0052 }
0053 
0054 QString DeclarativeDevice::ubi() const
0055 {
0056     return m_device->ubi();
0057 }
0058 
0059 QString DeclarativeDevice::address() const
0060 {
0061     return m_device->address();
0062 }
0063 
0064 QString DeclarativeDevice::name() const
0065 {
0066     return m_device->name();
0067 }
0068 
0069 void DeclarativeDevice::setName(const QString &name)
0070 {
0071     m_device->setName(name);
0072 }
0073 
0074 QString DeclarativeDevice::friendlyName() const
0075 {
0076     return m_device->friendlyName();
0077 }
0078 
0079 QString DeclarativeDevice::remoteName() const
0080 {
0081     return m_device->remoteName();
0082 }
0083 
0084 quint32 DeclarativeDevice::deviceClass() const
0085 {
0086     return m_device->deviceClass();
0087 }
0088 
0089 BluezQt::Device::Type DeclarativeDevice::type() const
0090 {
0091     return m_device->type();
0092 }
0093 
0094 quint16 DeclarativeDevice::appearance() const
0095 {
0096     return m_device->appearance();
0097 }
0098 
0099 QString DeclarativeDevice::icon() const
0100 {
0101     return m_device->icon();
0102 }
0103 
0104 bool DeclarativeDevice::isPaired() const
0105 {
0106     return m_device->isPaired();
0107 }
0108 
0109 bool DeclarativeDevice::isTrusted() const
0110 {
0111     return m_device->isTrusted();
0112 }
0113 
0114 void DeclarativeDevice::setTrusted(bool trusted)
0115 {
0116     m_device->setTrusted(trusted);
0117 }
0118 
0119 bool DeclarativeDevice::isBlocked() const
0120 {
0121     return m_device->isBlocked();
0122 }
0123 
0124 void DeclarativeDevice::setBlocked(bool blocked)
0125 {
0126     m_device->setBlocked(blocked);
0127 }
0128 
0129 bool DeclarativeDevice::hasLegacyPairing() const
0130 {
0131     return m_device->hasLegacyPairing();
0132 }
0133 
0134 qint16 DeclarativeDevice::rssi() const
0135 {
0136     return m_device->rssi();
0137 }
0138 
0139 bool DeclarativeDevice::isConnected() const
0140 {
0141     return m_device->isConnected();
0142 }
0143 
0144 QStringList DeclarativeDevice::uuids() const
0145 {
0146     return m_device->uuids();
0147 }
0148 
0149 QString DeclarativeDevice::modalias() const
0150 {
0151     return m_device->modalias();
0152 }
0153 
0154 DeclarativeBattery *DeclarativeDevice::battery() const
0155 {
0156     return m_battery;
0157 }
0158 
0159 DeclarativeInput *DeclarativeDevice::input() const
0160 {
0161     return m_input;
0162 }
0163 
0164 DeclarativeMediaPlayer *DeclarativeDevice::mediaPlayer() const
0165 {
0166     return m_mediaPlayer;
0167 }
0168 
0169 DeclarativeAdapter *DeclarativeDevice::adapter() const
0170 {
0171     return m_adapter;
0172 }
0173 
0174 BluezQt::PendingCall *DeclarativeDevice::connectToDevice()
0175 {
0176     return m_device->connectToDevice();
0177 }
0178 
0179 BluezQt::PendingCall *DeclarativeDevice::disconnectFromDevice()
0180 {
0181     return m_device->disconnectFromDevice();
0182 }
0183 
0184 BluezQt::PendingCall *DeclarativeDevice::connectProfile(const QString &uuid)
0185 {
0186     return m_device->connectProfile(uuid);
0187 }
0188 
0189 BluezQt::PendingCall *DeclarativeDevice::disconnectProfile(const QString &uuid)
0190 {
0191     return m_device->disconnectProfile(uuid);
0192 }
0193 
0194 BluezQt::PendingCall *DeclarativeDevice::pair()
0195 {
0196     return m_device->pair();
0197 }
0198 
0199 BluezQt::PendingCall *DeclarativeDevice::cancelPairing()
0200 {
0201     return m_device->cancelPairing();
0202 }
0203 
0204 void DeclarativeDevice::updateBattery()
0205 {
0206     if (m_battery) {
0207         m_battery->deleteLater();
0208         m_battery = nullptr;
0209     }
0210 
0211     if (m_device->battery()) {
0212         m_battery = new DeclarativeBattery(m_device->battery(), this);
0213     }
0214 
0215     Q_EMIT batteryChanged(m_battery);
0216 }
0217 
0218 void DeclarativeDevice::updateInput()
0219 {
0220     if (m_input) {
0221         m_input->deleteLater();
0222         m_input = nullptr;
0223     }
0224 
0225     if (m_device->input()) {
0226         m_input = new DeclarativeInput(m_device->input(), this);
0227     }
0228 
0229     Q_EMIT inputChanged(m_input);
0230 }
0231 
0232 void DeclarativeDevice::updateMediaPlayer()
0233 {
0234     if (m_mediaPlayer) {
0235         m_mediaPlayer->deleteLater();
0236         m_mediaPlayer = nullptr;
0237     }
0238 
0239     if (m_device->mediaPlayer()) {
0240         m_mediaPlayer = new DeclarativeMediaPlayer(m_device->mediaPlayer(), this);
0241     }
0242 
0243     Q_EMIT mediaPlayerChanged(m_mediaPlayer);
0244 }
0245 
0246 #include "moc_declarativedevice.cpp"