From 94d3aa04dccc3c10980188bd357618e2a9f2fa83 Mon Sep 17 00:00:00 2001 From: Claudiu Olteanu Date: Mon, 13 Jul 2015 23:44:09 +0300 Subject: Wait until the BT scanning process is done on Android platforms Block the Save button on Android platforms until the scanning for remote Bluetooth devices is finished. The reason we do that is because there is a bug on the Android platform or on the QtBluetooth library which stops the downloading process and blocks the devices on the Download mode. Signed-off-by: Claudiu Olteanu Signed-off-by: Dirk Hohndel --- qt-ui/btdeviceselectiondialog.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/qt-ui/btdeviceselectiondialog.cpp b/qt-ui/btdeviceselectiondialog.cpp index 436dca510..9b97da3a9 100644 --- a/qt-ui/btdeviceselectiondialog.cpp +++ b/qt-ui/btdeviceselectiondialog.cpp @@ -108,6 +108,21 @@ void BtDeviceSelectionDialog::remoteDeviceScanFinished() { ui->dialogStatus->setText("Scanning finished."); ui->scan->setEnabled(true); + +#if defined(Q_OS_ANDROID) + // Check if there is a selected device and activate the Save button if it is paired + QListWidgetItem *currentItem = ui->discoveredDevicesList->currentItem(); + + if (currentItem != NULL) { + QBluetoothDeviceInfo remoteDeviceInfo = currentItem->data(Qt::UserRole).value(); + QBluetoothLocalDevice::Pairing pairingStatus = localDevice->pairingStatus(remoteDeviceInfo.address()); + + if (pairingStatus != QBluetoothLocalDevice::Unpaired) { + ui->save->setEnabled(true); + ui->dialogStatus->setText("Scanning finished. You can press the Save button and start the download."); + } + } +#endif } void BtDeviceSelectionDialog::hostModeStateChanged(QBluetoothLocalDevice::HostMode mode) @@ -156,6 +171,13 @@ void BtDeviceSelectionDialog::itemActivated(QListWidgetItem *item) .arg(remoteDeviceInfo.address().toString())); ui->save->setEnabled(false); } else { +#if defined(Q_OS_ANDROID) + if (remoteDeviceDiscoveryAgent->isActive()) { + ui->dialogStatus->setText(QString("The device %1 can be used for connection. Wait until the device scanning is done and press the Save button.") + .arg(remoteDeviceInfo.address().toString())); + return; + } +#endif ui->dialogStatus->setText(QString("The device %1 can be used for connection. You can press the Save button.") .arg(remoteDeviceInfo.address().toString())); ui->save->setEnabled(true); -- cgit v1.2.3-70-g09d2