diff options
author | Balazs Gyurak <ba32107@gmail.com> | 2022-01-22 21:20:41 +0300 |
---|---|---|
committer | Jonathan White <support@dmapps.us> | 2022-01-31 15:19:45 +0300 |
commit | 6897787d8f923991b8f4bbd0a006744f5c2221c3 (patch) | |
tree | 1ff7d5b3a2bccca43478b1445e0689e19c8f70ec /src/gui | |
parent | 3c824cb500f5403fe925f591ee45f1e6abf20ae7 (diff) |
Show expired entries on DB unlock
* Show banner message about expired entries
* Add config option and expiration offset
* Only show expiry warning on first DB unlock
* Default to on with 3-day offset from expiration
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/ApplicationSettingsWidget.cpp | 18 | ||||
-rw-r--r-- | src/gui/ApplicationSettingsWidget.h | 1 | ||||
-rw-r--r-- | src/gui/ApplicationSettingsWidgetGeneral.ui | 69 | ||||
-rw-r--r-- | src/gui/DatabaseWidget.cpp | 22 |
4 files changed, 110 insertions, 0 deletions
diff --git a/src/gui/ApplicationSettingsWidget.cpp b/src/gui/ApplicationSettingsWidget.cpp index ac96d23b4..61a3cc0f5 100644 --- a/src/gui/ApplicationSettingsWidget.cpp +++ b/src/gui/ApplicationSettingsWidget.cpp @@ -120,6 +120,8 @@ ApplicationSettingsWidget::ApplicationSettingsWidget(QWidget* parent) connect(m_generalUi->backupBeforeSaveCheckBox, SIGNAL(toggled(bool)), m_generalUi->backupFilePathPicker, SLOT(setEnabled(bool))); connect(m_generalUi->backupFilePathPicker, SIGNAL(pressed()), SLOT(selectBackupDirectory())); + connect(m_generalUi->showExpiredEntriesOnDatabaseUnlockCheckBox, SIGNAL(toggled(bool)), + SLOT(showExpiredEntriesOnDatabaseUnlockToggled(bool))); connect(m_secUi->clearClipboardCheckBox, SIGNAL(toggled(bool)), m_secUi->clearClipboardSpinBox, SLOT(setEnabled(bool))); @@ -251,6 +253,12 @@ void ApplicationSettingsWidget::loadSettings() m_generalUi->checkForUpdatesIncludeBetasCheckBox->setChecked( config()->get(Config::GUI_CheckForUpdatesIncludeBetas).toBool()); + m_generalUi->showExpiredEntriesOnDatabaseUnlockCheckBox->setChecked( + config()->get(Config::GUI_ShowExpiredEntriesOnDatabaseUnlock).toBool()); + m_generalUi->showExpiredEntriesOnDatabaseUnlockOffsetSpinBox->setValue( + config()->get(Config::GUI_ShowExpiredEntriesOnDatabaseUnlockOffsetDays).toInt()); + showExpiredEntriesOnDatabaseUnlockToggled(m_generalUi->showExpiredEntriesOnDatabaseUnlockCheckBox->isChecked()); + m_generalUi->autoTypeAskCheckBox->setChecked(config()->get(Config::Security_AutoTypeAsk).toBool()); if (autoType()->isAvailable()) { @@ -378,6 +386,11 @@ void ApplicationSettingsWidget::saveSettings() config()->set(Config::GUI_CheckForUpdatesIncludeBetas, m_generalUi->checkForUpdatesIncludeBetasCheckBox->isChecked()); + config()->set(Config::GUI_ShowExpiredEntriesOnDatabaseUnlock, + m_generalUi->showExpiredEntriesOnDatabaseUnlockCheckBox->isChecked()); + config()->set(Config::GUI_ShowExpiredEntriesOnDatabaseUnlockOffsetDays, + m_generalUi->showExpiredEntriesOnDatabaseUnlockOffsetSpinBox->value()); + config()->set(Config::Security_AutoTypeAsk, m_generalUi->autoTypeAskCheckBox->isChecked()); if (autoType()->isAvailable()) { @@ -520,6 +533,11 @@ void ApplicationSettingsWidget::checkUpdatesToggled(bool checked) m_generalUi->checkForUpdatesIncludeBetasCheckBox->setEnabled(checked); } +void ApplicationSettingsWidget::showExpiredEntriesOnDatabaseUnlockToggled(bool checked) +{ + m_generalUi->showExpiredEntriesOnDatabaseUnlockOffsetSpinBox->setEnabled(checked); +} + void ApplicationSettingsWidget::selectBackupDirectory() { auto backupDirectory = diff --git a/src/gui/ApplicationSettingsWidget.h b/src/gui/ApplicationSettingsWidget.h index c5f2ed7e3..15fc5a344 100644 --- a/src/gui/ApplicationSettingsWidget.h +++ b/src/gui/ApplicationSettingsWidget.h @@ -62,6 +62,7 @@ private slots: void systrayToggled(bool checked); void rememberDatabasesToggled(bool checked); void checkUpdatesToggled(bool checked); + void showExpiredEntriesOnDatabaseUnlockToggled(bool checked); void selectBackupDirectory(); private: diff --git a/src/gui/ApplicationSettingsWidgetGeneral.ui b/src/gui/ApplicationSettingsWidgetGeneral.ui index e4abc647b..f0404b215 100644 --- a/src/gui/ApplicationSettingsWidgetGeneral.ui +++ b/src/gui/ApplicationSettingsWidgetGeneral.ui @@ -234,6 +234,73 @@ </item> </layout> </item> + <item> + <layout class="QGridLayout" name="showExpiredEntriesSubLayout"> + <property name="sizeConstraint"> + <enum>QLayout::SetMaximumSize</enum> + </property> + <property name="spacing"> + <number>6</number> + </property> + <item row="0" column="0"> + <widget class="QCheckBox" name="showExpiredEntriesOnDatabaseUnlockCheckBox"> + <property name="text"> + <string>On database unlock, show entries that </string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QSpinBox" name="showExpiredEntriesOnDatabaseUnlockOffsetSpinBox"> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> + </property> + <property name="accessibleName"> + <string>On database unlock, show entries that </string> + </property> + <property name="prefix"> + <string>will expire within </string> + </property> + <property name="suffix"> + <string> days</string> + </property> + <property name="minimum"> + <number>0</number> + </property> + <property name="maximum"> + <number>30</number> + </property> + <property name="value"> + <number>0</number> + </property> + <property name="specialValueText"> + <string>are expired</string> + </property> + </widget> + </item> + <item row="0" column="2"> + <spacer name="showExpiredEntriesSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> </layout> </widget> </item> @@ -1138,6 +1205,8 @@ <tabstop>rememberLastKeyFilesCheckBox</tabstop> <tabstop>checkForUpdatesOnStartupCheckBox</tabstop> <tabstop>checkForUpdatesIncludeBetasCheckBox</tabstop> + <tabstop>showExpiredEntriesOnDatabaseUnlockCheckBox</tabstop> + <tabstop>showExpiredEntriesOnDatabaseUnlockOffsetSpinBox</tabstop> <tabstop>autoSaveAfterEveryChangeCheckBox</tabstop> <tabstop>autoSaveOnExitCheckBox</tabstop> <tabstop>autoSaveNonDataChangesCheckBox</tabstop> diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index b97aaf973..c974c1c9b 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -1119,7 +1119,29 @@ void DatabaseWidget::loadDatabase(bool accepted) replaceDatabase(openWidget->database()); switchToMainView(); processAutoOpen(); + restoreGroupEntryFocus(m_groupBeforeLock, m_entryBeforeLock); + + // Only show expired entries if first unlock and option is enabled + if (m_groupBeforeLock.isNull() && config()->get(Config::GUI_ShowExpiredEntriesOnDatabaseUnlock).toBool()) { + int expirationOffset = config()->get(Config::GUI_ShowExpiredEntriesOnDatabaseUnlockOffsetDays).toInt(); + QList<Entry*> expiredEntries; + for (auto entry : m_db->rootGroup()->entriesRecursive()) { + if (entry->willExpireInDays(expirationOffset) && !entry->excludeFromReports() && !entry->isRecycled()) { + expiredEntries << entry; + } + } + + if (!expiredEntries.isEmpty()) { + m_entryView->displaySearch(expiredEntries); + m_entryView->setFirstEntryActive(); + m_searchingLabel->setText(expirationOffset == 0 + ? tr("Expired entries") + : tr("Entries expiring within %1 days").arg(expirationOffset)); + m_searchingLabel->setVisible(true); + } + } + m_groupBeforeLock = QUuid(); m_entryBeforeLock = QUuid(); m_saveAttempts = 0; |