Index: sources/view/VBluetooth.cpp =================================================================== diff -u -rd00fa04f905b2abdac357a850d737a5f9d5e38df -rfaa306f41ddc70a48d042cc265396ef32116ad97 --- sources/view/VBluetooth.cpp (.../VBluetooth.cpp) (revision d00fa04f905b2abdac357a850d737a5f9d5e38df) +++ sources/view/VBluetooth.cpp (.../VBluetooth.cpp) (revision faa306f41ddc70a48d042cc265396ef32116ad97) @@ -42,8 +42,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())); @@ -137,18 +137,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); } /*!