31 QMap<QString, QIcon>::const_iterator cached =
s_cache.constFind(name);
32 if (cached !=
s_cache.constEnd()) {
33 return cached.value();
37 const char *
const prefix =
useDarkIcons() ?
"dark_" :
"light_";
39 QString realName = QLatin1String(prefix) + name;
42 const QStringList names = {
":/pics/" + realName +
".png",
43 ":/pics/" + realName +
".svg",
44 ":/pics/" + realName +
".svgz",
45 ":/pics/" + name +
".png",
46 ":/pics/" + name +
".svg",
47 ":/pics/" + name +
".svgz",
48 ":/" + realName +
".png",
49 ":/" + realName +
".svg",
50 ":/" + realName +
".svgz",
54 ":/" + name +
".svgz"};
56 for (
const QString &resname : names) {
57 if (QFile(resname).exists()) {
59 s_icons.insert(icon.cacheKey(), name);
66 QStringList sizes =
QStringList() <<
"16_" <<
"22_" <<
"32_" <<
"48_" <<
"64_" <<
"128_" <<
"256_" <<
"512_" <<
"1024_";
68 Q_FOREACH (
const QString &size, sizes) {
69 const QStringList names = {
":/pics/" + size + realName +
".png",
70 ":/pics/" + size + realName +
".svg",
71 ":/pics/" + size + realName +
".svgz",
72 ":/pics/" + size + name +
".png",
73 ":/pics/" + size + name +
".svg",
74 ":/pics/" + size + name +
".svgz",
75 ":/" + size + realName +
".png",
76 ":/" + size + realName +
".svg",
77 ":/" + size + realName +
".svgz",
79 ":/" + size + name +
".png",
80 ":/" + size + name +
".svg",
81 ":/" + size + name +
".svgz"};
83 for (
const QString &resname : names) {
84 if (QFile(resname).exists()) {
85 icons << qMakePair(size, resname);
90 if (!icons.isEmpty()) {
92 Q_FOREACH (
auto p, icons) {
95 int size = sz.toInt();
96 icon.addFile(
p.second, QSize(size, size));
98 s_icons.insert(icon.cacheKey(), name);
103 QIcon icon = QIcon::fromTheme(name);
105 s_icons.insert(icon.cacheKey(), name);
122 QString iconName = icon->name();
123 if (iconName.isNull()) {
124 if (
s_icons.contains(icon->cacheKey())) {
125 iconName =
s_icons[icon->cacheKey()];
131 QString realIconName = iconName;
133 if (iconName.startsWith(
"dark_")) {
134 realIconName = iconName.mid(5);
137 if (iconName.startsWith(
"light_")) {
138 realIconName = iconName.mid(6);
141 if (!realIconName.isNull()) {
143 result = !icon->isNull();
144 s_icons.insert(icon->cacheKey(), iconName);