File indexing completed on 2025-01-19 12:42:12
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 "declarativeadapter.h" 0010 #include "declarativedevice.h" 0011 0012 static int devicesCountDeclarativeAdapterFunction(QQmlListProperty<DeclarativeDevice> *property) 0013 { 0014 Q_ASSERT(qobject_cast<DeclarativeAdapter *>(property->object)); 0015 DeclarativeAdapter *adapter = static_cast<DeclarativeAdapter *>(property->object); 0016 0017 return adapter->m_devices.count(); 0018 } 0019 0020 static DeclarativeDevice *devicesAtDeclarativeAdapterFunction(QQmlListProperty<DeclarativeDevice> *property, int index) 0021 { 0022 Q_ASSERT(qobject_cast<DeclarativeAdapter *>(property->object)); 0023 DeclarativeAdapter *adapter = static_cast<DeclarativeAdapter *>(property->object); 0024 0025 return adapter->m_devices.values().at(index); 0026 } 0027 0028 DeclarativeAdapter::DeclarativeAdapter(BluezQt::AdapterPtr adapter, QObject *parent) 0029 : QObject(parent) 0030 , m_adapter(adapter) 0031 { 0032 connect(m_adapter.data(), &BluezQt::Adapter::nameChanged, this, &DeclarativeAdapter::nameChanged); 0033 connect(m_adapter.data(), &BluezQt::Adapter::systemNameChanged, this, &DeclarativeAdapter::systemNameChanged); 0034 connect(m_adapter.data(), &BluezQt::Adapter::adapterClassChanged, this, &DeclarativeAdapter::adapterClassChanged); 0035 connect(m_adapter.data(), &BluezQt::Adapter::poweredChanged, this, &DeclarativeAdapter::poweredChanged); 0036 connect(m_adapter.data(), &BluezQt::Adapter::discoverableChanged, this, &DeclarativeAdapter::discoverableChanged); 0037 connect(m_adapter.data(), &BluezQt::Adapter::discoverableTimeoutChanged, this, &DeclarativeAdapter::discoverableTimeoutChanged); 0038 connect(m_adapter.data(), &BluezQt::Adapter::pairableChanged, this, &DeclarativeAdapter::pairableChanged); 0039 connect(m_adapter.data(), &BluezQt::Adapter::pairableTimeoutChanged, this, &DeclarativeAdapter::pairableTimeoutChanged); 0040 connect(m_adapter.data(), &BluezQt::Adapter::discoveringChanged, this, &DeclarativeAdapter::discoveringChanged); 0041 connect(m_adapter.data(), &BluezQt::Adapter::uuidsChanged, this, &DeclarativeAdapter::uuidsChanged); 0042 connect(m_adapter.data(), &BluezQt::Adapter::modaliasChanged, this, &DeclarativeAdapter::modaliasChanged); 0043 0044 connect(m_adapter.data(), &BluezQt::Adapter::deviceAdded, this, &DeclarativeAdapter::slotDeviceAdded); 0045 connect(m_adapter.data(), &BluezQt::Adapter::deviceRemoved, this, &DeclarativeAdapter::slotDeviceRemoved); 0046 0047 connect(m_adapter.data(), &BluezQt::Adapter::adapterRemoved, this, [this]() { 0048 Q_EMIT adapterRemoved(this); 0049 }); 0050 0051 connect(m_adapter.data(), &BluezQt::Adapter::adapterChanged, this, [this]() { 0052 Q_EMIT adapterChanged(this); 0053 }); 0054 0055 connect(m_adapter.data(), &BluezQt::Adapter::deviceChanged, this, [this](const BluezQt::DevicePtr &device) { 0056 Q_EMIT deviceChanged(declarativeDeviceFromPtr(device)); 0057 }); 0058 } 0059 0060 QString DeclarativeAdapter::ubi() const 0061 { 0062 return m_adapter->ubi(); 0063 } 0064 0065 QString DeclarativeAdapter::address() const 0066 { 0067 return m_adapter->address(); 0068 } 0069 0070 QString DeclarativeAdapter::name() const 0071 { 0072 return m_adapter->name(); 0073 } 0074 0075 void DeclarativeAdapter::setName(const QString &name) 0076 { 0077 m_adapter->setName(name); 0078 } 0079 0080 QString DeclarativeAdapter::systemName() const 0081 { 0082 return m_adapter->systemName(); 0083 } 0084 0085 quint32 DeclarativeAdapter::adapterClass() const 0086 { 0087 return m_adapter->adapterClass(); 0088 } 0089 0090 bool DeclarativeAdapter::isPowered() const 0091 { 0092 return m_adapter->isPowered(); 0093 } 0094 0095 void DeclarativeAdapter::setPowered(bool powered) 0096 { 0097 m_adapter->setPowered(powered); 0098 } 0099 0100 bool DeclarativeAdapter::isDiscoverable() const 0101 { 0102 return m_adapter->isDiscoverable(); 0103 } 0104 0105 void DeclarativeAdapter::setDiscoverable(bool discoverable) 0106 { 0107 m_adapter->setDiscoverable(discoverable); 0108 } 0109 0110 quint32 DeclarativeAdapter::discoverableTimeout() const 0111 { 0112 return m_adapter->discoverableTimeout(); 0113 } 0114 0115 void DeclarativeAdapter::setDiscoverableTimeout(quint32 timeout) 0116 { 0117 m_adapter->setDiscoverableTimeout(timeout); 0118 } 0119 0120 bool DeclarativeAdapter::isPairable() const 0121 { 0122 return m_adapter->isPairable(); 0123 } 0124 0125 void DeclarativeAdapter::setPairable(bool pairable) 0126 { 0127 m_adapter->setPairable(pairable); 0128 } 0129 0130 quint32 DeclarativeAdapter::pairableTimeout() const 0131 { 0132 return m_adapter->pairableTimeout(); 0133 } 0134 0135 void DeclarativeAdapter::setPairableTimeout(quint32 timeout) 0136 { 0137 m_adapter->setPairableTimeout(timeout); 0138 } 0139 0140 bool DeclarativeAdapter::isDiscovering() 0141 { 0142 return m_adapter->isDiscovering(); 0143 } 0144 0145 QStringList DeclarativeAdapter::uuids() const 0146 { 0147 return m_adapter->uuids(); 0148 } 0149 0150 QString DeclarativeAdapter::modalias() const 0151 { 0152 return m_adapter->modalias(); 0153 } 0154 0155 QQmlListProperty<DeclarativeDevice> DeclarativeAdapter::devices() 0156 { 0157 return QQmlListProperty<DeclarativeDevice>(this, nullptr, devicesCountDeclarativeAdapterFunction, devicesAtDeclarativeAdapterFunction); 0158 } 0159 0160 DeclarativeDevice *DeclarativeAdapter::deviceForAddress(const QString &address) const 0161 { 0162 return declarativeDeviceFromPtr(m_adapter->deviceForAddress(address)); 0163 } 0164 0165 BluezQt::PendingCall *DeclarativeAdapter::startDiscovery() 0166 { 0167 return m_adapter->startDiscovery(); 0168 } 0169 0170 BluezQt::PendingCall *DeclarativeAdapter::stopDiscovery() 0171 { 0172 return m_adapter->stopDiscovery(); 0173 } 0174 0175 BluezQt::PendingCall *DeclarativeAdapter::removeDevice(DeclarativeDevice *device) 0176 { 0177 return m_adapter->removeDevice(m_adapter->deviceForAddress(device->address())); 0178 } 0179 0180 void DeclarativeAdapter::slotDeviceAdded(BluezQt::DevicePtr device) 0181 { 0182 Q_EMIT deviceFound(declarativeDeviceFromPtr(device)); 0183 Q_EMIT devicesChanged(devices()); 0184 } 0185 0186 void DeclarativeAdapter::slotDeviceRemoved(BluezQt::DevicePtr device) 0187 { 0188 Q_EMIT deviceRemoved(declarativeDeviceFromPtr(device)); 0189 Q_EMIT devicesChanged(devices()); 0190 } 0191 0192 DeclarativeDevice *DeclarativeAdapter::declarativeDeviceFromPtr(BluezQt::DevicePtr ptr) const 0193 { 0194 if (!ptr) { 0195 return nullptr; 0196 } 0197 return m_devices.value(ptr->ubi()); 0198 } 0199 0200 #include "moc_declarativeadapter.cpp"