diff options
author | Janek Bevendorff <janek@jbev.net> | 2021-11-10 04:29:36 +0300 |
---|---|---|
committer | Janek Bevendorff <janek@jbev.net> | 2021-11-22 14:58:04 +0300 |
commit | 390e14b2c6c07532c0e04766a851ba3001020e25 (patch) | |
tree | 87ee78e31f0e711260ac01d8790aa28b42584f89 /src/gui | |
parent | 70e62d90db5510143a786d08cb4ce590fe7c0658 (diff) |
Implement KDBX 4.1 extended custom icons
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/EditWidgetIcons.cpp | 7 | ||||
-rw-r--r-- | src/gui/EditWidgetIcons.h | 2 | ||||
-rw-r--r-- | src/gui/Icons.cpp | 2 | ||||
-rw-r--r-- | src/gui/group/GroupModel.cpp | 2 |
4 files changed, 7 insertions, 6 deletions
diff --git a/src/gui/EditWidgetIcons.cpp b/src/gui/EditWidgetIcons.cpp index c301728b6..82af65f95 100644 --- a/src/gui/EditWidgetIcons.cpp +++ b/src/gui/EditWidgetIcons.cpp @@ -19,6 +19,7 @@ #include "EditWidgetIcons.h" #include "ui_EditWidgetIcons.h" +#include "core/Clock.h" #include "core/Config.h" #include "core/Database.h" #include "core/Metadata.h" @@ -244,7 +245,7 @@ void EditWidgetIcons::addCustomIconFromFile() auto icon = QImage(filename); if (icon.isNull()) { errornames << filename; - } else if (!addCustomIcon(icon)) { + } else if (!addCustomIcon(icon, QFileInfo(filename).baseName())) { // Icon already exists in database ++numexisting; } @@ -281,7 +282,7 @@ void EditWidgetIcons::addCustomIconFromFile() } } -bool EditWidgetIcons::addCustomIcon(const QImage& icon) +bool EditWidgetIcons::addCustomIcon(const QImage& icon, const QString& name) { bool added = false; if (m_db) { @@ -295,7 +296,7 @@ bool EditWidgetIcons::addCustomIcon(const QImage& icon) QUuid uuid = m_db->metadata()->findCustomIcon(serializedIcon); if (uuid.isNull()) { uuid = QUuid::createUuid(); - m_db->metadata()->addCustomIcon(uuid, serializedIcon); + m_db->metadata()->addCustomIcon(uuid, serializedIcon, name, Clock::currentDateTimeUtc()); m_customIconModel->setIcons(Icons::customIconsPixmaps(m_db.data(), IconSize::Default), m_db->metadata()->customIconsOrder()); added = true; diff --git a/src/gui/EditWidgetIcons.h b/src/gui/EditWidgetIcons.h index e0e662848..6e134ced6 100644 --- a/src/gui/EditWidgetIcons.h +++ b/src/gui/EditWidgetIcons.h @@ -85,7 +85,7 @@ private slots: void downloadFavicon(); void iconReceived(const QString& url, const QImage& icon); void addCustomIconFromFile(); - bool addCustomIcon(const QImage& icon); + bool addCustomIcon(const QImage& icon, const QString& name = {}); void updateWidgetsDefaultIcons(bool checked); void updateWidgetsCustomIcons(bool checked); void updateRadioButtonDefaultIcons(); diff --git a/src/gui/Icons.cpp b/src/gui/Icons.cpp index 95e6aadc4..73e48154d 100644 --- a/src/gui/Icons.cpp +++ b/src/gui/Icons.cpp @@ -222,7 +222,7 @@ QPixmap Icons::customIconPixmap(const Database* db, const QUuid& uuid, IconSize return {}; } // Generate QIcon with pre-baked resolutions - auto icon = QImage::fromData(db->metadata()->customIcon(uuid)); + auto icon = QImage::fromData(db->metadata()->customIcon(uuid).data); auto basePixmap = QPixmap::fromImage(icon.scaled(64, 64, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); return QIcon(basePixmap).pixmap(databaseIcons()->iconSize(size)); } diff --git a/src/gui/group/GroupModel.cpp b/src/gui/group/GroupModel.cpp index c21d1f911..57ea56235 100644 --- a/src/gui/group/GroupModel.cpp +++ b/src/gui/group/GroupModel.cpp @@ -300,7 +300,7 @@ bool GroupModel::dropMimeData(const QMimeData* data, if (sourceDb != targetDb) { QUuid customIcon = entry->iconUuid(); if (!customIcon.isNull() && !targetDb->metadata()->hasCustomIcon(customIcon)) { - targetDb->metadata()->addCustomIcon(customIcon, sourceDb->metadata()->customIcon(customIcon)); + targetDb->metadata()->addCustomIcon(customIcon, sourceDb->metadata()->customIcon(customIcon).data); } // Reset the UUID when moving across db boundary |