1/*
2 * BluezQt - Asynchronous Bluez wrapper library
3 *
4 * SPDX-FileCopyrightText: 2015 David Rosca <nowrep@gmail.com>
5 *
6 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
7 */
8
9#include "declarativeadapter.h"
10static qsizetype devicesCountDeclarativeAdapterFunction(QQmlListProperty<DeclarativeDevice> *property)
11{
12 Q_ASSERT(qobject_cast<DeclarativeAdapter *>(property->object));
13 DeclarativeAdapter *adapter = static_cast<DeclarativeAdapter *>(property->object);
14
15 return adapter->m_devices.count();
16}
17
18static DeclarativeDevice *devicesAtDeclarativeAdapterFunction(QQmlListProperty<DeclarativeDevice> *property, qsizetype index)
19{
20 Q_ASSERT(qobject_cast<DeclarativeAdapter *>(property->object));
21 DeclarativeAdapter *adapter = static_cast<DeclarativeAdapter *>(property->object);
22
23 return adapter->m_devices.values().at(i: index);
24}
25
26DeclarativeAdapter::DeclarativeAdapter(BluezQt::AdapterPtr adapter, QObject *parent)
27 : QObject(parent)
28 , m_adapter(adapter)
29{
30 connect(sender: m_adapter.data(), signal: &BluezQt::Adapter::nameChanged, context: this, slot: &DeclarativeAdapter::nameChanged);
31 connect(sender: m_adapter.data(), signal: &BluezQt::Adapter::systemNameChanged, context: this, slot: &DeclarativeAdapter::systemNameChanged);
32 connect(sender: m_adapter.data(), signal: &BluezQt::Adapter::adapterClassChanged, context: this, slot: &DeclarativeAdapter::adapterClassChanged);
33 connect(sender: m_adapter.data(), signal: &BluezQt::Adapter::poweredChanged, context: this, slot: &DeclarativeAdapter::poweredChanged);
34 connect(sender: m_adapter.data(), signal: &BluezQt::Adapter::discoverableChanged, context: this, slot: &DeclarativeAdapter::discoverableChanged);
35 connect(sender: m_adapter.data(), signal: &BluezQt::Adapter::discoverableTimeoutChanged, context: this, slot: &DeclarativeAdapter::discoverableTimeoutChanged);
36 connect(sender: m_adapter.data(), signal: &BluezQt::Adapter::pairableChanged, context: this, slot: &DeclarativeAdapter::pairableChanged);
37 connect(sender: m_adapter.data(), signal: &BluezQt::Adapter::pairableTimeoutChanged, context: this, slot: &DeclarativeAdapter::pairableTimeoutChanged);
38 connect(sender: m_adapter.data(), signal: &BluezQt::Adapter::discoveringChanged, context: this, slot: &DeclarativeAdapter::discoveringChanged);
39 connect(sender: m_adapter.data(), signal: &BluezQt::Adapter::uuidsChanged, context: this, slot: &DeclarativeAdapter::uuidsChanged);
40 connect(sender: m_adapter.data(), signal: &BluezQt::Adapter::modaliasChanged, context: this, slot: &DeclarativeAdapter::modaliasChanged);
41
42 connect(sender: m_adapter.data(), signal: &BluezQt::Adapter::deviceAdded, context: this, slot: &DeclarativeAdapter::slotDeviceAdded);
43 connect(sender: m_adapter.data(), signal: &BluezQt::Adapter::deviceRemoved, context: this, slot: &DeclarativeAdapter::slotDeviceRemoved);
44
45 connect(sender: m_adapter.data(), signal: &BluezQt::Adapter::adapterRemoved, context: this, slot: [this]() {
46 Q_EMIT adapterRemoved(adapter: this);
47 });
48
49 connect(sender: m_adapter.data(), signal: &BluezQt::Adapter::adapterChanged, context: this, slot: [this]() {
50 Q_EMIT adapterChanged(adapter: this);
51 });
52
53 connect(sender: m_adapter.data(), signal: &BluezQt::Adapter::deviceChanged, context: this, slot: [this](const BluezQt::DevicePtr &device) {
54 Q_EMIT deviceChanged(device: declarativeDeviceFromPtr(ptr: device));
55 });
56}
57
58QString DeclarativeAdapter::ubi() const
59{
60 return m_adapter->ubi();
61}
62
63QString DeclarativeAdapter::address() const
64{
65 return m_adapter->address();
66}
67
68QString DeclarativeAdapter::name() const
69{
70 return m_adapter->name();
71}
72
73void DeclarativeAdapter::setName(const QString &name)
74{
75 m_adapter->setName(name);
76}
77
78QString DeclarativeAdapter::systemName() const
79{
80 return m_adapter->systemName();
81}
82
83quint32 DeclarativeAdapter::adapterClass() const
84{
85 return m_adapter->adapterClass();
86}
87
88bool DeclarativeAdapter::isPowered() const
89{
90 return m_adapter->isPowered();
91}
92
93void DeclarativeAdapter::setPowered(bool powered)
94{
95 m_adapter->setPowered(powered);
96}
97
98bool DeclarativeAdapter::isDiscoverable() const
99{
100 return m_adapter->isDiscoverable();
101}
102
103void DeclarativeAdapter::setDiscoverable(bool discoverable)
104{
105 m_adapter->setDiscoverable(discoverable);
106}
107
108quint32 DeclarativeAdapter::discoverableTimeout() const
109{
110 return m_adapter->discoverableTimeout();
111}
112
113void DeclarativeAdapter::setDiscoverableTimeout(quint32 timeout)
114{
115 m_adapter->setDiscoverableTimeout(timeout);
116}
117
118bool DeclarativeAdapter::isPairable() const
119{
120 return m_adapter->isPairable();
121}
122
123void DeclarativeAdapter::setPairable(bool pairable)
124{
125 m_adapter->setPairable(pairable);
126}
127
128quint32 DeclarativeAdapter::pairableTimeout() const
129{
130 return m_adapter->pairableTimeout();
131}
132
133void DeclarativeAdapter::setPairableTimeout(quint32 timeout)
134{
135 m_adapter->setPairableTimeout(timeout);
136}
137
138bool DeclarativeAdapter::isDiscovering()
139{
140 return m_adapter->isDiscovering();
141}
142
143QStringList DeclarativeAdapter::uuids() const
144{
145 return m_adapter->uuids();
146}
147
148QString DeclarativeAdapter::modalias() const
149{
150 return m_adapter->modalias();
151}
152
153QQmlListProperty<DeclarativeDevice> DeclarativeAdapter::devices()
154{
155 return QQmlListProperty<DeclarativeDevice>(this, nullptr, devicesCountDeclarativeAdapterFunction, devicesAtDeclarativeAdapterFunction);
156}
157
158DeclarativeDevice *DeclarativeAdapter::deviceForAddress(const QString &address) const
159{
160 return declarativeDeviceFromPtr(ptr: m_adapter->deviceForAddress(address));
161}
162
163BluezQt::PendingCall *DeclarativeAdapter::startDiscovery()
164{
165 return m_adapter->startDiscovery();
166}
167
168BluezQt::PendingCall *DeclarativeAdapter::stopDiscovery()
169{
170 return m_adapter->stopDiscovery();
171}
172
173BluezQt::PendingCall *DeclarativeAdapter::removeDevice(DeclarativeDevice *device)
174{
175 return m_adapter->removeDevice(device: m_adapter->deviceForAddress(address: device->address()));
176}
177
178void DeclarativeAdapter::slotDeviceAdded(BluezQt::DevicePtr device)
179{
180 Q_EMIT deviceFound(device: declarativeDeviceFromPtr(ptr: device));
181 Q_EMIT devicesChanged(devices: devices());
182}
183
184void DeclarativeAdapter::slotDeviceRemoved(BluezQt::DevicePtr device)
185{
186 Q_EMIT deviceRemoved(device: declarativeDeviceFromPtr(ptr: device));
187 Q_EMIT devicesChanged(devices: devices());
188}
189
190DeclarativeDevice *DeclarativeAdapter::declarativeDeviceFromPtr(BluezQt::DevicePtr ptr) const
191{
192 if (!ptr) {
193 return nullptr;
194 }
195 return m_devices.value(key: ptr->ubi());
196}
197
198#include "moc_declarativeadapter.cpp"
199

source code of bluez-qt/src/imports/declarativeadapter.cpp