summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorAlex Blasche <alexander.blasche@digia.com>2014-06-05 13:44:43 +0200
committerAlex Blasche <alexander.blasche@digia.com>2014-06-16 08:38:53 +0200
commitad0df0de1b75ec32574f92f8165d64615cff3dfd (patch)
tree7c2163a856f8bb840650db91e431aa98b1f7f547 /examples
parent5fe214b8db0c192ea5520e7fdb20f546b02af88b (diff)
Properly deal with pairing errors in btfiletransfer examplev5.3.1
Pairing error signals were ignored which lead to a situation in which the UI remained in the "attempting to pair" state. Change-Id: I66f8855cf5ab72d608650b36a844c53e27624452 Reviewed-by: Oleg Shparber <trollixx@gmail.com> Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/bluetooth/btfiletransfer/remoteselector.cpp35
-rw-r--r--examples/bluetooth/btfiletransfer/remoteselector.h2
2 files changed, 26 insertions, 11 deletions
diff --git a/examples/bluetooth/btfiletransfer/remoteselector.cpp b/examples/bluetooth/btfiletransfer/remoteselector.cpp
index 84619a4e..08072d14 100644
--- a/examples/bluetooth/btfiletransfer/remoteselector.cpp
+++ b/examples/bluetooth/btfiletransfer/remoteselector.cpp
@@ -59,7 +59,8 @@ QT_USE_NAMESPACE
RemoteSelector::RemoteSelector(QWidget *parent)
: QDialog(parent), ui(new Ui::RemoteSelector),
- m_localDevice(new QBluetoothLocalDevice), m_pindisplay(0)
+ m_localDevice(new QBluetoothLocalDevice), m_pindisplay(0),
+ m_pairingError(false)
{
ui->setupUi(this);
@@ -85,9 +86,14 @@ RemoteSelector::RemoteSelector(QWidget *parent)
ui->remoteDevices->setColumnWidth(3, 75);
ui->remoteDevices->setColumnWidth(4, 100);
- connect(m_localDevice, SIGNAL(pairingDisplayPinCode(QBluetoothAddress,QString)), this, SLOT(displayPin(QBluetoothAddress,QString)));
- connect(m_localDevice, SIGNAL(pairingDisplayConfirmation(QBluetoothAddress,QString)), this, SLOT(displayConfirmation(QBluetoothAddress,QString)));
- connect(m_localDevice, SIGNAL(pairingFinished(QBluetoothAddress,QBluetoothLocalDevice::Pairing)), this, SLOT(pairingFinished(QBluetoothAddress,QBluetoothLocalDevice::Pairing)));
+ connect(m_localDevice, SIGNAL(pairingDisplayPinCode(QBluetoothAddress,QString)),
+ this, SLOT(displayPin(QBluetoothAddress,QString)));
+ connect(m_localDevice, SIGNAL(pairingDisplayConfirmation(QBluetoothAddress,QString)),
+ this, SLOT(displayConfirmation(QBluetoothAddress,QString)));
+ connect(m_localDevice, SIGNAL(pairingFinished(QBluetoothAddress,QBluetoothLocalDevice::Pairing)),
+ this, SLOT(pairingFinished(QBluetoothAddress,QBluetoothLocalDevice::Pairing)));
+ connect(m_localDevice, SIGNAL(error(QBluetoothLocalDevice::Error)),
+ this, SLOT(pairingError(QBluetoothLocalDevice::Error)));
ui->busyWidget->setMovie(new QMovie(":/icons/busy.gif"));
ui->busyWidget->movie()->start();
@@ -97,8 +103,6 @@ RemoteSelector::RemoteSelector(QWidget *parent)
ui->remoteDevices->clearContents();
ui->remoteDevices->setRowCount(0);
-
-
}
RemoteSelector::~RemoteSelector()
@@ -324,12 +328,13 @@ void RemoteSelector::pairingFinished(const QBluetoothAddress &address, QBluetoot
delete m_pindisplay;
QMessageBox msgBox;
- if (status == QBluetoothLocalDevice::Paired ||
- status == QBluetoothLocalDevice::AuthorizedPaired){
- msgBox.setText("Paired successfully with" + address.toString());
- }
- else {
+ if (m_pairingError) {
msgBox.setText("Pairing failed with " + address.toString());
+ } else if (status == QBluetoothLocalDevice::Paired
+ || status == QBluetoothLocalDevice::AuthorizedPaired) {
+ msgBox.setText("Paired successfully with " + address.toString());
+ } else {
+ msgBox.setText("Pairing released with " + address.toString());
}
if (service.isValid()){
@@ -347,11 +352,19 @@ void RemoteSelector::pairingFinished(const QBluetoothAddress &address, QBluetoot
}
}
+ m_pairingError = false;
msgBox.exec();
ui->remoteDevices->blockSignals(false);
+}
+void RemoteSelector::pairingError(QBluetoothLocalDevice::Error error)
+{
+ if (error != QBluetoothLocalDevice::PairingError)
+ return;
+ m_pairingError = true;
+ pairingFinished(m_service.device().address(), QBluetoothLocalDevice::Unpaired);
}
void RemoteSelector::on_remoteDevices_cellClicked(int row, int column)
diff --git a/examples/bluetooth/btfiletransfer/remoteselector.h b/examples/bluetooth/btfiletransfer/remoteselector.h
index fe1d3966..ec2e4fd5 100644
--- a/examples/bluetooth/btfiletransfer/remoteselector.h
+++ b/examples/bluetooth/btfiletransfer/remoteselector.h
@@ -83,6 +83,7 @@ private:
QFile *m_file;
QBluetoothLocalDevice *m_localDevice;
QPointer<pinDisplay> m_pindisplay;
+ bool m_pairingError;
QString addressToName(const QBluetoothAddress &address);
@@ -98,6 +99,7 @@ private slots:
void on_stopButton_clicked();
void pairingFinished(const QBluetoothAddress &address,QBluetoothLocalDevice::Pairing pairing);
+ void pairingError(QBluetoothLocalDevice::Error error);
void displayPin(const QBluetoothAddress &address, QString pin);
void displayConfirmation(const QBluetoothAddress &address, QString pin);
void displayConfReject();