From de168959a59120bb8352ee97e4eecf2b967bfe2b Mon Sep 17 00:00:00 2001 From: Jonathan White Date: Mon, 5 Sep 2022 12:55:57 -0400 Subject: Use search for showing expired entries on unlock * Fix #8036 - use search interface to display expiring entries on first unlock. --- src/gui/DatabaseWidget.cpp | 18 +++++++++++------- src/gui/DatabaseWidget.h | 1 + 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 9c69b7ee1..4618ef3fa 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 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"); -- cgit v1.2.3