fix app icon on hidpi

Change-Id: Ib79cab7cace53e53e792aa0df2ffddb660ff348c
This commit is contained in:
石博文 2017-10-10 15:16:28 +08:00 committed by Deepin Code Review
parent a84062bce2
commit a6e3632d56
Notes: Deepin Code Review 2017-10-10 15:19:54 +08:00
Verified+1: Anonymous Coward #1000004
Code-Review+2: 石博文 <sbw@sbw.so>
Submitted-by: 石博文 <sbw@sbw.so>
Submitted-at: Tue, 10 Oct 2017 15:19:54 +0800
Reviewed-on: https://cr.deepin.io/26873
Project: dde/dde-dock
Branch: refs/heads/master
2 changed files with 17 additions and 4 deletions

View File

@ -23,9 +23,19 @@
#include <QHBoxLayout>
#include <QIcon>
#include <QApplication>
DWIDGET_USE_NAMESPACE
const QPixmap getIconFromTheme(const QString &name, const QSize &size)
{
const auto ratio = qApp->devicePixelRatio();
QPixmap ret = QIcon::fromTheme(name).pixmap(size * ratio);
ret.setDevicePixelRatio(ratio);
return ret;
}
SinkInputWidget::SinkInputWidget(const QString &inputPath, QWidget *parent)
: QWidget(parent),
@ -36,7 +46,7 @@ SinkInputWidget::SinkInputWidget(const QString &inputPath, QWidget *parent)
{
const QString iconName = m_inputInter->icon();
m_volumeIcon->setAccessibleName("app-" + iconName + "-icon");
m_volumeIcon->setPixmap(QIcon::fromTheme(iconName).pixmap(24, 24));
m_volumeIcon->setPixmap(getIconFromTheme(iconName, QSize(24, 24)));
m_volumeSlider->setAccessibleName("app-" + iconName + "-slider");
m_volumeSlider->setValue(m_inputInter->volume() * 1000);
@ -72,11 +82,13 @@ void SinkInputWidget::setMute()
void SinkInputWidget::setMuteIcon()
{
if (m_inputInter->mute()) {
const auto ratio = devicePixelRatioF();
QPixmap muteIcon(QString(":/icons/image/audio-volume-muted-symbolic.svg"));
QPixmap appIconSource(QIcon::fromTheme(m_inputInter->icon()).pixmap(24, 24));
QPixmap appIconSource(getIconFromTheme(m_inputInter->icon(), QSize(24, 24)));
QPixmap temp(appIconSource.size());
temp.fill(Qt::transparent);
temp.setDevicePixelRatio(ratio);
QPainter p1(&temp);
p1.drawPixmap(0, 0, appIconSource);
p1.setCompositionMode(QPainter::CompositionMode_DestinationIn);
@ -87,9 +99,10 @@ void SinkInputWidget::setMuteIcon()
QPainter p(&appIconSource);
p.drawPixmap(0, 0, muteIcon);
appIconSource.setDevicePixelRatio(ratio);
m_volumeIcon->setPixmap(appIconSource);
} else {
m_volumeIcon->setPixmap(QIcon::fromTheme(m_inputInter->icon()).pixmap(24, 24));
m_volumeIcon->setPixmap(getIconFromTheme(m_inputInter->icon(), QSize(24, 24)));
}
}

View File

@ -4,7 +4,7 @@ include(../../interfaces/interfaces.pri)
QT += widgets svg dbus
TEMPLATE = lib
CONFIG += plugin c++11 link_pkgconfig
PKGCONFIG += dtkwidget gsettings-qt
PKGCONFIG += gsettings-qt dtkwidget
TARGET = $$qtLibraryTarget(sound)
DESTDIR = $$_PRO_FILE_PWD_/../