mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-03 00:15:21 +00:00
feat: 任务栏适配不同主题的插件图标
根据当前主题获取不同颜色的图标 Log: Influence: 切换不同的主题,观察图标是否发生变化 Task: https://pms.uniontech.com/task-view-222025.html Change-Id: I751218f21bda4052d0bc60a46895660a4f7aad8b
This commit is contained in:
parent
d4522035cf
commit
40d13df340
@ -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);
|
||||
|
@ -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) {
|
||||
|
@ -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());
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user