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