diff options
author | Jonathan White <support@dmapps.us> | 2022-09-05 19:55:57 +0300 |
---|---|---|
committer | Jonathan White <support@dmapps.us> | 2022-09-08 13:46:48 +0300 |
commit | e5bd5f39fb0951a6d31e08e1fb62865ceebe8620 (patch) | |
tree | feda0fff0536971171d6cabcb6a0f4e2121d0954 | |
parent | dfee59742f6f630df24178cada6eea1614004e70 (diff) |
Use search for showing expired entries on unlock
* Fix #8036 - use search interface to display expiring entries on first unlock.
-rw-r--r-- | src/gui/DatabaseWidget.cpp | 18 | ||||
-rw-r--r-- | src/gui/DatabaseWidget.h | 1 | ||||
-rw-r--r-- | tests/gui/TestGui.cpp | 2 |
3 files changed, 14 insertions, 7 deletions
diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index 39f3595e5..712cab6a0 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -1128,13 +1128,13 @@ void DatabaseWidget::loadDatabase(bool accepted) // 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(); + if (expirationOffset <= 0) { + m_nextSearchLabelText = tr("Expired entries"); + } else { + m_nextSearchLabelText = + tr("Entries expiring within %1 day(s)", "", expirationOffset).arg(expirationOffset); + } requestSearch(QString("is:expired-%1").arg(expirationOffset)); - QTimer::singleShot(150, this, [=] { - m_searchingLabel->setText( - expirationOffset == 0 - ? tr("Expired entries") - : tr("Entries expiring within %1 day(s)", "", expirationOffset).arg(expirationOffset)); - }); } m_groupBeforeLock = QUuid(); @@ -1426,7 +1426,10 @@ void DatabaseWidget::search(const QString& searchtext) m_lastSearchText = searchtext; // Display a label detailing our search results - if (!searchResult.isEmpty()) { + if (!m_nextSearchLabelText.isEmpty()) { + m_searchingLabel->setText(m_nextSearchLabelText); + m_nextSearchLabelText.clear(); + } else if (!searchResult.isEmpty()) { m_searchingLabel->setText(tr("Search Results (%1)").arg(searchResult.size())); } else { m_searchingLabel->setText(tr("No Results")); @@ -1545,6 +1548,7 @@ void DatabaseWidget::endSearch() m_searchingLabel->setText(tr("Searching…")); m_lastSearchText.clear(); + m_nextSearchLabelText.clear(); // Tell the search widget to clear emit clearSearch(); diff --git a/src/gui/DatabaseWidget.h b/src/gui/DatabaseWidget.h index ede5a5fbf..57108dfbf 100644 --- a/src/gui/DatabaseWidget.h +++ b/src/gui/DatabaseWidget.h @@ -302,6 +302,7 @@ private: // Search state QScopedPointer<EntrySearcher> m_entrySearcher; QString m_lastSearchText; + QString m_nextSearchLabelText; bool m_searchLimitGroup; // Autoreload diff --git a/tests/gui/TestGui.cpp b/tests/gui/TestGui.cpp index c00e3a10b..c1b339f33 100644 --- a/tests/gui/TestGui.cpp +++ b/tests/gui/TestGui.cpp @@ -111,6 +111,8 @@ void TestGui::init() config()->set(Config::Security_QuickUnlock, false); // Disable atomic saves to prevent transient errors on some platforms config()->set(Config::UseAtomicSaves, false); + // Disable showing expired entries on unlock + config()->set(Config::GUI_ShowExpiredEntriesOnDatabaseUnlock, false); // Copy the test database file to the temporary file auto origFilePath = QDir(KEEPASSX_TEST_DATA_DIR).absoluteFilePath("NewDatabase.kdbx"); |