diff --git a/plugins/bluetooth/bluetoothapplet.cpp b/plugins/bluetooth/bluetoothapplet.cpp index 2b9f14fa3..ee6eefa25 100644 --- a/plugins/bluetooth/bluetoothapplet.cpp +++ b/plugins/bluetooth/bluetoothapplet.cpp @@ -317,3 +317,11 @@ void BluetoothApplet::getDevieInitStatus(AdapterItem *item) break; } } + +void BluetoothApplet::setAdapterRefresh() +{ + for (AdapterItem *adapterItem : m_adapterItems) { + if (adapterItem) + adapterItem->refresh(); + } +} diff --git a/plugins/bluetooth/bluetoothapplet.h b/plugins/bluetooth/bluetoothapplet.h index 9274c5e2c..0972f1b0a 100644 --- a/plugins/bluetooth/bluetoothapplet.h +++ b/plugins/bluetooth/bluetoothapplet.h @@ -41,6 +41,7 @@ class BluetoothApplet : public QScrollArea public: explicit BluetoothApplet(QWidget *parent = nullptr); void setAdapterPowered(bool powered); + void setAdapterRefresh(); bool poweredInitState(); bool hasAadapter(); QStringList connectedDevsName(); diff --git a/plugins/bluetooth/bluetoothitem.cpp b/plugins/bluetooth/bluetoothitem.cpp index 90d4df57e..27beffaa7 100644 --- a/plugins/bluetooth/bluetoothitem.cpp +++ b/plugins/bluetooth/bluetoothitem.cpp @@ -68,6 +68,8 @@ QWidget *BluetoothItem::tipsWidget() QWidget *BluetoothItem::popupApplet() { + if (m_applet && m_applet->hasAadapter()) + m_applet->setAdapterRefresh(); return m_applet->hasAadapter() ? m_applet : nullptr; } diff --git a/plugins/bluetooth/componments/adapteritem.cpp b/plugins/bluetooth/componments/adapteritem.cpp index 873fcdf6f..717df94fa 100644 --- a/plugins/bluetooth/componments/adapteritem.cpp +++ b/plugins/bluetooth/componments/adapteritem.cpp @@ -49,7 +49,6 @@ AdapterItem::AdapterItem(AdaptersManager *adapterManager, Adapter *adapter, QWid m_switchItem->setTitle(adapter->name()); m_switchItem->setChecked(adapter->powered(),false); m_switchItem->setLoading(adapter->discover()); - m_adaptersManager->setAdapterPowered(m_adapter, adapter->powered()); m_deviceLayout->addWidget(m_switchItem); m_deviceLayout->addWidget(m_line); @@ -343,6 +342,8 @@ void AdapterItem::showDevices(bool powered) void AdapterItem::refresh() { + if (m_adapter->discover()) + return; m_adaptersManager->adapterRefresh(m_adapter); } diff --git a/plugins/bluetooth/componments/adapteritem.h b/plugins/bluetooth/componments/adapteritem.h index 7ac84a82a..8564f0d4d 100644 --- a/plugins/bluetooth/componments/adapteritem.h +++ b/plugins/bluetooth/componments/adapteritem.h @@ -60,6 +60,8 @@ private slots: void addDeviceItem(const Device *constDevice); void deviceChangeState(const Device::State state); void moveDeviceItem(Device::State state, DeviceItem *item); + +public slots: void refresh(); private: