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()
{
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();
// 如果插件没有返回图标的显示则获取插件的itemWidget
QHBoxLayout *mainLayout = new QHBoxLayout(this);
@ -251,7 +251,7 @@ QColor QuickIconWidget::foregroundColor() 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) {
// 如果图标为空就使用itemWidget的截图作为它的图标这种一般是适用于老版本插件或者没有实现v23接口的插件
QWidget *itemWidget = m_pluginInter->itemWidget(m_itemKey);

View File

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

View File

@ -72,7 +72,7 @@ DockItem::ItemType QuickSettingItem::itemType() const
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);
pa.setPen(foregroundColor());

View File

@ -74,7 +74,7 @@ typedef struct DragInfo{
if (!dockItem)
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())
return pixmap;

View File

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