fix: 修复快捷面板没有刷新最新状态图的问题

当插件调用updateDockInfo接口的时候,快捷面板重新最新状态的插件图标的显示

Log: 修复快捷面板没有实时显示图标变化的问题
Influence: 笔记本上打开快捷面板,拔掉电源或插上电源,观察电池状态是否发生变化
Task: https://pms.uniontech.com/task-view-208069.html
Change-Id: I81f97d69d3acbcd2a0a8e540274702b21ecde6b5
This commit is contained in:
donghualin 2022-11-04 07:39:35 +00:00
parent e67b016b27
commit ec894f286a
2 changed files with 28 additions and 12 deletions

View File

@ -250,7 +250,7 @@ bool QuickSettingContainer::isApplet(PluginsItemInterface *itemInter) const
return json.value("applet").toBool(); return json.value("applet").toBool();
} }
bool QuickSettingContainer::isQuickPlugin(PluginsItemInterface *itemInter) const QWidget *QuickSettingContainer::findPluginWindget(PluginsItemInterface *itemInter) const
{ {
// 先判断是否为快捷面板区域(类似声音、亮度,音乐等) // 先判断是否为快捷面板区域(类似声音、亮度,音乐等)
QWidget *itemWidget = itemInter->itemWidget(QUICK_ITEM_KEY); QWidget *itemWidget = itemInter->itemWidget(QUICK_ITEM_KEY);
@ -269,7 +269,7 @@ bool QuickSettingContainer::isQuickPlugin(PluginsItemInterface *itemInter) const
if (!layoutItem || layoutItem->widget() != itemWidget) if (!layoutItem || layoutItem->widget() != itemWidget)
continue; continue;
return true; return itemWidget;
} }
} }
} else { } else {
@ -277,13 +277,14 @@ bool QuickSettingContainer::isQuickPlugin(PluginsItemInterface *itemInter) const
if (settingItem->pluginItem() != itemInter) if (settingItem->pluginItem() != itemInter)
continue; 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); QWidget *itemWidget = itemInter->itemWidget(QUICK_ITEM_KEY);
if (isApplet(itemInter)) { if (isApplet(itemInter)) {
@ -309,7 +310,7 @@ void QuickSettingContainer::onPluginInsert(PluginsItemInterface * itemInter)
onResizeView(); onResizeView();
} }
void QuickSettingContainer::onPluginRemove(PluginsItemInterface * itemInter) void QuickSettingContainer::onPluginRemove(PluginsItemInterface *itemInter)
{ {
QWidget *itemWidget = itemInter->itemWidget(QUICK_ITEM_KEY); QWidget *itemWidget = itemInter->itemWidget(QUICK_ITEM_KEY);
if (itemWidget) { if (itemWidget) {
@ -478,14 +479,16 @@ void QuickSettingContainer::initUi()
void QuickSettingContainer::initConnection() void QuickSettingContainer::initConnection()
{ {
connect(m_pluginLoader, &QuickSettingController::pluginInserted, this, [ = ](PluginsItemInterface *itemInter, const QuickSettingController::PluginAttribute &pluginClass) { connect(m_pluginLoader, &QuickSettingController::pluginInserted, this, [ = ](PluginsItemInterface *itemInter, const QuickSettingController::PluginAttribute pluginAttr) {
if (pluginClass != QuickSettingController::PluginAttribute::Quick) if (pluginAttr != QuickSettingController::PluginAttribute::Quick)
return; return;
onPluginInsert(itemInter); onPluginInsert(itemInter);
}); });
connect(m_pluginLoader, &QuickSettingController::pluginRemoved, this, &QuickSettingContainer::onPluginRemove); connect(m_pluginLoader, &QuickSettingController::pluginRemoved, this, &QuickSettingContainer::onPluginRemove);
connect(m_pluginLoader, &QuickSettingController::requestAppletShow, this, &QuickSettingContainer::onRequestAppletShow); 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_playerWidget, &MediaWidget::visibleChanged, this, &QuickSettingContainer::onResizeView);
connect(m_brihtnessWidget, &BrightnessWidget::visibleChanged, this, &QuickSettingContainer::onResizeView); connect(m_brihtnessWidget, &BrightnessWidget::visibleChanged, this, &QuickSettingContainer::onResizeView);
connect(m_brihtnessWidget->sliderContainer(), &SliderContainer::iconClicked, this, [ this ](const SliderContainer::IconPosition &iconPosition) { 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()); showWidget(itemApplet, itemInter->pluginDisplayName());
onResizeView(); onResizeView();
} }
void QuickSettingContainer::onPluginUpdated(PluginsItemInterface *itemInter, const DockPart dockPart)
{
if (dockPart != DockPart::QuickPanel)
return;
QWidget *pluginWidget = findPluginWindget(itemInter);
if (!pluginWidget)
return;
pluginWidget->update();
}

View File

@ -64,11 +64,12 @@ protected:
void showHomePage(); void showHomePage();
private Q_SLOTS: private Q_SLOTS:
void onPluginInsert(PluginsItemInterface * itemInter); void onPluginInsert(PluginsItemInterface *itemInter);
void onPluginRemove(PluginsItemInterface * itemInter); void onPluginRemove(PluginsItemInterface *itemInter);
void onItemDetailClick(PluginsItemInterface *pluginInter); void onItemDetailClick(PluginsItemInterface *pluginInter);
void onResizeView(); void onResizeView();
void onRequestAppletShow(PluginsItemInterface * itemInter, const QString &itemKey); void onRequestAppletShow(PluginsItemInterface *itemInter, const QString &itemKey);
void onPluginUpdated(PluginsItemInterface *itemInter, const DockPart dockPart);
private: private:
// 加载UI // 加载UI
@ -86,7 +87,7 @@ private:
// 判断是否支持显示在面板上 // 判断是否支持显示在面板上
bool isApplet(PluginsItemInterface * itemInter) const; bool isApplet(PluginsItemInterface * itemInter) const;
// 判断插件是否在当前快捷面板上 // 判断插件是否在当前快捷面板上
bool isQuickPlugin(PluginsItemInterface * itemInter) const; QWidget *findPluginWindget(PluginsItemInterface * itemInter) const;
private: private:
static DockPopupWindow *m_popWindow; static DockPopupWindow *m_popWindow;