diff --git a/src/core/Metadata.cpp b/src/core/Metadata.cpp index 074291c7..402734c7 100644 --- a/src/core/Metadata.cpp +++ b/src/core/Metadata.cpp @@ -343,6 +343,22 @@ void Metadata::addCustomIcon(const Uuid& uuid, const QImage& icon) Q_EMIT modified(); } +void Metadata::addCustomIconScaled(const Uuid& uuid, const QImage& icon) +{ + QImage iconScaled; + + // scale down to 64x64 if icon is larger + if (icon.width() > 64 || icon.height() > 64) { + iconScaled = icon.scaled(QSize(64, 64), Qt::KeepAspectRatio, + Qt::SmoothTransformation); + } + else { + iconScaled = icon; + } + + addCustomIcon(uuid, iconScaled); +} + void Metadata::removeCustomIcon(const Uuid& uuid) { Q_ASSERT(!uuid.isNull()); diff --git a/src/core/Metadata.h b/src/core/Metadata.h index cde7e26a..4164fb63 100644 --- a/src/core/Metadata.h +++ b/src/core/Metadata.h @@ -115,6 +115,7 @@ public: void setProtectNotes(bool value); // void setAutoEnableVisualHiding(bool value); void addCustomIcon(const Uuid& uuid, const QImage& icon); + void addCustomIconScaled(const Uuid& uuid, const QImage& icon); void removeCustomIcon(const Uuid& uuid); void copyCustomIcons(const QSet& iconList, const Metadata* otherMetadata); void setRecycleBinEnabled(bool value); diff --git a/src/gui/EditWidgetIcons.cpp b/src/gui/EditWidgetIcons.cpp index 9e857453..bcc36077 100644 --- a/src/gui/EditWidgetIcons.cpp +++ b/src/gui/EditWidgetIcons.cpp @@ -132,7 +132,7 @@ void EditWidgetIcons::addCustomIcon() QImage image(filename); if (!image.isNull()) { Uuid uuid = Uuid::random(); - m_database->metadata()->addCustomIcon(uuid, image.scaled(16, 16)); + m_database->metadata()->addCustomIconScaled(uuid, image); m_customIconModel->setIcons(m_database->metadata()->customIcons(), m_database->metadata()->customIconsOrder()); QModelIndex index = m_customIconModel->indexFromUuid(uuid);