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;