diff --git a/.gitignore b/.gitignore index a3dabe17f..ecd276d66 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ CMakeLists.txt.user* # binary file dde-dock +.vscode diff --git a/frame/util/utils.h b/frame/util/utils.h new file mode 100644 index 000000000..5b6d07907 --- /dev/null +++ b/frame/util/utils.h @@ -0,0 +1,22 @@ +#include +#include +#include + +namespace Utils { + static QPixmap renderSVG(const QString &path, const QSize &size) { + QImageReader reader; + QPixmap pixmap; + reader.setFileName(path); + if (reader.canRead()) { + const qreal ratio = qApp->devicePixelRatio(); + reader.setScaledSize(size * ratio); + pixmap = QPixmap::fromImage(reader.read()); + pixmap.setDevicePixelRatio(ratio); + } + else { + pixmap.load(path); + } + + return pixmap; + } +} \ No newline at end of file diff --git a/plugins/network/CMakeLists.txt b/plugins/network/CMakeLists.txt index a16044064..b1c4cc20e 100644 --- a/plugins/network/CMakeLists.txt +++ b/plugins/network/CMakeLists.txt @@ -4,7 +4,7 @@ set(PLUGIN_NAME "network") project(${PLUGIN_NAME}) # Sources files -file(GLOB_RECURSE SRCS "*.h" "*.cpp" "../../widgets/*.h" "../../widgets/*.cpp") +file(GLOB_RECURSE SRCS "*.h" "*.cpp" "../../widgets/*.h" "../../widgets/*.cpp" "../../frame/util/utils.h") find_package(PkgConfig REQUIRED) find_package(Qt5Widgets REQUIRED) diff --git a/plugins/network/item/applet/accesspointwidget.cpp b/plugins/network/item/applet/accesspointwidget.cpp index a4205737c..7629d8866 100644 --- a/plugins/network/item/applet/accesspointwidget.cpp +++ b/plugins/network/item/applet/accesspointwidget.cpp @@ -21,11 +21,11 @@ #include "accesspointwidget.h" #include "horizontalseperator.h" +#include "../../frame/util/utils.h" #include #include - -#include +#include using namespace dde::network; @@ -40,7 +40,6 @@ AccessPointWidget::AccessPointWidget() m_securityIcon(new QLabel), m_strengthIcon(new QLabel) { - const auto ratio = devicePixelRatioF(); m_ssidBtn->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); m_ssidBtn->setObjectName("Ssid"); @@ -50,8 +49,7 @@ AccessPointWidget::AccessPointWidget() m_disconnectBtn->setHoverPic(":/wireless/resources/wireless/disconnect_hover.svg"); m_disconnectBtn->setPressPic(":/wireless/resources/wireless/disconnect_press.svg"); - QPixmap iconPix = DSvgRenderer::render(":/wireless/resources/wireless/security.svg", QSize(16, 16) * ratio); - iconPix.setDevicePixelRatio(ratio); + QPixmap iconPix = Utils::renderSVG(":/wireless/resources/wireless/security.svg", QSize(16, 16)); m_securityIconSize = iconPix.size(); m_securityIcon->setPixmap(iconPix); @@ -146,8 +144,7 @@ void AccessPointWidget::leaveEvent(QEvent *e) void AccessPointWidget::setStrengthIcon(const int strength) { QPixmap iconPix; - const auto ratio = devicePixelRatioF(); - const QSize s = QSize(16, 16) * ratio; + const QSize s = QSize(16, 16); QString type; if (strength == 100) @@ -157,8 +154,7 @@ void AccessPointWidget::setStrengthIcon(const int strength) else type = QString::number(strength / 10 & ~0x1) + "0"; - iconPix = DSvgRenderer::render(QString(":/wireless/resources/wireless/wireless-%1-symbolic.svg").arg(type), s); - iconPix.setDevicePixelRatio(ratio); + iconPix = Utils::renderSVG(QString(":/wireless/resources/wireless/wireless-%1-symbolic.svg").arg(type), s); m_strengthIcon->setPixmap(iconPix); } diff --git a/plugins/sound/CMakeLists.txt b/plugins/sound/CMakeLists.txt index b5a2a3d8b..f494fca39 100644 --- a/plugins/sound/CMakeLists.txt +++ b/plugins/sound/CMakeLists.txt @@ -4,7 +4,7 @@ set(PLUGIN_NAME "sound") project(${PLUGIN_NAME}) # Sources files -file(GLOB_RECURSE SRCS "*.h" "*.cpp" "../../widgets/*.h" "../../widgets/*.cpp") +file(GLOB_RECURSE SRCS "*.h" "*.cpp" "../../widgets/*.h" "../../widgets/*.cpp" "../../frame/util/utils.h") find_package(PkgConfig REQUIRED) find_package(Qt5Widgets REQUIRED) diff --git a/plugins/sound/soundapplet.cpp b/plugins/sound/soundapplet.cpp index 7fd1a0624..a1ca23e86 100644 --- a/plugins/sound/soundapplet.cpp +++ b/plugins/sound/soundapplet.cpp @@ -23,12 +23,11 @@ #include "sinkinputwidget.h" #include "componments/horizontalseparator.h" #include "../widgets/tipswidget.h" +#include "../../frame/util/utils.h" #include #include -#include - #define WIDTH 200 #define MAX_HEIGHT 200 #define ICON_SIZE 24 @@ -162,9 +161,7 @@ void SoundApplet::onVolumeChanged() volumeString = "low"; const QString &iconName = QString(":/audio-volume-%1-symbolic.svg").arg(volumeString); - const auto ratio = devicePixelRatioF(); - QPixmap pix = DSvgRenderer::render(iconName, QSize(24, 24) * ratio); - pix.setDevicePixelRatio(ratio); + QPixmap pix = Utils::renderSVG(iconName, QSize(24, 24)); m_volumeBtn->setPixmap(pix); }