1717
1818#include " DatabaseIcons.h"
1919
20+ #include " core/Config.h"
2021#include " core/Global.h"
2122#include " core/Resources.h"
2223#include " gui/MainWindow.h"
@@ -44,6 +45,9 @@ DatabaseIcons::DatabaseIcons()
4445
4546 iconList = QDir (iconDir).entryList (QDir::NoFilter, QDir::Name);
4647 badgeList = QDir (badgeDir).entryList (QDir::NoFilter, QDir::Name);
48+
49+ // Set this early and once to ensure consistent icon size until app restart
50+ m_compactMode = config ()->get (Config::GUI_CompactMode).toBool ();
4751}
4852
4953DatabaseIcons* DatabaseIcons::instance ()
@@ -66,13 +70,13 @@ QPixmap DatabaseIcons::icon(int index, IconSize size)
6670 auto icon = m_iconCache.value (cacheKey);
6771 if (icon.isNull ()) {
6872 icon.addFile (iconDir + iconList[index]);
69- icon.addPixmap (icon.pixmap (IconSize::Default));
70- icon.addPixmap (icon.pixmap (IconSize::Medium));
71- icon.addPixmap (icon.pixmap (IconSize::Large));
73+ icon.addPixmap (icon.pixmap (iconSize ( IconSize::Default) ));
74+ icon.addPixmap (icon.pixmap (iconSize ( IconSize::Medium) ));
75+ icon.addPixmap (icon.pixmap (iconSize ( IconSize::Large) ));
7276 m_iconCache.insert (cacheKey, icon);
7377 }
7478
75- return icon.pixmap (size);
79+ return icon.pixmap (iconSize ( size) );
7680}
7781
7882QPixmap DatabaseIcons::applyBadge (const QPixmap& basePixmap, Badges badgeIndex)
@@ -83,7 +87,8 @@ QPixmap DatabaseIcons::applyBadge(const QPixmap& basePixmap, Badges badgeIndex)
8387 qWarning (" DatabaseIcons: Out-of-range badge index given to applyBadge: %d" , badgeIndex);
8488 } else if (!QPixmapCache::find (cacheKey, &pixmap)) {
8589 int baseSize = basePixmap.width ();
86- int badgeSize = baseSize <= IconSize::Default * basePixmap.devicePixelRatio () ? baseSize * 0.6 : baseSize * 0.5 ;
90+ int badgeSize =
91+ baseSize <= iconSize (IconSize::Default) * basePixmap.devicePixelRatio () ? baseSize * 0.6 : baseSize * 0.5 ;
8792 QPoint badgePos (baseSize - badgeSize, baseSize - badgeSize);
8893 badgePos /= basePixmap.devicePixelRatio ();
8994
@@ -106,3 +111,15 @@ int DatabaseIcons::count()
106111{
107112 return iconList.size ();
108113}
114+
115+ int DatabaseIcons::iconSize (IconSize size)
116+ {
117+ switch (size) {
118+ case Medium:
119+ return m_compactMode ? 26 : 30 ;
120+ case Large:
121+ return m_compactMode ? 30 : 36 ;
122+ default :
123+ return m_compactMode ? 16 : 22 ;
124+ }
125+ }
0 commit comments