diff --git a/plugins/dde-dock/bluetooth/componments/bluetoothadapteritem.cpp b/plugins/dde-dock/bluetooth/componments/bluetoothadapteritem.cpp index f146b5880..df7385b7c 100644 --- a/plugins/dde-dock/bluetooth/componments/bluetoothadapteritem.cpp +++ b/plugins/dde-dock/bluetooth/componments/bluetoothadapteritem.cpp @@ -428,7 +428,13 @@ void BluetoothAdapterItem::initConnect() }); connect(m_adapter, &Adapter::poweredChanged, this, [ = ](bool state) { - initData(); + if (state) { + // Initialize device list when bluetooth is powered on + initData(); + } else { + // Clear device list when bluetooth is powered off + clearDeviceList(); + } m_refreshBtn->setVisible(state); m_myDeviceWidget->setVisible(m_myDeviceModel->rowCount() > 0 && state); m_otherDeviceListView->setVisible(state && (m_otherDeviceControlWidget->isExpand() || m_myDeviceModel->rowCount() < 1)); @@ -438,11 +444,8 @@ void BluetoothAdapterItem::initConnect() }); connect(m_adapterStateBtn, &DSwitchButton::clicked, this, [ = ](bool state) { m_adapterSwitchEnabled = state; - qDeleteAll(m_deviceItems); - m_deviceItems.clear(); - m_myDeviceModel->clear(); + clearDeviceList(); m_myDeviceWidget->setVisible(false); - m_otherDeviceModel->clear(); m_otherDeviceListView->setVisible(false); m_adapterStateBtn->setEnabled(false); m_refreshBtn->setVisible(state); @@ -550,3 +553,11 @@ void BluetoothAdapterItem::updateMyDeviceLabelTheme() palette.setColor(QPalette::WindowText, textColor); DPaletteHelper::instance()->setPalette(m_myDeviceLabel, palette); } + +void BluetoothAdapterItem::clearDeviceList() +{ + qDeleteAll(m_deviceItems); + m_deviceItems.clear(); + m_myDeviceModel->clear(); + m_otherDeviceModel->clear(); +} diff --git a/plugins/dde-dock/bluetooth/componments/bluetoothadapteritem.h b/plugins/dde-dock/bluetooth/componments/bluetoothadapteritem.h index de8b5ccad..a8477164b 100644 --- a/plugins/dde-dock/bluetooth/componments/bluetoothadapteritem.h +++ b/plugins/dde-dock/bluetooth/componments/bluetoothadapteritem.h @@ -180,6 +180,7 @@ public slots: void initConnect(); void setUnnamedDevicesVisible(bool isShow); void updateMyDeviceLabelTheme(); + void clearDeviceList(); Adapter *m_adapter; SettingLabel *m_adapterLabel;