summaryrefslogtreecommitdiffstats
path: root/qt-ui/btdeviceselectiondialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qt-ui/btdeviceselectiondialog.cpp')
-rw-r--r--qt-ui/btdeviceselectiondialog.cpp35
1 files changed, 28 insertions, 7 deletions
diff --git a/qt-ui/btdeviceselectiondialog.cpp b/qt-ui/btdeviceselectiondialog.cpp
index dfcd64e26..2f5a5d1f9 100644
--- a/qt-ui/btdeviceselectiondialog.cpp
+++ b/qt-ui/btdeviceselectiondialog.cpp
@@ -54,13 +54,9 @@ BtDeviceSelectionDialog::BtDeviceSelectionDialog(QWidget *parent) :
// Update the UI information about the local device
updateLocalDeviceInformation();
- // Intialize the discovery agent
- remoteDeviceDiscoveryAgent = new QBluetoothDeviceDiscoveryAgent();
-
- connect(remoteDeviceDiscoveryAgent, SIGNAL(deviceDiscovered(QBluetoothDeviceInfo)),
- this, SLOT(addRemoteDevice(QBluetoothDeviceInfo)));
- connect(remoteDeviceDiscoveryAgent, SIGNAL(finished()),
- this, SLOT(remoteDeviceScanFinished()));
+ // Initialize the device discovery agent
+ if (localDevice->isValid())
+ initializeDeviceDiscoveryAgent();
}
BtDeviceSelectionDialog::~BtDeviceSelectionDialog()
@@ -194,6 +190,10 @@ void BtDeviceSelectionDialog::localDeviceChanged(int index)
updateLocalDeviceInformation();
ui->dialogStatus->setText(QString("The local device was changed."));
+
+ // Initialize the device discovery agent
+ if (localDevice->isValid())
+ initializeDeviceDiscoveryAgent();
}
void BtDeviceSelectionDialog::displayPairingMenu(const QPoint &pos)
@@ -316,3 +316,24 @@ void BtDeviceSelectionDialog::updateLocalDeviceInformation()
connect(localDevice, SIGNAL(error(QBluetoothLocalDevice::Error)),
this, SLOT(error(QBluetoothLocalDevice::Error)));
}
+
+void BtDeviceSelectionDialog::initializeDeviceDiscoveryAgent()
+{
+ // Intialize the discovery agent
+ remoteDeviceDiscoveryAgent = new QBluetoothDeviceDiscoveryAgent(localDevice->address());
+
+ // Test if the discovery agent was successfully created
+ if (remoteDeviceDiscoveryAgent->error() == QBluetoothDeviceDiscoveryAgent::InvalidBluetoothAdapterError) {
+ ui->dialogStatus->setText(QString("The device discovery agent was not created because the %1 address does not "
+ "match the physical adapter address of any local Bluetooth device.")
+ .arg(localDevice->address().toString()));
+ ui->scan->setEnabled(false);
+ ui->clear->setEnabled(false);
+ return;
+ }
+
+ connect(remoteDeviceDiscoveryAgent, SIGNAL(deviceDiscovered(QBluetoothDeviceInfo)),
+ this, SLOT(addRemoteDevice(QBluetoothDeviceInfo)));
+ connect(remoteDeviceDiscoveryAgent, SIGNAL(finished()),
+ this, SLOT(remoteDeviceScanFinished()));
+}