From ec894f286a983e628826d250905a07bbba8fed46 Mon Sep 17 00:00:00 2001 From: donghualin Date: Fri, 4 Nov 2022 07:39:35 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=BF=AB=E6=8D=B7?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E6=B2=A1=E6=9C=89=E5=88=B7=E6=96=B0=E6=9C=80?= =?UTF-8?q?=E6=96=B0=E7=8A=B6=E6=80=81=E5=9B=BE=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 当插件调用updateDockInfo接口的时候,快捷面板重新最新状态的插件图标的显示 Log: 修复快捷面板没有实时显示图标变化的问题 Influence: 笔记本上打开快捷面板,拔掉电源或插上电源,观察电池状态是否发生变化 Task: https://pms.uniontech.com/task-view-208069.html Change-Id: I81f97d69d3acbcd2a0a8e540274702b21ecde6b5 --- frame/window/quicksettingcontainer.cpp | 31 +++++++++++++++++++------- frame/window/quicksettingcontainer.h | 9 ++++---- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/frame/window/quicksettingcontainer.cpp b/frame/window/quicksettingcontainer.cpp index bb60baa9a..1706e212a 100644 --- a/frame/window/quicksettingcontainer.cpp +++ b/frame/window/quicksettingcontainer.cpp @@ -250,7 +250,7 @@ bool QuickSettingContainer::isApplet(PluginsItemInterface *itemInter) const return json.value("applet").toBool(); } -bool QuickSettingContainer::isQuickPlugin(PluginsItemInterface *itemInter) const +QWidget *QuickSettingContainer::findPluginWindget(PluginsItemInterface *itemInter) const { // 先判断是否为快捷面板区域(类似声音、亮度,音乐等) QWidget *itemWidget = itemInter->itemWidget(QUICK_ITEM_KEY); @@ -269,7 +269,7 @@ bool QuickSettingContainer::isQuickPlugin(PluginsItemInterface *itemInter) const if (!layoutItem || layoutItem->widget() != itemWidget) continue; - return true; + return itemWidget; } } } else { @@ -277,13 +277,14 @@ bool QuickSettingContainer::isQuickPlugin(PluginsItemInterface *itemInter) const if (settingItem->pluginItem() != itemInter) continue; - return true; + return settingItem; } } - return false; + + return nullptr; } -void QuickSettingContainer::onPluginInsert(PluginsItemInterface * itemInter) +void QuickSettingContainer::onPluginInsert(PluginsItemInterface *itemInter) { QWidget *itemWidget = itemInter->itemWidget(QUICK_ITEM_KEY); if (isApplet(itemInter)) { @@ -309,7 +310,7 @@ void QuickSettingContainer::onPluginInsert(PluginsItemInterface * itemInter) onResizeView(); } -void QuickSettingContainer::onPluginRemove(PluginsItemInterface * itemInter) +void QuickSettingContainer::onPluginRemove(PluginsItemInterface *itemInter) { QWidget *itemWidget = itemInter->itemWidget(QUICK_ITEM_KEY); if (itemWidget) { @@ -478,14 +479,16 @@ void QuickSettingContainer::initUi() void QuickSettingContainer::initConnection() { - connect(m_pluginLoader, &QuickSettingController::pluginInserted, this, [ = ](PluginsItemInterface *itemInter, const QuickSettingController::PluginAttribute &pluginClass) { - if (pluginClass != QuickSettingController::PluginAttribute::Quick) + connect(m_pluginLoader, &QuickSettingController::pluginInserted, this, [ = ](PluginsItemInterface *itemInter, const QuickSettingController::PluginAttribute pluginAttr) { + if (pluginAttr != QuickSettingController::PluginAttribute::Quick) return; onPluginInsert(itemInter); }); connect(m_pluginLoader, &QuickSettingController::pluginRemoved, this, &QuickSettingContainer::onPluginRemove); connect(m_pluginLoader, &QuickSettingController::requestAppletShow, this, &QuickSettingContainer::onRequestAppletShow); + connect(m_pluginLoader, &QuickSettingController::pluginUpdated, this, &QuickSettingContainer::onPluginUpdated); + connect(m_playerWidget, &MediaWidget::visibleChanged, this, &QuickSettingContainer::onResizeView); connect(m_brihtnessWidget, &BrightnessWidget::visibleChanged, this, &QuickSettingContainer::onResizeView); connect(m_brihtnessWidget->sliderContainer(), &SliderContainer::iconClicked, this, [ this ](const SliderContainer::IconPosition &iconPosition) { @@ -565,3 +568,15 @@ void QuickSettingContainer::onRequestAppletShow(PluginsItemInterface *itemInter, showWidget(itemApplet, itemInter->pluginDisplayName()); onResizeView(); } + +void QuickSettingContainer::onPluginUpdated(PluginsItemInterface *itemInter, const DockPart dockPart) +{ + if (dockPart != DockPart::QuickPanel) + return; + + QWidget *pluginWidget = findPluginWindget(itemInter); + if (!pluginWidget) + return; + + pluginWidget->update(); +} diff --git a/frame/window/quicksettingcontainer.h b/frame/window/quicksettingcontainer.h index 6e0a548b1..023d9c3bd 100644 --- a/frame/window/quicksettingcontainer.h +++ b/frame/window/quicksettingcontainer.h @@ -64,11 +64,12 @@ protected: void showHomePage(); private Q_SLOTS: - void onPluginInsert(PluginsItemInterface * itemInter); - void onPluginRemove(PluginsItemInterface * itemInter); + void onPluginInsert(PluginsItemInterface *itemInter); + void onPluginRemove(PluginsItemInterface *itemInter); void onItemDetailClick(PluginsItemInterface *pluginInter); void onResizeView(); - void onRequestAppletShow(PluginsItemInterface * itemInter, const QString &itemKey); + void onRequestAppletShow(PluginsItemInterface *itemInter, const QString &itemKey); + void onPluginUpdated(PluginsItemInterface *itemInter, const DockPart dockPart); private: // 加载UI @@ -86,7 +87,7 @@ private: // 判断是否支持显示在面板上 bool isApplet(PluginsItemInterface * itemInter) const; // 判断插件是否在当前快捷面板上 - bool isQuickPlugin(PluginsItemInterface * itemInter) const; + QWidget *findPluginWindget(PluginsItemInterface * itemInter) const; private: static DockPopupWindow *m_popWindow;