diff options
Diffstat (limited to 'src/gui/PasswordEdit.cpp')
-rw-r--r-- | src/gui/PasswordEdit.cpp | 30 |
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) |