Fix dock app icon error if encoding with base64

Change-Id: I5f90b43b4f8c525d391058a4ccb836253645cc23
This commit is contained in:
石博文 2017-02-20 17:41:28 +08:00 committed by Deepin Code Review
parent b65277c40a
commit b0c14898f3
Notes: Deepin Code Review 2017-02-20 17:57:26 +08:00
Verified+1: Anonymous Coward #1000004
Code-Review+2: 石博文 <sbw@sbw.so>
Submitted-by: 石博文 <sbw@sbw.so>
Submitted-at: Mon, 20 Feb 2017 17:57:26 +0800
Reviewed-on: https://cr.deepin.io/20474
Project: dde/dde-dock
Branch: refs/heads/master

View File

@ -1,6 +1,8 @@
#include "themeappicon.h"
#include <QIcon>
#include <QFile>
#include <QDebug>
ThemeAppIcon::ThemeAppIcon(QObject *parent) : QObject(parent)
{
@ -14,12 +16,23 @@ ThemeAppIcon::~ThemeAppIcon()
QPixmap ThemeAppIcon::getIcon(const QString iconName, const int size)
{
QIcon icon = QIcon::fromTheme(iconName, QIcon::fromTheme("application-x-desktop"));
QPixmap pix = icon.pixmap(QSize(size, size));
if (pix.isNull()) {
pix = QPixmap(":/icons/resources/application-x-desktop.svg").scaled(size, size);
QPixmap pixmap(size, size);
if (QFile::exists(iconName))
return QPixmap(iconName);
if (iconName.startsWith("data:image/"))
{
const QStringList strs = iconName.split("base64,");
if (strs.size() == 2)
pixmap.loadFromData(QByteArray::fromBase64(strs.at(1).toLatin1()));
} else {
const QIcon icon = QIcon::fromTheme(iconName, QIcon::fromTheme("application-x-desktop"));
pixmap = icon.pixmap(QSize(size, size));
}
return pix;
if (pixmap.isNull())
pixmap = QPixmap(":/icons/resources/application-x-desktop.svg");
return pixmap.scaled(size, size, Qt::KeepAspectRatio, Qt::SmoothTransformation);
}