summaryrefslogtreecommitdiffstats
path: root/src/bluetoothsettings/discoverymodel.cpp
diff options
context:
space:
mode:
authorTeemu Holappa <teemu.holappa@qt.io>2017-02-27 10:24:53 +0200
committerTeemu Holappa <teemu.holappa@qt.io>2017-05-03 06:32:17 +0000
commit48fb704e64300387f99c4192436728858c8aa4f8 (patch)
tree1891c25100a6cdf0f1260c0c5ca1f469887828c8 /src/bluetoothsettings/discoverymodel.cpp
parent314de829065a3fa411b8fed90ff1289b000e229b (diff)
Fix issue when no Bluetooth device is available
Added async scan of the bluetooth adapter. Done some cleanup to the public class. Task-number: QTBUG-57676 Change-Id: Ia845f2f8c18fb8272160167482e5124c0b43fee7 Reviewed-by: Mikko Gronoff <mikko.gronoff@qt.io> Reviewed-by: Samuli Piippo <samuli.piippo@qt.io>
Diffstat (limited to 'src/bluetoothsettings/discoverymodel.cpp')
-rw-r--r--src/bluetoothsettings/discoverymodel.cpp25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/bluetoothsettings/discoverymodel.cpp b/src/bluetoothsettings/discoverymodel.cpp
index 00dbb0c..3cae1df 100644
--- a/src/bluetoothsettings/discoverymodel.cpp
+++ b/src/bluetoothsettings/discoverymodel.cpp
@@ -150,20 +150,13 @@ BtDeviceItem::DeviceType BtDeviceItem::getPhoneDeviceType(const quint8 minor) co
DiscoveryModel::DiscoveryModel(QObject *parent)
: QAbstractListModel(parent)
- ,m_discoveryAgent(new QBluetoothDeviceDiscoveryAgent(this))
+ ,m_discoveryAgent(Q_NULLPTR)
{
m_roleNames.insert(Qt::UserRole, "modelData");
m_roleNames.insert(Address, "address");
m_roleNames.insert(Name, "name");
m_roleNames.insert(Type, "type");
m_roleNames.insert(Connected, "connected");
-
- connect(m_discoveryAgent, SIGNAL(deviceDiscovered(QBluetoothDeviceInfo)),
- this, SLOT(deviceDiscovered(QBluetoothDeviceInfo)));
-
- connect(m_discoveryAgent, SIGNAL(finished()),
- this, SIGNAL(scanFinished()));
-
}
void DiscoveryModel::deviceDiscovered(const QBluetoothDeviceInfo &device)
@@ -181,9 +174,25 @@ DiscoveryModel::~DiscoveryModel()
void DiscoveryModel::scanDevices()
{
+ if (!m_discoveryAgent) {
+ m_discoveryAgent = new QBluetoothDeviceDiscoveryAgent(this);
+ connect(m_discoveryAgent, SIGNAL(deviceDiscovered(QBluetoothDeviceInfo)),
+ this, SLOT(deviceDiscovered(QBluetoothDeviceInfo)));
+
+ connect(m_discoveryAgent, SIGNAL(finished()),
+ this, SIGNAL(scanFinished()));
+ }
+
m_discoveryAgent->start();
}
+void DiscoveryModel::stopScanning()
+{
+ if (m_discoveryAgent) {
+ m_discoveryAgent->stop();
+ }
+}
+
QHash<int, QByteArray> DiscoveryModel::roleNames() const
{
return m_roleNames;