feat: 任务栏适配不同主题的插件图标

根据当前主题获取不同颜色的图标

Log:
Influence: 切换不同的主题,观察图标是否发生变化
Task: https://pms.uniontech.com/task-view-222025.html
Change-Id: I751218f21bda4052d0bc60a46895660a4f7aad8b
This commit is contained in:
donghualin 2022-12-01 10:17:37 +08:00
parent d4522035cf
commit 40d13df340
5 changed files with 10 additions and 7 deletions

View File

@ -114,7 +114,7 @@ bool MultiQuickItem::eventFilter(QObject *obj, QEvent *event)
void MultiQuickItem::initUi() void MultiQuickItem::initUi()
{ {
QWidget *itemWidget = pluginItem()->itemWidget(QUICK_ITEM_KEY); QWidget *itemWidget = pluginItem()->itemWidget(QUICK_ITEM_KEY);
if (pluginItem()->icon(DockPart::QuickPanel).isNull() && itemWidget) { if (pluginItem()->icon(DockPart::QuickPanel, DGuiApplicationHelper::instance()->themeType()).isNull() && itemWidget) {
m_itemWidgetParent = itemWidget->parentWidget(); m_itemWidgetParent = itemWidget->parentWidget();
// 如果插件没有返回图标的显示则获取插件的itemWidget // 如果插件没有返回图标的显示则获取插件的itemWidget
QHBoxLayout *mainLayout = new QHBoxLayout(this); QHBoxLayout *mainLayout = new QHBoxLayout(this);
@ -251,7 +251,7 @@ QColor QuickIconWidget::foregroundColor() const
QPixmap QuickIconWidget::pluginIcon(bool contailGrab) const QPixmap QuickIconWidget::pluginIcon(bool contailGrab) const
{ {
QIcon icon = m_pluginInter->icon(DockPart::QuickPanel); QIcon icon = m_pluginInter->icon(DockPart::QuickPanel, DGuiApplicationHelper::instance()->themeType());
if (icon.isNull() && contailGrab) { if (icon.isNull() && contailGrab) {
// 如果图标为空就使用itemWidget的截图作为它的图标这种一般是适用于老版本插件或者没有实现v23接口的插件 // 如果图标为空就使用itemWidget的截图作为它的图标这种一般是适用于老版本插件或者没有实现v23接口的插件
QWidget *itemWidget = m_pluginInter->itemWidget(m_itemKey); QWidget *itemWidget = m_pluginInter->itemWidget(m_itemKey);

View File

@ -22,6 +22,7 @@
#include "pluginsiteminterface.h" #include "pluginsiteminterface.h"
#include <DFontSizeManager> #include <DFontSizeManager>
#include <DGuiApplicationHelper>
#define ICONHEIGHT 24 #define ICONHEIGHT 24
#define ICONWIDTH 24 #define ICONWIDTH 24
@ -73,7 +74,7 @@ QWidget *SingleQuickItem::iconWidget(QWidget *parent)
// 显示图标的窗体 // 显示图标的窗体
QWidget *widget = new QWidget(parent); QWidget *widget = new QWidget(parent);
bool childIsEmpty = true; bool childIsEmpty = true;
QIcon icon = pluginItem()->icon(DockPart::QuickPanel); QIcon icon = pluginItem()->icon(DockPart::QuickPanel, DGuiApplicationHelper::instance()->themeType());
if (icon.isNull()) { if (icon.isNull()) {
// 如果图标为空则将获取itemWidget作为它的显示 // 如果图标为空则将获取itemWidget作为它的显示
QWidget *itemWidget = pluginItem()->itemWidget(QUICK_ITEM_KEY); QWidget *itemWidget = pluginItem()->itemWidget(QUICK_ITEM_KEY);
@ -118,7 +119,7 @@ QWidget *SingleQuickItem::iconWidget(QWidget *parent)
QPixmap SingleQuickItem::pixmap() const QPixmap SingleQuickItem::pixmap() const
{ {
// 如果快捷面板区域的图标为空那么就获取itemWidget的截图 // 如果快捷面板区域的图标为空那么就获取itemWidget的截图
QIcon icon = pluginItem()->icon(DockPart::QuickPanel); QIcon icon = pluginItem()->icon(DockPart::QuickPanel, DGuiApplicationHelper::instance()->themeType());
if (icon.isNull()) { if (icon.isNull()) {
QWidget *itemWidget = pluginItem()->itemWidget(itemKey()); QWidget *itemWidget = pluginItem()->itemWidget(itemKey());
if (itemWidget) { if (itemWidget) {

View File

@ -72,7 +72,7 @@ DockItem::ItemType QuickSettingItem::itemType() const
const QPixmap QuickSettingItem::dragPixmap() const QPixmap QuickSettingItem::dragPixmap()
{ {
QPixmap pm = m_pluginInter->icon(DockPart::QuickPanel).pixmap(ICONWIDTH, ICONHEIGHT); QPixmap pm = m_pluginInter->icon(DockPart::QuickPanel, DGuiApplicationHelper::instance()->themeType()).pixmap(ICONWIDTH, ICONHEIGHT);
QPainter pa(&pm); QPainter pa(&pm);
pa.setPen(foregroundColor()); pa.setPen(foregroundColor());

View File

@ -74,7 +74,7 @@ typedef struct DragInfo{
if (!dockItem) if (!dockItem)
return QPixmap(); return QPixmap();
QPixmap pixmap = dockItem->pluginItem()->icon(DockPart::QuickShow).pixmap(QSize(ITEMSIZE, ITEMSIZE)); QPixmap pixmap = dockItem->pluginItem()->icon(DockPart::QuickShow, DGuiApplicationHelper::instance()->themeType()).pixmap(QSize(ITEMSIZE, ITEMSIZE));
if (!pixmap.isNull()) if (!pixmap.isNull())
return pixmap; return pixmap;

View File

@ -24,6 +24,8 @@
#include "quicksettingcontroller.h" #include "quicksettingcontroller.h"
#include <DListView> #include <DListView>
#include <DGuiApplicationHelper>
#include <QBoxLayout> #include <QBoxLayout>
#include <QDir> #include <QDir>
#include <QMetaObject> #include <QMetaObject>
@ -243,7 +245,7 @@ void StretchPluginsItem::paintEvent(QPaintEvent *event)
{ {
Q_UNUSED(event); Q_UNUSED(event);
QPainter painter(this); QPainter painter(this);
QIcon icon = m_pluginInter->icon(DockPart::SystemPanel); QIcon icon = m_pluginInter->icon(DockPart::SystemPanel, DGuiApplicationHelper::instance()->themeType());
QRect rctPixmap(rect()); QRect rctPixmap(rect());
if (needShowText()) { if (needShowText()) {