mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-02-17 13:02:49 -05:00
Add extend entry-size calculation (resolved #1387)
Extended the calculation for the size of history items to match KeePass2 Small refactoring regarding readability in EntryAttachements
This commit is contained in:
parent
83f1a53d32
commit
045f157a63
@ -103,6 +103,15 @@ int AutoTypeAssociations::size() const
|
||||
return m_associations.size();
|
||||
}
|
||||
|
||||
int AutoTypeAssociations::associationsSize() const
|
||||
{
|
||||
int size = 0;
|
||||
foreach (const Association &association, m_associations) {
|
||||
size += association.sequence.toUtf8().size() + association.window.toUtf8().size();
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
void AutoTypeAssociations::clear()
|
||||
{
|
||||
m_associations.clear();
|
||||
|
@ -43,6 +43,7 @@ public:
|
||||
AutoTypeAssociations::Association get(int index) const;
|
||||
QList<AutoTypeAssociations::Association> getAll() const;
|
||||
int size() const;
|
||||
int associationsSize() const;
|
||||
void clear();
|
||||
|
||||
private:
|
||||
|
@ -582,7 +582,7 @@ void Entry::truncateHistory()
|
||||
int histMaxSize = db->metadata()->historyMaxSize();
|
||||
if (histMaxSize > -1) {
|
||||
int size = 0;
|
||||
QSet<QByteArray> foundAttachments = attachments()->values().toSet();
|
||||
QSet<QByteArray> foundAttachments = attachments()->values();
|
||||
|
||||
QMutableListIterator<Entry*> i(m_history);
|
||||
i.toBack();
|
||||
@ -592,12 +592,12 @@ void Entry::truncateHistory()
|
||||
// don't calculate size if it's already above the maximum
|
||||
if (size <= histMaxSize) {
|
||||
size += historyItem->attributes()->attributesSize();
|
||||
|
||||
const QSet<QByteArray> newAttachments = historyItem->attachments()->values().toSet() - foundAttachments;
|
||||
for (const QByteArray& attachment : newAttachments) {
|
||||
size += attachment.size();
|
||||
size += historyItem->autoTypeAssociations()->associationsSize();
|
||||
size += historyItem->attachments()->attachmentsSize(foundAttachments);
|
||||
foreach( const QString &tag, historyItem->tags().split(QRegExp(",|;|:"), QString::SkipEmptyParts)){
|
||||
size += tag.toUtf8().size();
|
||||
}
|
||||
foundAttachments += newAttachments;
|
||||
foundAttachments += historyItem->attachments()->values();
|
||||
}
|
||||
|
||||
if (size > histMaxSize) {
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include "EntryAttachments.h"
|
||||
|
||||
#include <QStringList>
|
||||
#include <QSet>
|
||||
|
||||
EntryAttachments::EntryAttachments(QObject* parent)
|
||||
: QObject(parent)
|
||||
@ -34,9 +35,9 @@ bool EntryAttachments::hasKey(const QString& key) const
|
||||
return m_attachments.contains(key);
|
||||
}
|
||||
|
||||
QList<QByteArray> EntryAttachments::values() const
|
||||
QSet<QByteArray> EntryAttachments::values() const
|
||||
{
|
||||
return m_attachments.values();
|
||||
return m_attachments.values().toSet();
|
||||
}
|
||||
|
||||
QByteArray EntryAttachments::value(const QString& key) const
|
||||
@ -151,3 +152,13 @@ bool EntryAttachments::operator!=(const EntryAttachments& other) const
|
||||
{
|
||||
return m_attachments != other.m_attachments;
|
||||
}
|
||||
|
||||
int EntryAttachments::attachmentsSize(const QSet<QByteArray> &ignoredAttachments) const
|
||||
{
|
||||
int size = 0;
|
||||
const QSet<QByteArray> consideredAttachments = m_attachments.values().toSet() - ignoredAttachments;
|
||||
for (const QByteArray& attachment : consideredAttachments) {
|
||||
size += attachment.size();
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ public:
|
||||
explicit EntryAttachments(QObject* parent = nullptr);
|
||||
QList<QString> keys() const;
|
||||
bool hasKey(const QString& key) const;
|
||||
QList<QByteArray> values() const;
|
||||
QSet<QByteArray> values() const;
|
||||
QByteArray value(const QString& key) const;
|
||||
void set(const QString& key, const QByteArray& value);
|
||||
void remove(const QString& key);
|
||||
@ -41,6 +41,7 @@ public:
|
||||
void copyDataFrom(const EntryAttachments* other);
|
||||
bool operator==(const EntryAttachments& other) const;
|
||||
bool operator!=(const EntryAttachments& other) const;
|
||||
int attachmentsSize(const QSet<QByteArray> &ignoredAttachments) const;
|
||||
|
||||
signals:
|
||||
void modified();
|
||||
|
@ -283,14 +283,14 @@ void EntryAttributes::clear()
|
||||
emit modified();
|
||||
}
|
||||
|
||||
int EntryAttributes::attributesSize()
|
||||
int EntryAttributes::attributesSize() const
|
||||
{
|
||||
int size = 0;
|
||||
|
||||
QMapIterator<QString, QString> i(m_attributes);
|
||||
while (i.hasNext()) {
|
||||
i.next();
|
||||
size += i.value().toUtf8().size();
|
||||
size += i.key().toUtf8().size() + i.value().toUtf8().size();
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ public:
|
||||
void copyCustomKeysFrom(const EntryAttributes* other);
|
||||
bool areCustomKeysDifferent(const EntryAttributes* other);
|
||||
void clear();
|
||||
int attributesSize();
|
||||
int attributesSize() const;
|
||||
void copyDataFrom(const EntryAttributes* other);
|
||||
bool operator==(const EntryAttributes& other) const;
|
||||
bool operator!=(const EntryAttributes& other) const;
|
||||
|
Loading…
x
Reference in New Issue
Block a user