Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorJanek Bevendorff <janek@jbev.net>2021-11-10 04:29:36 +0300
committerJanek Bevendorff <janek@jbev.net>2021-11-22 14:58:04 +0300
commit390e14b2c6c07532c0e04766a851ba3001020e25 (patch)
tree87ee78e31f0e711260ac01d8790aa28b42584f89 /src/gui
parent70e62d90db5510143a786d08cb4ce590fe7c0658 (diff)
Implement KDBX 4.1 extended custom icons
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/EditWidgetIcons.cpp7
-rw-r--r--src/gui/EditWidgetIcons.h2
-rw-r--r--src/gui/Icons.cpp2
-rw-r--r--src/gui/group/GroupModel.cpp2
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