mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +00:00
fix app icon on hidpi
Change-Id: Ib79cab7cace53e53e792aa0df2ffddb660ff348c
This commit is contained in:
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
@ -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)));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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_/../
|
||||
|
Loading…
x
Reference in New Issue
Block a user