图标主题切换优化
This commit is contained in:
parent
a2f0d5007a
commit
7b7ad2d13c
|
@ -36,11 +36,38 @@ const QPixmap ImageUtil::loadTheme(const QString &theme, const QString &defaultT
|
||||||
size += origSize;
|
size += origSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
QIcon icon = QIcon::fromTheme(theme, QIcon(defaultTheme));
|
QIcon icon = QIcon::fromTheme(theme);
|
||||||
QPixmap pixmap = icon.pixmap(icon.actualSize(QSize(size, size)));
|
// 在主题中未找到,则使用默认路径的图标
|
||||||
|
if (icon.isNull()) {
|
||||||
|
QIcon iconDefault(defaultTheme);
|
||||||
|
QPixmap pixmap = iconDefault.pixmap(iconDefault.actualSize(QSize(size, size)));
|
||||||
|
|
||||||
pixmap.setDevicePixelRatio(ratio);
|
pixmap.setDevicePixelRatio(ratio);
|
||||||
return drawSymbolicColoredPixmap(pixmap, color);
|
return drawSymbolicColoredPixmap(pixmap, color);
|
||||||
|
}
|
||||||
|
|
||||||
|
return icon.pixmap(icon.actualSize(QSize(size, size)));
|
||||||
|
}
|
||||||
|
|
||||||
|
const QPixmap ImageUtil::loadTheme(const QString &theme, const QString &defaultTheme, const QString& color, QSize size)
|
||||||
|
{
|
||||||
|
int origWidth = size.width();
|
||||||
|
int origHeight = size.height();
|
||||||
|
const auto ratio = qApp->devicePixelRatio();
|
||||||
|
size.setWidth(origWidth * ratio);
|
||||||
|
size.setHeight(origHeight * ratio);
|
||||||
|
|
||||||
|
QIcon icon = QIcon::fromTheme(theme);
|
||||||
|
// 在主题中未找到,则使用默认路径的图标
|
||||||
|
if (icon.isNull()) {
|
||||||
|
QIcon iconDefault(defaultTheme);
|
||||||
|
QPixmap pixmap = iconDefault.pixmap(iconDefault.actualSize(size));
|
||||||
|
|
||||||
|
pixmap.setDevicePixelRatio(ratio);
|
||||||
|
return drawSymbolicColoredPixmap(pixmap, color);
|
||||||
|
}
|
||||||
|
|
||||||
|
return icon.pixmap(icon.actualSize(size));
|
||||||
}
|
}
|
||||||
|
|
||||||
const QPixmap ImageUtil::loadPixmap(QIcon &icon, const QString &color, int size)
|
const QPixmap ImageUtil::loadPixmap(QIcon &icon, const QString &color, int size)
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
class ImageUtil
|
class ImageUtil
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// static const QPixmap loadSvg(const QString &path, const QString &color, int size = 16);
|
static const QPixmap loadTheme(const QString &theme, const QString &defaultTheme, const QString& color, QSize size);
|
||||||
static const QPixmap loadTheme(const QString &theme, const QString &defaultTheme, const QString &color, int size = 16);
|
static const QPixmap loadTheme(const QString &theme, const QString &defaultTheme, const QString &color, int size = 16);
|
||||||
static const QPixmap loadPixmap(QIcon &icon, const QString &color, int size = 16);
|
static const QPixmap loadPixmap(QIcon &icon, const QString &color, int size = 16);
|
||||||
static QPixmap drawSymbolicColoredPixmap(const QPixmap &source, const QString &cgColor);
|
static QPixmap drawSymbolicColoredPixmap(const QPixmap &source, const QString &cgColor);
|
||||||
|
|
|
@ -100,7 +100,10 @@ void MyIconButton::setThemeIcon(const QString &themeIconName, const QString &def
|
||||||
m_defaultIconName = defaultIconName;
|
m_defaultIconName = defaultIconName;
|
||||||
m_pixSize = size;
|
m_pixSize = size;
|
||||||
|
|
||||||
m_iconButton->setIcon(ImageUtil::loadTheme(m_themeIconName, m_defaultIconName, "default", m_pixSize));
|
if (g_GSettingWrapper.isDarkTheme())
|
||||||
|
m_iconButton->setIcon(ImageUtil::loadTheme(m_themeIconName, m_defaultIconName, "white", m_pixSize));
|
||||||
|
else
|
||||||
|
m_iconButton->setIcon(ImageUtil::loadTheme(m_themeIconName, m_defaultIconName, "default", m_pixSize));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -37,7 +37,10 @@ void PixmapButton::setThemeIcon(const QString &themeIconName, const QString &def
|
||||||
m_defaultIconName = defaultIconName;
|
m_defaultIconName = defaultIconName;
|
||||||
m_iconSize = size;
|
m_iconSize = size;
|
||||||
|
|
||||||
this->setIcon(ImageUtil::loadTheme(m_iconTheme, m_defaultIconName, "default", m_iconSize));
|
if (g_GSettingWrapper.isDarkTheme())
|
||||||
|
this->setIcon(ImageUtil::loadTheme(m_iconTheme, m_defaultIconName, "white", m_iconSize));
|
||||||
|
else
|
||||||
|
this->setIcon(ImageUtil::loadTheme(m_iconTheme, m_defaultIconName, "default", m_iconSize));
|
||||||
}
|
}
|
||||||
|
|
||||||
PixmapButton::~PixmapButton()
|
PixmapButton::~PixmapButton()
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include "pixmaplabel.h"
|
#include "pixmaplabel.h"
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
|
#include "imageutil.h"
|
||||||
#include "../globalsignals.h"
|
#include "../globalsignals.h"
|
||||||
#include "../globalbackupinfo.h"
|
#include "../globalbackupinfo.h"
|
||||||
#include "../gsettingswrapper.h"
|
#include "../gsettingswrapper.h"
|
||||||
|
@ -66,8 +67,10 @@ void PixmapLabel::on_themeIconChanged()
|
||||||
QIcon titleIcon = QIcon::fromTheme(m_iconTheme);
|
QIcon titleIcon = QIcon::fromTheme(m_iconTheme);
|
||||||
setPixmap(titleIcon.pixmap(titleIcon.actualSize(m_iconSize)));
|
setPixmap(titleIcon.pixmap(titleIcon.actualSize(m_iconSize)));
|
||||||
} else {
|
} else {
|
||||||
QIcon titleIcon = QIcon::fromTheme(m_iconTheme, QIcon(m_iconThemeDefault));
|
if (g_GSettingWrapper.isDarkTheme())
|
||||||
setPixmap(titleIcon.pixmap(titleIcon.actualSize(m_iconSize)));
|
setPixmap(ImageUtil::loadTheme(m_iconTheme, m_iconThemeDefault, "white", m_iconSize));
|
||||||
|
else
|
||||||
|
setPixmap(ImageUtil::loadTheme(m_iconTheme, m_iconThemeDefault, "default", m_iconSize));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue