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/PasswordEdit.cpp')
-rw-r--r--src/gui/PasswordEdit.cpp30
1 files changed, 22 insertions, 8 deletions
diff --git a/src/gui/PasswordEdit.cpp b/src/gui/PasswordEdit.cpp
index e341eddd4..37b82ad8b 100644
--- a/src/gui/PasswordEdit.cpp
+++ b/src/gui/PasswordEdit.cpp
@@ -19,6 +19,7 @@
#include "PasswordEdit.h"
#include "core/Config.h"
+#include "core/FilePath.h"
#include "gui/Font.h"
const QColor PasswordEdit::CorrectSoFarColor = QColor(255, 205, 15);
@@ -28,6 +29,16 @@ PasswordEdit::PasswordEdit(QWidget* parent)
: QLineEdit(parent)
, m_basePasswordEdit(nullptr)
{
+ const QIcon errorIcon = filePath()->icon("status", "dialog-error");
+ m_errorAction = addAction(errorIcon, QLineEdit::TrailingPosition);
+ m_errorAction->setVisible(false);
+ m_errorAction->setToolTip(tr("Passwords do not match"));
+
+ const QIcon correctIcon = filePath()->icon("actions", "dialog-ok");
+ m_correctAction = addAction(correctIcon, QLineEdit::TrailingPosition);
+ m_correctAction->setVisible(false);
+ m_correctAction->setToolTip(tr("Passwords match so far"));
+
setEchoMode(QLineEdit::Password);
updateStylesheet();
@@ -83,20 +94,23 @@ bool PasswordEdit::passwordsEqual() const
void PasswordEdit::updateStylesheet()
{
- QString stylesheet("QLineEdit { ");
+ const QString stylesheetTemplate("QLineEdit { background: %1; }");
if (m_basePasswordEdit && !passwordsEqual()) {
- stylesheet.append("background: %1; ");
-
+ bool isCorrect = true;
if (m_basePasswordEdit->text().startsWith(text())) {
- stylesheet = stylesheet.arg(CorrectSoFarColor.name());
+ setStyleSheet(stylesheetTemplate.arg(CorrectSoFarColor.name()));
} else {
- stylesheet = stylesheet.arg(ErrorColor.name());
+ setStyleSheet(stylesheetTemplate.arg(ErrorColor.name()));
+ isCorrect = false;
}
+ m_correctAction->setVisible(isCorrect);
+ m_errorAction->setVisible(!isCorrect);
+ } else {
+ m_correctAction->setVisible(false);
+ m_errorAction->setVisible(false);
+ setStyleSheet("");
}
-
- stylesheet.append("}");
- setStyleSheet(stylesheet);
}
void PasswordEdit::autocompletePassword(const QString& password)