diff --git a/plugins/onboard/onboardplugin.cpp b/plugins/onboard/onboardplugin.cpp index f0cbb04c3..8a9204d02 100644 --- a/plugins/onboard/onboardplugin.cpp +++ b/plugins/onboard/onboardplugin.cpp @@ -25,11 +25,16 @@ #include "org_deepin_dde_daemon_dock.h" #include "org_deepin_dde_daemon_dock_entry.h" +#include + #include #include +#include #define PLUGIN_STATE_KEY "enable" +DGUI_USE_NAMESPACE + using DBusDock = org::deepin::dde::daemon::Dock1; using DockEntryInter = org::deepin::dde::daemon::dock1::Entry; @@ -165,10 +170,18 @@ void OnboardPlugin::pluginSettingsChanged() refreshPluginItemsVisible(); } -QIcon OnboardPlugin::icon(const DockPart &dockPart) +QIcon OnboardPlugin::icon(const DockPart &dockPart, int themeType) { - if (dockPart == DockPart::DCCSetting) - return QIcon(":/icons/icon/dcc_keyboard.svg"); + if (dockPart == DockPart::DCCSetting) { + if (themeType == DGuiApplicationHelper::ColorType::LightType) + return QIcon(":/icons/icon/dcc_keyboard.svg"); + + QPixmap pixmap(":/icons/icon/dcc_keyboard.svg"); + QPainter pa(&pixmap); + pa.setCompositionMode(QPainter::CompositionMode_SourceIn); + pa.fillRect(pixmap.rect(), Qt::white); + return pixmap; + } if (dockPart == DockPart::QuickPanel) return m_onboardItem->iconPixmap(24); diff --git a/plugins/onboard/onboardplugin.h b/plugins/onboard/onboardplugin.h index ca79e2463..a8d17de36 100644 --- a/plugins/onboard/onboardplugin.h +++ b/plugins/onboard/onboardplugin.h @@ -58,7 +58,7 @@ public: void setSortKey(const QString &itemKey, const int order) override; void pluginSettingsChanged() override; - QIcon icon(const DockPart &dockPart) override; + QIcon icon(const DockPart &dockPart, int themeType) override; PluginStatus status() const override; QString description() const override; diff --git a/plugins/power/powerplugin.cpp b/plugins/power/powerplugin.cpp index b4f7faf9a..56f123b1d 100644 --- a/plugins/power/powerplugin.cpp +++ b/plugins/power/powerplugin.cpp @@ -174,14 +174,11 @@ void PowerPlugin::pluginSettingsChanged() refreshPluginItemsVisible(); } -QIcon PowerPlugin::icon(const DockPart &dockPart) +QIcon PowerPlugin::icon(const DockPart &dockPart, int themeType) { // 电池插件不显示在快捷面板上,因此此处返回空图标 - if (dockPart == DockPart::QuickPanel) - return QIcon(); - static QIcon batteryIcon; - const QPixmap pixmap = m_powerStatusWidget->getBatteryIcon(); + const QPixmap pixmap = m_powerStatusWidget->getBatteryIcon(themeType); batteryIcon.detach(); batteryIcon.addPixmap(pixmap); return batteryIcon; diff --git a/plugins/power/powerplugin.h b/plugins/power/powerplugin.h index 17979b7a0..b1d1f594c 100644 --- a/plugins/power/powerplugin.h +++ b/plugins/power/powerplugin.h @@ -57,7 +57,7 @@ public: int itemSortKey(const QString &itemKey) override; void setSortKey(const QString &itemKey, const int order) override; void pluginSettingsChanged() override; - QIcon icon(const DockPart &dockPart) override; + QIcon icon(const DockPart &dockPart, int themeType) override; PluginFlags flags() const override; private: diff --git a/plugins/power/powerstatuswidget.cpp b/plugins/power/powerstatuswidget.cpp index 98927316f..3943489d5 100644 --- a/plugins/power/powerstatuswidget.cpp +++ b/plugins/power/powerstatuswidget.cpp @@ -54,7 +54,10 @@ void PowerStatusWidget::paintEvent(QPaintEvent *e) { Q_UNUSED(e); - const QPixmap icon = getBatteryIcon(); + int themeType = DGuiApplicationHelper::instance()->themeType(); + if (height() <= PLUGIN_BACKGROUND_MIN_SIZE && themeType == DGuiApplicationHelper::LightType) + themeType = DGuiApplicationHelper::DarkType; + const QPixmap icon = getBatteryIcon(themeType); const auto ratio = devicePixelRatioF(); QPainter painter(this); @@ -63,7 +66,7 @@ void PowerStatusWidget::paintEvent(QPaintEvent *e) painter.drawPixmap(rf.center() - rfp.center() / ratio, icon); } -QPixmap PowerStatusWidget::getBatteryIcon() +QPixmap PowerStatusWidget::getBatteryIcon(int themeType) { const BatteryPercentageMap data = m_powerInter->batteryPercentage(); const uint value = uint(qMin(100.0, qMax(0.0, data.value("Display")))); @@ -108,7 +111,7 @@ QPixmap PowerStatusWidget::getBatteryIcon() .arg(plugged ? "plugged-symbolic" : "symbolic"); } - if (height() <= PLUGIN_BACKGROUND_MIN_SIZE && DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType) + if (themeType == DGuiApplicationHelper::ColorType::LightType) iconStr.append(PLUGIN_MIN_ICON_NAME); const auto ratio = devicePixelRatioF(); diff --git a/plugins/power/powerstatuswidget.h b/plugins/power/powerstatuswidget.h index 370e02a23..986d17371 100644 --- a/plugins/power/powerstatuswidget.h +++ b/plugins/power/powerstatuswidget.h @@ -24,8 +24,12 @@ #include +#include + #define POWER_KEY "power" +DGUI_USE_NAMESPACE + class DBusPower; // from https://upower.freedesktop.org/docs/Device.html#Device:State @@ -43,7 +47,7 @@ class PowerStatusWidget : public QWidget public: explicit PowerStatusWidget(QWidget *parent = 0); - QPixmap getBatteryIcon(); + QPixmap getBatteryIcon(int themeType); public Q_SLOTS: void refreshIcon(); diff --git a/plugins/shutdown/shutdownplugin.cpp b/plugins/shutdown/shutdownplugin.cpp index d1dc7cee6..8e44f91b0 100644 --- a/plugins/shutdown/shutdownplugin.cpp +++ b/plugins/shutdown/shutdownplugin.cpp @@ -27,9 +27,11 @@ #include #include +#include #include #include +#include #define PLUGIN_STATE_KEY "enable" #define GSETTING_SHOW_SUSPEND "showSuspend" @@ -38,6 +40,7 @@ #define GSETTING_SHOW_LOCK "showLock" DCORE_USE_NAMESPACE +DGUI_USE_NAMESPACE using namespace Dock; ShutdownPlugin::ShutdownPlugin(QObject *parent) @@ -312,6 +315,32 @@ QIcon ShutdownPlugin::icon(const DockPart &dockPart) return shutdownIcon; } +QIcon ShutdownPlugin::icon(const DockPart &dockPart, int themeType) +{ + if (dockPart == DockPart::DCCSetting) { + if (themeType == DGuiApplicationHelper::ColorType::LightType) + return QIcon(":/icons/resources/icons/dcc_shutdown.svg"); + + QPixmap pixmap(":/icons/resources/icons/dcc_shutdown.svg"); + QPainter pa(&pixmap); + pa.setCompositionMode(QPainter::CompositionMode_SourceIn); + pa.fillRect(pixmap.rect(), Qt::white); + + return pixmap; + } + + QString iconName = "system-shutdown"; + + if (themeType == DGuiApplicationHelper::LightType) + iconName.append(PLUGIN_MIN_ICON_NAME); + + const auto ratio = qApp->devicePixelRatio(); + QPixmap pixmap; + pixmap = QIcon::fromTheme(iconName, QIcon::fromTheme(":/icons/resources/icons/system-shutdown.svg")).pixmap(QSize(PLUGIN_ICON_MAX_SIZE, PLUGIN_ICON_MAX_SIZE) * ratio); + pixmap.setDevicePixelRatio(ratio); + return pixmap; +} + PluginFlags ShutdownPlugin::flags() const { return PluginFlag::Type_System | PluginFlag::Attribute_CanSetting; diff --git a/plugins/shutdown/shutdownplugin.h b/plugins/shutdown/shutdownplugin.h index aac7b11e5..f7415aac7 100644 --- a/plugins/shutdown/shutdownplugin.h +++ b/plugins/shutdown/shutdownplugin.h @@ -62,6 +62,7 @@ public: void pluginSettingsChanged() override; QIcon icon(const DockPart &dockPart) override; + QIcon icon(const DockPart &dockPart, int themeType) override; PluginFlags flags() const override; // 休眠待机配置,保持和sessionshell一致 diff --git a/plugins/trash/trashplugin.cpp b/plugins/trash/trashplugin.cpp index 0add94fc3..2e6e5d05c 100644 --- a/plugins/trash/trashplugin.cpp +++ b/plugins/trash/trashplugin.cpp @@ -29,10 +29,14 @@ #include #include +#include + +#include #define PLUGIN_STATE_KEY "enable" DWIDGET_USE_NAMESPACE +DGUI_USE_NAMESPACE using namespace Dock; @@ -190,8 +194,16 @@ void TrashPlugin::pluginSettingsChanged() QIcon TrashPlugin::icon(const DockPart &dockPart, int themeType) { - if (dockPart == DockPart::DCCSetting) - return QIcon(":/icons/dcc_trash.svg"); + if (dockPart == DockPart::DCCSetting) { + if (themeType == DGuiApplicationHelper::ColorType::LightType) + return QIcon(":/icons/dcc_trash.svg"); + + QPixmap pixmap(":/icons/dcc_trash.svg"); + QPainter pa(&pixmap); + pa.setCompositionMode(QPainter::CompositionMode_SourceIn); + pa.fillRect(pixmap.rect(), Qt::white); + return pixmap; + } return QIcon(); }