Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/SearchWidget.cpp')
-rw-r--r--src/gui/SearchWidget.cpp35
1 files changed, 22 insertions, 13 deletions
diff --git a/src/gui/SearchWidget.cpp b/src/gui/SearchWidget.cpp
index 822d40ba1..1c7b683c1 100644
--- a/src/gui/SearchWidget.cpp
+++ b/src/gui/SearchWidget.cpp
@@ -25,7 +25,7 @@
#include <QToolButton>
#include "core/Config.h"
-#include "core/FilePath.h"
+#include "core/Resources.h"
#include "gui/widgets/PopupHelpWidget.h"
SearchWidget::SearchWidget(QWidget* parent)
@@ -38,7 +38,6 @@ SearchWidget::SearchWidget(QWidget* parent)
setFocusProxy(m_ui->searchEdit);
m_helpWidget = new PopupHelpWidget(m_ui->searchEdit);
- m_helpWidget->setOffset(QPoint(0, 1));
Ui::SearchHelpWidget helpUi;
helpUi.setupUi(m_helpWidget);
@@ -68,15 +67,15 @@ SearchWidget::SearchWidget(QWidget* parent)
m_actionLimitGroup = m_searchMenu->addAction(tr("Limit search to selected group"), this, SLOT(updateLimitGroup()));
m_actionLimitGroup->setObjectName("actionSearchLimitGroup");
m_actionLimitGroup->setCheckable(true);
- m_actionLimitGroup->setChecked(config()->get("SearchLimitGroup", false).toBool());
+ m_actionLimitGroup->setChecked(config()->get(Config::SearchLimitGroup).toBool());
- m_ui->searchIcon->setIcon(filePath()->icon("actions", "system-search"));
+ m_ui->searchIcon->setIcon(resources()->icon("system-search"));
m_ui->searchEdit->addAction(m_ui->searchIcon, QLineEdit::LeadingPosition);
- m_ui->helpIcon->setIcon(filePath()->icon("actions", "system-help"));
+ m_ui->helpIcon->setIcon(resources()->icon("system-help"));
m_ui->searchEdit->addAction(m_ui->helpIcon, QLineEdit::TrailingPosition);
- m_ui->clearIcon->setIcon(filePath()->icon("actions", "edit-clear-locationbar-rtl"));
+ m_ui->clearIcon->setIcon(resources()->icon("edit-clear-locationbar-rtl"));
m_ui->clearIcon->setVisible(false);
m_ui->searchEdit->addAction(m_ui->clearIcon, QLineEdit::TrailingPosition);
@@ -115,15 +114,16 @@ bool SearchWidget::eventFilter(QObject* obj, QEvent* event)
return true;
}
}
- } else if (event->type() == QEvent::FocusOut) {
- if (config()->get("security/clearsearch").toBool()) {
- int timeout = config()->get("security/clearsearchtimeout").toInt();
+ } else if (event->type() == QEvent::FocusOut && !m_ui->searchEdit->text().isEmpty()) {
+ if (config()->get(Config::Security_ClearSearch).toBool()) {
+ int timeout = config()->get(Config::Security_ClearSearchTimeout).toInt();
if (timeout > 0) {
// Auto-clear search after set timeout (5 minutes by default)
m_clearSearchTimer->start(timeout * 60000); // 60 sec * 1000 ms
}
}
} else if (event->type() == QEvent::FocusIn) {
+ // Never clear the search if we are using it
m_clearSearchTimer->stop();
}
@@ -137,8 +137,11 @@ void SearchWidget::connectSignals(SignalMultiplexer& mx)
mx.connect(this, SIGNAL(caseSensitiveChanged(bool)), SLOT(setSearchCaseSensitive(bool)));
mx.connect(this, SIGNAL(limitGroupChanged(bool)), SLOT(setSearchLimitGroup(bool)));
mx.connect(this, SIGNAL(copyPressed()), SLOT(copyPassword()));
- mx.connect(this, SIGNAL(downPressed()), SLOT(setFocus()));
+ mx.connect(this, SIGNAL(downPressed()), SLOT(focusOnEntries()));
mx.connect(SIGNAL(clearSearch()), m_ui->searchEdit, SLOT(clear()));
+ mx.connect(SIGNAL(entrySelectionChanged()), this, SLOT(resetSearchClearTimer()));
+ mx.connect(SIGNAL(currentModeChanged(DatabaseWidget::Mode)), this, SLOT(resetSearchClearTimer()));
+ mx.connect(SIGNAL(databaseUnlocked()), this, SLOT(searchFocus()));
mx.connect(m_ui->searchEdit, SIGNAL(returnPressed()), SLOT(switchToEntryEdit()));
}
@@ -147,8 +150,6 @@ void SearchWidget::databaseChanged(DatabaseWidget* dbWidget)
if (dbWidget != nullptr) {
// Set current search text from this database
m_ui->searchEdit->setText(dbWidget->getCurrentSearch());
- // Keyboard focus on search widget at database unlocking
- connect(dbWidget, SIGNAL(databaseUnlocked()), this, SLOT(searchFocus()));
// Enforce search policy
emit caseSensitiveChanged(m_actionCaseSensitive->isChecked());
emit limitGroupChanged(m_actionLimitGroup->isChecked());
@@ -177,6 +178,14 @@ void SearchWidget::startSearch()
search(m_ui->searchEdit->text());
}
+void SearchWidget::resetSearchClearTimer()
+{
+ // Restart the search clear timer if it is running
+ if (m_clearSearchTimer->isActive()) {
+ m_clearSearchTimer->start();
+ }
+}
+
void SearchWidget::updateCaseSensitive()
{
emit caseSensitiveChanged(m_actionCaseSensitive->isChecked());
@@ -190,7 +199,7 @@ void SearchWidget::setCaseSensitive(bool state)
void SearchWidget::updateLimitGroup()
{
- config()->set("SearchLimitGroup", m_actionLimitGroup->isChecked());
+ config()->set(Config::SearchLimitGroup, m_actionLimitGroup->isChecked());
emit limitGroupChanged(m_actionLimitGroup->isChecked());
}