Index: sources/view/VBluetooth.cpp =================================================================== diff -u -rc5f61421dd55f0b26a884b5739867f370a52e023 -rdca8a36ea292270c4de986c0f0872f1ee1e5f85a --- sources/view/VBluetooth.cpp (.../VBluetooth.cpp) (revision c5f61421dd55f0b26a884b5739867f370a52e023) +++ sources/view/VBluetooth.cpp (.../VBluetooth.cpp) (revision dca8a36ea292270c4de986c0f0872f1ee1e5f85a) @@ -36,8 +36,8 @@ this, SLOT(onDisconnectedFromDevice(QBluetoothDeviceInfo))); // outgoing - connect(this, SIGNAL(didSelectDevice(const QString)), - &_BLEScanner, SLOT(doSelectDevice(const QString))); + connect(this, SIGNAL(didSelectDevice(const QString, const QString)), + &_BLEScanner, SLOT(doSelectDevice(const QString, const QString))); connect(this, SIGNAL(didRequestScanForDevices()), &_BLEScanner, SLOT(doScanForDevices())); @@ -131,18 +131,20 @@ * \brief VBluetooth::onSelectedDevice * Emits a signal that the device was selected * \param addr - the selected BLE mac address + * \param name - the selected BLE device name */ -void VBluetooth::doSelectDevice(const QString &addr) +void VBluetooth::doSelectDevice(const QString &addr, const QString &name) { - for (QObject *device : _unpairedDevices) { - VBluetoothDeviceInfo *d = static_cast(device); - if (addr == d->getAddress()) - { - delete _lastSelectedDevice; - _lastSelectedDevice = new VBluetoothDeviceInfo(addr, d->getName()); - emit didSelectDevice(addr); - } + if (_lastSelectedDevice != nullptr && _lastSelectedDevice->getAddress() != addr) + { + QBluetoothDeviceInfo deviceInfo = QBluetoothDeviceInfo(QBluetoothAddress(addr), name, + QBluetoothDeviceInfo::HealthBloodPressureMonitor); + onDisconnectedFromDevice(deviceInfo); } + + delete _lastSelectedDevice; + _lastSelectedDevice = new VBluetoothDeviceInfo(addr, name); + emit didSelectDevice(addr, name); } /*!