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();
}
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();
}

View File

@ -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;