From 7ea3524a905f621fc026ec4fc8f16a4c05972479 Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Fri, 3 Jul 2026 15:15:21 +0800 Subject: [PATCH] refactor: move loadHidpiIcon from ActionManager to ToolButton. setting loadHidpiIcon in ToolButton is better than ActionManager. ToolButton has less code and its aim also include loading icon. --- app/actionmanager.cpp | 15 ++------------- app/actionmanager.h | 2 -- app/toolbutton.cpp | 16 ++++++++++++++-- app/toolbutton.h | 2 ++ 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/app/actionmanager.cpp b/app/actionmanager.cpp index da1ebba..00a7007 100644 --- a/app/actionmanager.cpp +++ b/app/actionmanager.cpp @@ -5,22 +5,11 @@ #include "actionmanager.h" #include "mainwindow.h" +#include "toolbutton.h" #include -#include #include -QIcon ActionManager::loadHidpiIcon(const QString &resp, QSize sz) -{ - QSvgRenderer r(resp); - QPixmap pm = QPixmap(sz * qApp->devicePixelRatio()); - pm.fill(Qt::transparent); - QPainter p(&pm); - r.render(&p); - pm.setDevicePixelRatio(qApp->devicePixelRatio()); - return QIcon(pm); -} - void ActionManager::setupAction(MainWindow *mainWindow) { // region: Action and Its Icon Creation @@ -34,7 +23,7 @@ void ActionManager::setupAction(MainWindow *mainWindow) auto create_action = [] (QWidget *w, QAction **a, QString i, QString an, bool iconFromTheme = false) { *a = new QAction(w); if (!i.isNull()) - (*a)->setIcon(iconFromTheme ? QIcon::fromTheme(i) : ActionManager::loadHidpiIcon(i)); + (*a)->setIcon(iconFromTheme ? QIcon::fromTheme(i) : ToolButton::loadHidpiIcon(i)); (*a)->setObjectName(an); w->addAction(*a); }; diff --git a/app/actionmanager.h b/app/actionmanager.h index 4523173..69c7dd0 100644 --- a/app/actionmanager.h +++ b/app/actionmanager.h @@ -21,8 +21,6 @@ public: void setupShortcuts(); void enablePrevNextPictureAction(bool enablePrevPictureAction, bool enableNextPictureAction); - static QIcon loadHidpiIcon(const QString &resp, QSize sz = QSize(32, 32)); - public: QAction *actionOpen; diff --git a/app/toolbutton.cpp b/app/toolbutton.cpp index db3778b..bbab3c5 100644 --- a/app/toolbutton.cpp +++ b/app/toolbutton.cpp @@ -4,9 +4,10 @@ #include "toolbutton.h" -#include "actionmanager.h" #include "opacityhelper.h" +#include +#include #include #include #include @@ -29,7 +30,18 @@ ToolButton::ToolButton(bool hoverColor, QWidget *parent) void ToolButton::setIconResourcePath(const QString &iconp) { - this->setIcon(ActionManager::loadHidpiIcon(iconp, this->iconSize())); + this->setIcon(ToolButton::loadHidpiIcon(iconp, this->iconSize())); +} + +QIcon ToolButton::loadHidpiIcon(const QString &resp, QSize sz) +{ + QSvgRenderer r(resp); + QPixmap pm = QPixmap(sz * qApp->devicePixelRatio()); + pm.fill(Qt::transparent); + QPainter p(&pm); + r.render(&p); + pm.setDevicePixelRatio(qApp->devicePixelRatio()); + return QIcon(pm); } void ToolButton::setOpacity(qreal opacity, bool animated) diff --git a/app/toolbutton.h b/app/toolbutton.h index e53b70f..aaefcd1 100644 --- a/app/toolbutton.h +++ b/app/toolbutton.h @@ -15,6 +15,8 @@ public: ToolButton(bool hoverColor = false, QWidget * parent = nullptr); void setIconResourcePath(const QString &iconp); + static QIcon loadHidpiIcon(const QString &resp, QSize sz = QSize(32, 32)); + public slots: void setOpacity(qreal opacity, bool animated = true);