From 93585aded73b122107897a27246d58630c3c0ed3 Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Sun, 24 Jan 2016 19:03:50 +0100 Subject: [PATCH] Always display scaled custom icons. Closes #322 --- src/core/Metadata.cpp | 11 +++++++++++ src/core/Metadata.h | 1 + src/gui/EditWidgetIcons.cpp | 6 +++--- src/gui/IconModels.cpp | 2 +- src/gui/IconModels.h | 6 +++--- src/gui/entry/EntryModel.cpp | 4 ++-- src/gui/group/GroupModel.cpp | 2 +- tests/TestEntryModel.cpp | 7 +++---- 8 files changed, 25 insertions(+), 14 deletions(-) diff --git a/src/core/Metadata.cpp b/src/core/Metadata.cpp index c27c196a2..0c67bbac1 100644 --- a/src/core/Metadata.cpp +++ b/src/core/Metadata.cpp @@ -214,6 +214,17 @@ QHash Metadata::customIcons() const return m_customIcons; } +QHash Metadata::customIconsScaledPixmaps() const +{ + QHash result; + + Q_FOREACH (const Uuid& uuid, m_customIconsOrder) { + result.insert(uuid, customIconScaledPixmap(uuid)); + } + + return result; +} + QList Metadata::customIconsOrder() const { return m_customIconsOrder; diff --git a/src/core/Metadata.h b/src/core/Metadata.h index b6e25c288..062e55216 100644 --- a/src/core/Metadata.h +++ b/src/core/Metadata.h @@ -86,6 +86,7 @@ public: QHash customIcons() const; QList customIconsOrder() const; bool recycleBinEnabled() const; + QHash customIconsScaledPixmaps() const; Group* recycleBin(); const Group* recycleBin() const; QDateTime recycleBinChanged() const; diff --git a/src/gui/EditWidgetIcons.cpp b/src/gui/EditWidgetIcons.cpp index 5ea4db736..c408940e3 100644 --- a/src/gui/EditWidgetIcons.cpp +++ b/src/gui/EditWidgetIcons.cpp @@ -98,7 +98,7 @@ void EditWidgetIcons::load(Uuid currentUuid, Database* database, IconStruct icon m_database = database; m_currentUuid = currentUuid; - m_customIconModel->setIcons(database->metadata()->customIcons(), + m_customIconModel->setIcons(database->metadata()->customIconsScaledPixmaps(), database->metadata()->customIconsOrder()); Uuid iconUuid = iconStruct.uuid; @@ -133,7 +133,7 @@ void EditWidgetIcons::addCustomIcon() if (!image.isNull()) { Uuid uuid = Uuid::random(); m_database->metadata()->addCustomIconScaled(uuid, image); - m_customIconModel->setIcons(m_database->metadata()->customIcons(), + m_customIconModel->setIcons(m_database->metadata()->customIconsScaledPixmaps(), m_database->metadata()->customIconsOrder()); QModelIndex index = m_customIconModel->indexFromUuid(uuid); m_ui->customIconsView->setCurrentIndex(index); @@ -183,7 +183,7 @@ void EditWidgetIcons::removeCustomIcon() } m_database->metadata()->removeCustomIcon(iconUuid); - m_customIconModel->setIcons(m_database->metadata()->customIcons(), + m_customIconModel->setIcons(m_database->metadata()->customIconsScaledPixmaps(), m_database->metadata()->customIconsOrder()); if (m_customIconModel->rowCount() > 0) { m_ui->customIconsView->setCurrentIndex(m_customIconModel->index(0, 0)); diff --git a/src/gui/IconModels.cpp b/src/gui/IconModels.cpp index c169e875b..1c181eae2 100644 --- a/src/gui/IconModels.cpp +++ b/src/gui/IconModels.cpp @@ -54,7 +54,7 @@ CustomIconModel::CustomIconModel(QObject* parent) { } -void CustomIconModel::setIcons(const QHash& icons, const QList& iconsOrder) +void CustomIconModel::setIcons(const QHash& icons, const QList& iconsOrder) { beginResetModel(); diff --git a/src/gui/IconModels.h b/src/gui/IconModels.h index a04efa209..8a247070f 100644 --- a/src/gui/IconModels.h +++ b/src/gui/IconModels.h @@ -19,7 +19,7 @@ #define KEEPASSX_ICONMODELS_H #include -#include +#include #include "core/Global.h" #include "core/Uuid.h" @@ -44,12 +44,12 @@ public: virtual int rowCount(const QModelIndex& parent = QModelIndex()) const Q_DECL_OVERRIDE; virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; - void setIcons(const QHash& icons, const QList& iconsOrder); + void setIcons(const QHash& icons, const QList& iconsOrder); Uuid uuidFromIndex(const QModelIndex& index) const; QModelIndex indexFromUuid(const Uuid& uuid) const; private: - QHash m_icons; + QHash m_icons; QList m_iconsOrder; }; diff --git a/src/gui/entry/EntryModel.cpp b/src/gui/entry/EntryModel.cpp index c75d38a1b..084ad72c7 100644 --- a/src/gui/entry/EntryModel.cpp +++ b/src/gui/entry/EntryModel.cpp @@ -146,7 +146,7 @@ QVariant EntryModel::data(const QModelIndex& index, int role) const switch (index.column()) { case ParentGroup: if (entry->group()) { - return entry->group()->iconPixmap(); + return entry->group()->iconScaledPixmap(); } break; case Title: @@ -154,7 +154,7 @@ QVariant EntryModel::data(const QModelIndex& index, int role) const return databaseIcons()->iconPixmap(DatabaseIcons::ExpiredIconIndex); } else { - return entry->iconPixmap(); + return entry->iconScaledPixmap(); } } } diff --git a/src/gui/group/GroupModel.cpp b/src/gui/group/GroupModel.cpp index 21f8c7e3b..1244ad78f 100644 --- a/src/gui/group/GroupModel.cpp +++ b/src/gui/group/GroupModel.cpp @@ -136,7 +136,7 @@ QVariant GroupModel::data(const QModelIndex& index, int role) const return databaseIcons()->iconPixmap(DatabaseIcons::ExpiredIconIndex); } else { - return group->iconPixmap(); + return group->iconScaledPixmap(); } } else if (role == Qt::FontRole) { diff --git a/tests/TestEntryModel.cpp b/tests/TestEntryModel.cpp index 7ba886bc2..b323a733c 100644 --- a/tests/TestEntryModel.cpp +++ b/tests/TestEntryModel.cpp @@ -210,17 +210,16 @@ void TestEntryModel::testCustomIconModel() QCOMPARE(model->rowCount(), 0); - QHash icons; + QHash icons; QList iconsOrder; Uuid iconUuid(QByteArray(16, '2')); - QImage icon; - icons.insert(iconUuid, icon); + icons.insert(iconUuid, QPixmap()); iconsOrder << iconUuid; Uuid iconUuid2(QByteArray(16, '1')); QImage icon2; - icons.insert(iconUuid2, icon2); + icons.insert(iconUuid2, QPixmap()); iconsOrder << iconUuid2; model->setIcons(icons, iconsOrder);