You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
libcutefish/bluez/declarativedevice.cpp

247 lines
6.3 KiB
C++

/*
* BluezQt - Asynchronous BlueZ wrapper library
*
* SPDX-FileCopyrightText: 2015 David Rosca <nowrep@gmail.com>
*
* SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "declarativedevice.h"
#include "declarativeadapter.h"
// #include "declarativebattery.h"
#include "declarativeinput.h"
#include "declarativemediaplayer.h"
#include <QStringList>
DeclarativeDevice::DeclarativeDevice(BluezQt::DevicePtr device, DeclarativeAdapter *adapter)
: QObject(adapter)
, m_device(device)
, m_adapter(adapter)
// , m_battery(nullptr)
, m_input(nullptr)
, m_mediaPlayer(nullptr)
{
connect(m_device.data(), &BluezQt::Device::nameChanged, this, &DeclarativeDevice::nameChanged);
connect(m_device.data(), &BluezQt::Device::friendlyNameChanged, this, &DeclarativeDevice::friendlyNameChanged);
connect(m_device.data(), &BluezQt::Device::remoteNameChanged, this, &DeclarativeDevice::remoteNameChanged);
connect(m_device.data(), &BluezQt::Device::deviceClassChanged, this, &DeclarativeDevice::deviceClassChanged);
connect(m_device.data(), &BluezQt::Device::typeChanged, this, &DeclarativeDevice::typeChanged);
connect(m_device.data(), &BluezQt::Device::appearanceChanged, this, &DeclarativeDevice::appearanceChanged);
connect(m_device.data(), &BluezQt::Device::iconChanged, this, &DeclarativeDevice::iconChanged);
connect(m_device.data(), &BluezQt::Device::pairedChanged, this, &DeclarativeDevice::pairedChanged);
connect(m_device.data(), &BluezQt::Device::trustedChanged, this, &DeclarativeDevice::trustedChanged);
connect(m_device.data(), &BluezQt::Device::blockedChanged, this, &DeclarativeDevice::blockedChanged);
connect(m_device.data(), &BluezQt::Device::legacyPairingChanged, this, &DeclarativeDevice::legacyPairingChanged);
connect(m_device.data(), &BluezQt::Device::rssiChanged, this, &DeclarativeDevice::rssiChanged);
connect(m_device.data(), &BluezQt::Device::connectedChanged, this, &DeclarativeDevice::connectedChanged);
connect(m_device.data(), &BluezQt::Device::uuidsChanged, this, &DeclarativeDevice::uuidsChanged);
connect(m_device.data(), &BluezQt::Device::modaliasChanged, this, &DeclarativeDevice::modaliasChanged);
connect(m_device.data(), &BluezQt::Device::mediaPlayerChanged, this, &DeclarativeDevice::updateMediaPlayer);
connect(m_device.data(), &BluezQt::Device::inputChanged, this, &DeclarativeDevice::updateInput);
// connect(m_device.data(), &BluezQt::Device::batteryChanged, this, &DeclarativeDevice::updateBattery);
connect(m_device.data(), &BluezQt::Device::deviceRemoved, this, [this]() {
Q_EMIT deviceRemoved(this);
});
connect(m_device.data(), &BluezQt::Device::deviceChanged, this, [this]() {
Q_EMIT deviceChanged(this);
});
updateInput();
updateMediaPlayer();
}
QString DeclarativeDevice::ubi() const
{
return m_device->ubi();
}
QString DeclarativeDevice::address() const
{
return m_device->address();
}
QString DeclarativeDevice::name() const
{
return m_device->name();
}
void DeclarativeDevice::setName(const QString &name)
{
m_device->setName(name);
}
QString DeclarativeDevice::friendlyName() const
{
return m_device->friendlyName();
}
QString DeclarativeDevice::remoteName() const
{
return m_device->remoteName();
}
quint32 DeclarativeDevice::deviceClass() const
{
return m_device->deviceClass();
}
BluezQt::Device::Type DeclarativeDevice::type() const
{
return m_device->type();
}
quint16 DeclarativeDevice::appearance() const
{
return m_device->appearance();
}
QString DeclarativeDevice::icon() const
{
return m_device->icon();
}
bool DeclarativeDevice::isPaired() const
{
return m_device->isPaired();
}
bool DeclarativeDevice::isTrusted() const
{
return m_device->isTrusted();
}
void DeclarativeDevice::setTrusted(bool trusted)
{
m_device->setTrusted(trusted);
}
bool DeclarativeDevice::isBlocked() const
{
return m_device->isBlocked();
}
void DeclarativeDevice::setBlocked(bool blocked)
{
m_device->setBlocked(blocked);
}
bool DeclarativeDevice::hasLegacyPairing() const
{
return m_device->hasLegacyPairing();
}
qint16 DeclarativeDevice::rssi() const
{
return m_device->rssi();
}
bool DeclarativeDevice::isConnected() const
{
return m_device->isConnected();
}
QStringList DeclarativeDevice::uuids() const
{
return m_device->uuids();
}
QString DeclarativeDevice::modalias() const
{
return m_device->modalias();
}
//DeclarativeBattery *DeclarativeDevice::battery() const
//{
// return m_battery;
//}
DeclarativeInput *DeclarativeDevice::input() const
{
return m_input;
}
DeclarativeMediaPlayer *DeclarativeDevice::mediaPlayer() const
{
return m_mediaPlayer;
}
DeclarativeAdapter *DeclarativeDevice::adapter() const
{
return m_adapter;
}
BluezQt::PendingCall *DeclarativeDevice::connectToDevice()
{
return m_device->connectToDevice();
}
BluezQt::PendingCall *DeclarativeDevice::disconnectFromDevice()
{
return m_device->disconnectFromDevice();
}
BluezQt::PendingCall *DeclarativeDevice::connectProfile(const QString &uuid)
{
return m_device->connectProfile(uuid);
}
BluezQt::PendingCall *DeclarativeDevice::disconnectProfile(const QString &uuid)
{
return m_device->disconnectProfile(uuid);
}
BluezQt::PendingCall *DeclarativeDevice::pair()
{
return m_device->pair();
}
BluezQt::PendingCall *DeclarativeDevice::cancelPairing()
{
return m_device->cancelPairing();
}
void DeclarativeDevice::updateBattery()
{
// if (m_battery) {
// m_battery->deleteLater();
// m_battery = nullptr;
// }
// if (m_device->battery()) {
// m_battery = new DeclarativeBattery(m_device->battery(), this);
// }
// Q_EMIT batteryChanged(m_battery);
}
void DeclarativeDevice::updateInput()
{
if (m_input) {
m_input->deleteLater();
m_input = nullptr;
}
if (m_device->input()) {
m_input = new DeclarativeInput(m_device->input(), this);
}
Q_EMIT inputChanged(m_input);
}
void DeclarativeDevice::updateMediaPlayer()
{
if (m_mediaPlayer) {
m_mediaPlayer->deleteLater();
m_mediaPlayer = nullptr;
}
if (m_device->mediaPlayer()) {
m_mediaPlayer = new DeclarativeMediaPlayer(m_device->mediaPlayer(), this);
}
Q_EMIT mediaPlayerChanged(m_mediaPlayer);
}