diff --git a/COPYING b/COPYING
index fbb9b2820..7dbc29c1c 100644
--- a/COPYING
+++ b/COPYING
@@ -134,6 +134,7 @@ Files: share/icons/application/*/actions/application-exit.png
share/icons/application/*/actions/document-save-as.png
share/icons/application/*/actions/edit-clear-locationbar-ltr.png
share/icons/application/*/actions/edit-clear-locationbar-rtl.png
+ share/icons/application/*/actions/password-show-*.png
share/icons/application/*/actions/system-search.png
share/icons/application/*/status/dialog-error.png
share/icons/application/*/status/dialog-information.png
diff --git a/share/icons/application/16x16/actions/password-show-off.png b/share/icons/application/16x16/actions/password-show-off.png
new file mode 100644
index 000000000..24277f6de
Binary files /dev/null and b/share/icons/application/16x16/actions/password-show-off.png differ
diff --git a/share/icons/application/16x16/actions/password-show-on.png b/share/icons/application/16x16/actions/password-show-on.png
new file mode 100644
index 000000000..ea53bd1c0
Binary files /dev/null and b/share/icons/application/16x16/actions/password-show-on.png differ
diff --git a/src/gui/ChangeMasterKeyWidget.cpp b/src/gui/ChangeMasterKeyWidget.cpp
index abe5f4b51..b6786f5cd 100644
--- a/src/gui/ChangeMasterKeyWidget.cpp
+++ b/src/gui/ChangeMasterKeyWidget.cpp
@@ -18,6 +18,7 @@
#include "ChangeMasterKeyWidget.h"
#include "ui_ChangeMasterKeyWidget.h"
+#include "core/FilePath.h"
#include "keys/FileKey.h"
#include "keys/PasswordKey.h"
#include "gui/FileDialog.h"
@@ -31,7 +32,9 @@ ChangeMasterKeyWidget::ChangeMasterKeyWidget(QWidget* parent)
connect(m_ui->buttonBox, SIGNAL(accepted()), SLOT(generateKey()));
connect(m_ui->buttonBox, SIGNAL(rejected()), SLOT(reject()));
- connect(m_ui->togglePasswordButton, SIGNAL(toggled(bool)), SLOT(togglePassword(bool)));
+ m_ui->togglePasswordButton->setIcon(filePath()->onOffIcon("actions", "password-show"));
+ connect(m_ui->togglePasswordButton, SIGNAL(toggled(bool)), m_ui->enterPasswordEdit, SLOT(setShowPassword(bool)));
+ m_ui->repeatPasswordEdit->enableVerifyMode(m_ui->enterPasswordEdit);
connect(m_ui->createKeyFileButton, SIGNAL(clicked()), SLOT(createKeyFile()));
connect(m_ui->browseKeyFileButton, SIGNAL(clicked()), SLOT(browseKeyFile()));
}
@@ -40,12 +43,6 @@ ChangeMasterKeyWidget::~ChangeMasterKeyWidget()
{
}
-void ChangeMasterKeyWidget::togglePassword(bool checked)
-{
- m_ui->enterPasswordEdit->setEchoMode(checked ? QLineEdit::Password : QLineEdit::Normal);
- m_ui->repeatPasswordEdit->setEchoMode(checked ? QLineEdit::Password : QLineEdit::Normal);
-}
-
void ChangeMasterKeyWidget::createKeyFile()
{
QString filters = QString("%1 (*.key);;%2 (*)").arg(tr("Key files"), tr("All files"));
@@ -77,7 +74,7 @@ void ChangeMasterKeyWidget::clearForms()
{
m_key.clear();
- m_ui->passwordGroup->setChecked(true);
+ m_ui->passwordGroup->setChecked(false);
m_ui->enterPasswordEdit->setText("");
m_ui->repeatPasswordEdit->setText("");
m_ui->keyFileGroup->setChecked(false);
diff --git a/src/gui/ChangeMasterKeyWidget.h b/src/gui/ChangeMasterKeyWidget.h
index 384aad2d1..46fc3efc9 100644
--- a/src/gui/ChangeMasterKeyWidget.h
+++ b/src/gui/ChangeMasterKeyWidget.h
@@ -45,7 +45,6 @@ Q_SIGNALS:
private Q_SLOTS:
void generateKey();
void reject();
- void togglePassword(bool checked);
void createKeyFile();
void browseKeyFile();
diff --git a/src/gui/ChangeMasterKeyWidget.ui b/src/gui/ChangeMasterKeyWidget.ui
index 712e91f65..862a7a925 100644
--- a/src/gui/ChangeMasterKeyWidget.ui
+++ b/src/gui/ChangeMasterKeyWidget.ui
@@ -52,7 +52,7 @@
-
-
-
+
QLineEdit::Password
@@ -60,15 +60,9 @@
-
-
- ...
-
true
-
- true
-
@@ -81,7 +75,7 @@
-
-
+
QLineEdit::Password
@@ -151,6 +145,13 @@
+
+
+ PasswordEdit
+ QLineEdit
+
+
+
passwordGroup
enterPasswordEdit
diff --git a/src/gui/DatabaseOpenWidget.cpp b/src/gui/DatabaseOpenWidget.cpp
index 4adb9b3a0..973192523 100644
--- a/src/gui/DatabaseOpenWidget.cpp
+++ b/src/gui/DatabaseOpenWidget.cpp
@@ -20,6 +20,7 @@
#include "core/Config.h"
#include "core/Database.h"
+#include "core/FilePath.h"
#include "gui/FileDialog.h"
#include "gui/MessageBox.h"
#include "format/KeePass2Reader.h"
@@ -40,7 +41,9 @@ DatabaseOpenWidget::DatabaseOpenWidget(QWidget* parent)
m_ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
- connect(m_ui->buttonTogglePassword, SIGNAL(toggled(bool)), SLOT(togglePassword(bool)));
+ m_ui->buttonTogglePassword->setIcon(filePath()->onOffIcon("actions", "password-show"));
+ connect(m_ui->buttonTogglePassword, SIGNAL(toggled(bool)),
+ m_ui->editPassword, SLOT(setShowPassword(bool)));
connect(m_ui->buttonBrowseFile, SIGNAL(clicked()), SLOT(browseKeyFile()));
connect(m_ui->editPassword, SIGNAL(textChanged(QString)), SLOT(activatePassword()));
@@ -155,11 +158,6 @@ void DatabaseOpenWidget::reject()
Q_EMIT editFinished(false);
}
-void DatabaseOpenWidget::togglePassword(bool checked)
-{
- m_ui->editPassword->setEchoMode(checked ? QLineEdit::Password : QLineEdit::Normal);
-}
-
void DatabaseOpenWidget::activatePassword()
{
m_ui->checkPassword->setChecked(true);
diff --git a/src/gui/DatabaseOpenWidget.h b/src/gui/DatabaseOpenWidget.h
index e957cd7de..ad40c5711 100644
--- a/src/gui/DatabaseOpenWidget.h
+++ b/src/gui/DatabaseOpenWidget.h
@@ -52,7 +52,6 @@ protected Q_SLOTS:
void reject();
private Q_SLOTS:
- void togglePassword(bool checked);
void activatePassword();
void activateKeyFile();
void setOkButtonEnabled();
diff --git a/src/gui/DatabaseOpenWidget.ui b/src/gui/DatabaseOpenWidget.ui
index 951ab188b..935e7696a 100644
--- a/src/gui/DatabaseOpenWidget.ui
+++ b/src/gui/DatabaseOpenWidget.ui
@@ -72,7 +72,7 @@
-
-
-
+
QLineEdit::Password
@@ -80,15 +80,9 @@
-
-
- ...
-
true
-
- true
-
@@ -144,6 +138,13 @@
+
+
+ PasswordEdit
+ QLineEdit
+
+
+
checkPassword
editPassword
diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp
index a80267790..8080b2b9e 100644
--- a/src/gui/entry/EditEntryWidget.cpp
+++ b/src/gui/entry/EditEntryWidget.cpp
@@ -29,6 +29,7 @@
#include "core/Config.h"
#include "core/Database.h"
#include "core/Entry.h"
+#include "core/FilePath.h"
#include "core/Metadata.h"
#include "core/TimeDelta.h"
#include "core/Tools.h"
@@ -80,19 +81,16 @@ EditEntryWidget::~EditEntryWidget()
{
}
-const QColor EditEntryWidget::CorrectSoFarColor = QColor(255, 205, 15);
-const QColor EditEntryWidget::ErrorColor = QColor(255, 125, 125);
-
void EditEntryWidget::setupMain()
{
m_mainUi->setupUi(m_mainWidget);
add(tr("Entry"), m_mainWidget);
- connect(m_mainUi->togglePasswordButton, SIGNAL(toggled(bool)), SLOT(togglePassword(bool)));
+ m_mainUi->togglePasswordButton->setIcon(filePath()->onOffIcon("actions", "password-show"));
+ connect(m_mainUi->togglePasswordButton, SIGNAL(toggled(bool)), m_mainUi->passwordEdit, SLOT(setShowPassword(bool)));
connect(m_mainUi->tooglePasswordGeneratorButton, SIGNAL(toggled(bool)), SLOT(togglePasswordGeneratorButton(bool)));
connect(m_mainUi->expireCheck, SIGNAL(toggled(bool)), m_mainUi->expireDatePicker, SLOT(setEnabled(bool)));
- connect(m_mainUi->passwordEdit, SIGNAL(textEdited(QString)), SLOT(setPasswordCheckColors()));
- connect(m_mainUi->passwordRepeatEdit, SIGNAL(textEdited(QString)), SLOT(setPasswordCheckColors()));
+ m_mainUi->passwordRepeatEdit->enableVerifyMode(m_mainUi->passwordEdit);
connect(m_mainUi->passwordGenerator, SIGNAL(newPassword(QString)), SLOT(setGeneratedPassword(QString)));
m_mainUi->expirePresets->setMenu(createPresetsMenu());
@@ -307,11 +305,10 @@ void EditEntryWidget::setForms(const Entry* entry, bool restore)
m_mainUi->urlEdit->setText(entry->url());
m_mainUi->passwordEdit->setText(entry->password());
m_mainUi->passwordRepeatEdit->setText(entry->password());
- setPasswordCheckColors();
m_mainUi->expireCheck->setChecked(entry->timeInfo().expires());
m_mainUi->expireDatePicker->setDateTime(entry->timeInfo().expiryTime().toLocalTime());
m_mainUi->expirePresets->setEnabled(!m_history);
- m_mainUi->togglePasswordButton->setChecked(true);
+ m_mainUi->togglePasswordButton->setChecked(false);
m_mainUi->notesEdit->setPlainText(entry->notes());
@@ -478,12 +475,6 @@ void EditEntryWidget::cancel()
Q_EMIT editFinished(false);
}
-void EditEntryWidget::togglePassword(bool checked)
-{
- m_mainUi->passwordEdit->setEchoMode(checked ? QLineEdit::Password : QLineEdit::Normal);
- m_mainUi->passwordRepeatEdit->setEchoMode(checked ? QLineEdit::Password : QLineEdit::Normal);
-}
-
void EditEntryWidget::togglePasswordGeneratorButton(bool checked)
{
m_mainUi->passwordGenerator->setVisible(checked);
@@ -494,25 +485,6 @@ bool EditEntryWidget::passwordsEqual()
return m_mainUi->passwordEdit->text() == m_mainUi->passwordRepeatEdit->text();
}
-void EditEntryWidget::setPasswordCheckColors()
-{
- if (passwordsEqual()) {
- m_mainUi->passwordRepeatEdit->setStyleSheet("");
- }
- else {
- QString stylesheet = "QLineEdit { background: %1; }";
-
- if (m_mainUi->passwordEdit->text().startsWith(m_mainUi->passwordRepeatEdit->text())) {
- stylesheet = stylesheet.arg(CorrectSoFarColor.name());
- }
- else {
- stylesheet = stylesheet.arg(ErrorColor.name());
- }
-
- m_mainUi->passwordRepeatEdit->setStyleSheet(stylesheet);
- }
-}
-
void EditEntryWidget::setGeneratedPassword(const QString& password)
{
m_mainUi->passwordEdit->setText(password);
diff --git a/src/gui/entry/EditEntryWidget.h b/src/gui/entry/EditEntryWidget.h
index bfdde1636..4e3d82efa 100644
--- a/src/gui/entry/EditEntryWidget.h
+++ b/src/gui/entry/EditEntryWidget.h
@@ -58,9 +58,6 @@ public:
void loadEntry(Entry* entry, bool create, bool history, const QString& parentName,
Database* database);
- static const QColor CorrectSoFarColor;
- static const QColor ErrorColor;
-
void createPresetsMenu(QMenu* expirePresetsMenu);
QString entryTitle() const;
@@ -71,9 +68,7 @@ Q_SIGNALS:
private Q_SLOTS:
void saveEntry();
void cancel();
- void togglePassword(bool checked);
void togglePasswordGeneratorButton(bool checked);
- void setPasswordCheckColors();
void setGeneratedPassword(const QString& password);
void insertAttribute();
void editCurrentAttribute();
diff --git a/src/gui/entry/EditEntryWidgetMain.ui b/src/gui/entry/EditEntryWidgetMain.ui
index 5b0001f8b..0a26bede4 100644
--- a/src/gui/entry/EditEntryWidgetMain.ui
+++ b/src/gui/entry/EditEntryWidgetMain.ui
@@ -44,7 +44,7 @@
-
-
-
+
QLineEdit::Password
@@ -52,15 +52,9 @@
-
-
- ...
-
true
-
- true
-
@@ -75,7 +69,7 @@
-
-
-
+
QLineEdit::Password
@@ -160,6 +154,11 @@
gui/PasswordGeneratorWidget.h
1
+
+ PasswordEdit
+ QLineEdit
+
+
titleEdit