diff --git a/src/core/Metadata.cpp b/src/core/Metadata.cpp index 200fef89..c0cb9bb6 100644 --- a/src/core/Metadata.cpp +++ b/src/core/Metadata.cpp @@ -193,13 +193,13 @@ QPixmap Metadata::customIconPixmap(const QUuid& uuid) const if (!QPixmapCache::find(cacheKey, &pixmap)) { pixmap = QPixmap::fromImage(m_customIcons.value(uuid)); - cacheKey = QPixmapCache::insert(pixmap); + QPixmapCache::insert(pixmap); } return pixmap; } -QPixmap Metadata::customIconScaledPixmap(const QUuid& uuid) const +QPixmap Metadata::customIconScaledPixmap(const QUuid& uuid, const QSize& size) const { QPixmap pixmap; @@ -207,13 +207,8 @@ QPixmap Metadata::customIconScaledPixmap(const QUuid& uuid) const return pixmap; } - QPixmapCache::Key& cacheKey = m_customIconScaledCacheKeys[uuid]; - - if (!QPixmapCache::find(cacheKey, &pixmap)) { - QImage image = m_customIcons.value(uuid).scaled(16, 16, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - pixmap = QPixmap::fromImage(image); - cacheKey = QPixmapCache::insert(pixmap); - } + QImage image = m_customIcons.value(uuid).scaled(size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + pixmap = QPixmap::fromImage(image); return pixmap; } @@ -228,12 +223,12 @@ QHash Metadata::customIcons() const return m_customIcons; } -QHash Metadata::customIconsScaledPixmaps() const +QHash Metadata::customIconsScaledPixmaps(const QSize& size) const { QHash result; for (const QUuid& uuid : m_customIconsOrder) { - result.insert(uuid, customIconScaledPixmap(uuid)); + result.insert(uuid, customIconScaledPixmap(uuid, size)); } return result; diff --git a/src/core/Metadata.h b/src/core/Metadata.h index 85fb2fdd..0bf59147 100644 --- a/src/core/Metadata.h +++ b/src/core/Metadata.h @@ -24,6 +24,7 @@ #include #include #include +#include #include #include "core/CustomData.h" @@ -82,12 +83,12 @@ public: bool protectNotes() const; QImage customIcon(const QUuid& uuid) const; QPixmap customIconPixmap(const QUuid& uuid) const; - QPixmap customIconScaledPixmap(const QUuid& uuid) const; + QPixmap customIconScaledPixmap(const QUuid& uuid, const QSize& size = {16, 16}) const; bool containsCustomIcon(const QUuid& uuid) const; QHash customIcons() const; QList customIconsOrder() const; bool recycleBinEnabled() const; - QHash customIconsScaledPixmaps() const; + QHash customIconsScaledPixmaps(const QSize& size = {16, 16}) const; Group* recycleBin(); const Group* recycleBin() const; QDateTime recycleBinChanged() const; diff --git a/src/gui/EditWidgetIcons.cpp b/src/gui/EditWidgetIcons.cpp index 05415606..d851e4d3 100644 --- a/src/gui/EditWidgetIcons.cpp +++ b/src/gui/EditWidgetIcons.cpp @@ -132,7 +132,7 @@ void EditWidgetIcons::load(const QUuid& currentUuid, m_currentUuid = currentUuid; setUrl(url); - m_customIconModel->setIcons(database->metadata()->customIconsScaledPixmaps(), + m_customIconModel->setIcons(database->metadata()->customIconsScaledPixmaps({24, 24}), database->metadata()->customIconsOrder()); QUuid iconUuid = iconStruct.uuid; @@ -294,7 +294,7 @@ bool EditWidgetIcons::addCustomIcon(const QImage& icon) if (uuid.isNull()) { uuid = QUuid::createUuid(); m_db->metadata()->addCustomIcon(uuid, scaledicon); - m_customIconModel->setIcons(m_db->metadata()->customIconsScaledPixmaps(), + m_customIconModel->setIcons(m_db->metadata()->customIconsScaledPixmaps({24, 24}), m_db->metadata()->customIconsOrder()); added = true; } @@ -378,7 +378,7 @@ void EditWidgetIcons::removeCustomIcon() // Remove the icon from the database m_db->metadata()->removeCustomIcon(iconUuid); - m_customIconModel->setIcons(m_db->metadata()->customIconsScaledPixmaps(), + m_customIconModel->setIcons(m_db->metadata()->customIconsScaledPixmaps({24, 24}), m_db->metadata()->customIconsOrder()); // Reset the current icon view diff --git a/src/gui/EditWidgetIcons.ui b/src/gui/EditWidgetIcons.ui index 2d3d4481..5b1bd9b0 100644 --- a/src/gui/EditWidgetIcons.ui +++ b/src/gui/EditWidgetIcons.ui @@ -7,7 +7,7 @@ 0 0 437 - 300 + 316 @@ -48,10 +48,10 @@ QListView::Adjust - 8 + 4 - QListView::IconMode + QListView::ListMode @@ -80,10 +80,10 @@ QListView::Adjust - 8 + 4 - QListView::IconMode + QListView::ListMode diff --git a/src/gui/IconModels.cpp b/src/gui/IconModels.cpp index 39732c50..09808926 100644 --- a/src/gui/IconModels.cpp +++ b/src/gui/IconModels.cpp @@ -101,7 +101,6 @@ QModelIndex CustomIconModel::indexFromUuid(const QUuid& uuid) const int idx = m_iconsOrder.indexOf(uuid); if (idx > -1) { return index(idx, 0); - } else { - return QModelIndex(); } + return {}; } diff --git a/src/gui/styles/base/BaseStyle.cpp b/src/gui/styles/base/BaseStyle.cpp index f1eda8be..6a98e597 100644 --- a/src/gui/styles/base/BaseStyle.cpp +++ b/src/gui/styles/base/BaseStyle.cpp @@ -4511,6 +4511,22 @@ QStyle::SubControl BaseStyle::hitTestComplexControl(ComplexControl cc, QPixmap BaseStyle::generatedIconPixmap(QIcon::Mode iconMode, const QPixmap& pixmap, const QStyleOption* opt) const { + // Default icon highlight is way too subtle + if (iconMode == QIcon::Selected) { + QImage img = pixmap.toImage().convertToFormat(QImage::Format_ARGB32_Premultiplied); + QPainter painter(&img); + + painter.setCompositionMode(QPainter::CompositionMode_SourceAtop); + + QColor color = + Phantom::DeriveColors::adjustLightness(opt->palette.color(QPalette::Normal, QPalette::Highlight), .25); + color.setAlphaF(0.25); + painter.fillRect(0, 0, img.width(), img.height(), color); + + painter.end(); + + return QPixmap::fromImage(img); + } return QCommonStyle::generatedIconPixmap(iconMode, pixmap, opt); }