fix: 电池插件不显示在快捷面板

1、新需求中,电池插件不显示在快捷面板上
2、在插入插件到快捷面板中的时候,判断快捷面板的图标或者显示在快捷面板的Widget为空的情况下,返回空
3、设置电池的快捷面板的图标返回为空图标

Log: 电池插件不显示在快捷面板
Influence: 从笔记本上,打开快捷面板,观察是否存在电池图标
Bug: https://pms.uniontech.com/bug-view-171713.html
Change-Id: I506865b7ac26637b28c8fd2d40f044f9061040c8
This commit is contained in:
donghualin 2022-11-21 05:30:38 +00:00
parent a8d44db60f
commit f28dd1ac2c
3 changed files with 11 additions and 1 deletions

View File

@ -141,6 +141,10 @@ void QuickSettingItem::onRequestAppletShow(PluginsItemInterface *itemInter, cons
QuickSettingItem *QuickSettingFactory::createQuickWidget(PluginsItemInterface * const pluginInter)
{
// 如果显示在面板的图标或者Widget为空则不让显示(例如电池插件)
if (pluginInter->icon(DockPart::QuickPanel).isNull() && !pluginInter->itemWidget(QUICK_ITEM_KEY))
return nullptr;
const QJsonObject metaData = QuickSettingController::instance()->metaData(pluginInter);
if (metaData.contains("primary") && metaData.value("primary").toBool())
return new MultiQuickItem(pluginInter);

View File

@ -202,6 +202,9 @@ QPoint QuickSettingContainer::hotSpot(const QPixmap &pixmap)
void QuickSettingContainer::appendPlugin(PluginsItemInterface *itemInter, bool needLayout)
{
QuickSettingItem *quickItem = QuickSettingFactory::createQuickWidget(itemInter);
if (!quickItem)
return;
quickItem->setParent(m_pluginWidget);
quickItem->setMouseTracking(true);
quickItem->installEventFilter(this);

View File

@ -201,7 +201,10 @@ void PowerPlugin::pluginSettingsChanged()
QIcon PowerPlugin::icon(const DockPart &dockPart)
{
Q_UNUSED(dockPart);
// 电池插件不显示在快捷面板上,因此此处返回空图标
if (dockPart == DockPart::QuickPanel)
return QIcon();
static QIcon batteryIcon;
const QPixmap pixmap = m_powerStatusWidget->getBatteryIcon();
batteryIcon.detach();