diff options
author | Alex Blasche <alexander.blasche@digia.com> | 2013-09-23 14:55:35 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-25 11:26:46 +0200 |
commit | 176d5208a3301ade9fea2b0681474dbff253b6a8 (patch) | |
tree | f8050c28a2e69d7d557b6dc638e127ebf9ef6ebf | |
parent | 85de7d64e85aa058f1777bc9d1a778790b1d50a6 (diff) |
Emit service discovery error during internal device discovery
This was discovered when starting a service discovery while no
Bluetooth device is connected.
Change-Id: Ibb970ee6cb95ff50bca635813cce23c4d7f8e3c6
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
-rw-r--r-- | examples/bluetooth/btchat/remoteselector.cpp | 3 | ||||
-rw-r--r-- | src/bluetooth/qbluetoothservicediscoveryagent.cpp | 20 | ||||
-rw-r--r-- | src/bluetooth/qbluetoothservicediscoveryagent.h | 1 | ||||
-rw-r--r-- | src/bluetooth/qbluetoothservicediscoveryagent_p.h | 1 |
4 files changed, 23 insertions, 2 deletions
diff --git a/examples/bluetooth/btchat/remoteselector.cpp b/examples/bluetooth/btchat/remoteselector.cpp index 73f56a54..e6fd728f 100644 --- a/examples/bluetooth/btchat/remoteselector.cpp +++ b/examples/bluetooth/btchat/remoteselector.cpp @@ -57,6 +57,7 @@ RemoteSelector::RemoteSelector(const QBluetoothAddress &localAdapter, QWidget *p connect(m_discoveryAgent, SIGNAL(serviceDiscovered(QBluetoothServiceInfo)), this, SLOT(serviceDiscovered(QBluetoothServiceInfo))); connect(m_discoveryAgent, SIGNAL(finished()), this, SLOT(discoveryFinished())); + connect(m_discoveryAgent, SIGNAL(canceled()), this, SLOT(discoveryFinished())); } RemoteSelector::~RemoteSelector() @@ -67,6 +68,7 @@ RemoteSelector::~RemoteSelector() void RemoteSelector::startDiscovery(const QBluetoothUuid &uuid) { + ui->status->setText(tr("Scanning...")); if (m_discoveryAgent->isActive()) m_discoveryAgent->stop(); @@ -75,7 +77,6 @@ void RemoteSelector::startDiscovery(const QBluetoothUuid &uuid) m_discoveryAgent->setUuidFilter(uuid); m_discoveryAgent->start(); - ui->status->setText(tr("Scanning...")); } void RemoteSelector::stopDiscovery() diff --git a/src/bluetooth/qbluetoothservicediscoveryagent.cpp b/src/bluetooth/qbluetoothservicediscoveryagent.cpp index b613642c..1bf31245 100644 --- a/src/bluetooth/qbluetoothservicediscoveryagent.cpp +++ b/src/bluetooth/qbluetoothservicediscoveryagent.cpp @@ -99,7 +99,8 @@ QT_BEGIN_NAMESPACE /*! \fn QBluetoothServiceDiscoveryAgent::finished() - This signal is emitted when Bluetooth service discovery completes. + This signal is emitted when Bluetooth service discovery completes. This signal will even + be emitted when an error occurred during the service discovery. */ /*! @@ -338,6 +339,8 @@ void QBluetoothServiceDiscoveryAgentPrivate::startDeviceDiscovery() q, SLOT(_q_deviceDiscoveryFinished())); QObject::connect(deviceDiscoveryAgent, SIGNAL(deviceDiscovered(QBluetoothDeviceInfo)), q, SLOT(_q_deviceDiscovered(QBluetoothDeviceInfo))); + QObject::connect(deviceDiscoveryAgent, SIGNAL(error(QBluetoothDeviceDiscoveryAgent::Error)), + q, SLOT(_q_deviceDiscoveryError(QBluetoothDeviceDiscoveryAgent::Error))); } @@ -372,6 +375,7 @@ void QBluetoothServiceDiscoveryAgentPrivate::_q_deviceDiscoveryFinished() setDiscoveryState(Inactive); Q_Q(QBluetoothServiceDiscoveryAgent); + emit q->error(error); emit q->finished(); return; } @@ -405,6 +409,20 @@ void QBluetoothServiceDiscoveryAgentPrivate::_q_deviceDiscovered(const QBluetoot } } +void QBluetoothServiceDiscoveryAgentPrivate::_q_deviceDiscoveryError(QBluetoothDeviceDiscoveryAgent::Error newError) +{ + error = static_cast<QBluetoothServiceDiscoveryAgent::Error>(newError); + + deviceDiscoveryAgent->stop(); + delete deviceDiscoveryAgent; + deviceDiscoveryAgent = 0; + + setDiscoveryState(Inactive); + Q_Q(QBluetoothServiceDiscoveryAgent); + emit q->error(error); + emit q->finished(); +} + /*! Starts service discovery for the next device. */ diff --git a/src/bluetooth/qbluetoothservicediscoveryagent.h b/src/bluetooth/qbluetoothservicediscoveryagent.h index f4786f7e..f923c2d0 100644 --- a/src/bluetooth/qbluetoothservicediscoveryagent.h +++ b/src/bluetooth/qbluetoothservicediscoveryagent.h @@ -108,6 +108,7 @@ private: Q_PRIVATE_SLOT(d_func(), void _q_deviceDiscovered(const QBluetoothDeviceInfo &info)) Q_PRIVATE_SLOT(d_func(), void _q_deviceDiscoveryFinished()) + Q_PRIVATE_SLOT(d_func(), void _q_deviceDiscoveryError(QBluetoothDeviceDiscoveryAgent::Error)) Q_PRIVATE_SLOT(d_func(), void _q_serviceDiscoveryFinished()) #ifdef QT_BLUEZ_BLUETOOTH Q_PRIVATE_SLOT(d_func(), void _q_discoveredServices(QDBusPendingCallWatcher*)) diff --git a/src/bluetooth/qbluetoothservicediscoveryagent_p.h b/src/bluetooth/qbluetoothservicediscoveryagent_p.h index 697fe662..517f6a98 100644 --- a/src/bluetooth/qbluetoothservicediscoveryagent_p.h +++ b/src/bluetooth/qbluetoothservicediscoveryagent_p.h @@ -105,6 +105,7 @@ public: void _q_deviceDiscoveryFinished(); void _q_deviceDiscovered(const QBluetoothDeviceInfo &info); void _q_serviceDiscoveryFinished(); + void _q_deviceDiscoveryError(QBluetoothDeviceDiscoveryAgent::Error); #ifdef QT_BLUEZ_BLUETOOTH void _q_discoveredServices(QDBusPendingCallWatcher *watcher); void _q_createdDevice(QDBusPendingCallWatcher *watcher); |