diff --git a/src/gui/DatabaseSettingsWidget.cpp b/src/gui/DatabaseSettingsWidget.cpp index b47bacca..33a700bc 100644 --- a/src/gui/DatabaseSettingsWidget.cpp +++ b/src/gui/DatabaseSettingsWidget.cpp @@ -19,6 +19,7 @@ #include "ui_DatabaseSettingsWidget.h" #include "core/Database.h" +#include "core/Group.h" #include "core/Metadata.h" #include "keys/CompositeKey.h" @@ -84,17 +85,34 @@ void DatabaseSettingsWidget::save() meta->setRecycleBinEnabled(m_ui->recycleBinEnabledCheckBox->isChecked()); m_db->setTransformRounds(m_ui->transformRoundsSpinBox->value()); + bool truncate = false; + + int historyMaxItems; if (m_ui->historyMaxItemsCheckBox->isChecked()) { - meta->setHistoryMaxItems(m_ui->historyMaxItemsSpinBox->value()); + historyMaxItems = m_ui->historyMaxItemsSpinBox->value(); } else { - meta->setHistoryMaxItems(-1); + historyMaxItems = -1; } + if (historyMaxItems != meta->historyMaxItems()) { + meta->setHistoryMaxItems(historyMaxItems); + truncate = true; + } + + int historyMaxSize; if (m_ui->historyMaxSizeCheckBox->isChecked()) { - meta->setHistoryMaxSize(m_ui->historyMaxSizeSpinBox->value() * 1048576); + historyMaxSize = m_ui->historyMaxSizeSpinBox->value() * 1048576; } else { - meta->setHistoryMaxSize(-1); + historyMaxSize = -1; + } + if (historyMaxSize != meta->historyMaxSize()) { + meta->setHistoryMaxSize(historyMaxSize); + truncate = true; + } + + if (truncate) { + truncateHistories(); } Q_EMIT editFinished(true); @@ -111,3 +129,11 @@ void DatabaseSettingsWidget::transformRoundsBenchmark() m_ui->transformRoundsSpinBox->setValue(CompositeKey::transformKeyBenchmark(1000)); QApplication::restoreOverrideCursor(); } + +void DatabaseSettingsWidget::truncateHistories() +{ + QList allEntries = m_db->rootGroup()->entriesRecursive(false); + Q_FOREACH (Entry* entry, allEntries) { + entry->truncateHistory(); + } +} diff --git a/src/gui/DatabaseSettingsWidget.h b/src/gui/DatabaseSettingsWidget.h index 65d608ff..bd83abe4 100644 --- a/src/gui/DatabaseSettingsWidget.h +++ b/src/gui/DatabaseSettingsWidget.h @@ -47,6 +47,8 @@ private Q_SLOTS: void transformRoundsBenchmark(); private: + void truncateHistories(); + const QScopedPointer m_ui; Database* m_db; diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index 399b1b00..d1327cd5 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -581,14 +581,6 @@ bool DatabaseWidget::canDeleteCurrentGoup() return !isRootGroup && !isRecycleBin; } -void DatabaseWidget::truncateHistories() -{ - QList allEntries = m_db->rootGroup()->entriesRecursive(false); - Q_FOREACH (Entry* entry, allEntries) { - entry->truncateHistory(); - } -} - void DatabaseWidget::clearLastGroup(Group* group) { if (group) { diff --git a/src/gui/DatabaseWidget.h b/src/gui/DatabaseWidget.h index 4e86473c..c055db7c 100644 --- a/src/gui/DatabaseWidget.h +++ b/src/gui/DatabaseWidget.h @@ -110,8 +110,6 @@ private Q_SLOTS: void showEntryContextMenu(const QPoint& pos); private: - void truncateHistories(); - Database* const m_db; const QScopedPointer m_searchUi; QWidget* const m_searchWidget;