From 223c5a165174761675337abed9576a81898d550e Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Sun, 12 Jan 2014 17:08:36 +0100 Subject: [PATCH] Use an icon for the button that shows/masks passwords. Closes #38 Additionally make use of the new PasswordEdit class where possible. --- COPYING | 1 + .../16x16/actions/password-show-off.png | Bin 0 -> 783 bytes .../16x16/actions/password-show-on.png | Bin 0 -> 838 bytes src/gui/ChangeMasterKeyWidget.cpp | 13 +++--- src/gui/ChangeMasterKeyWidget.h | 1 - src/gui/ChangeMasterKeyWidget.ui | 17 ++++---- src/gui/DatabaseOpenWidget.cpp | 10 ++--- src/gui/DatabaseOpenWidget.h | 1 - src/gui/DatabaseOpenWidget.ui | 15 +++---- src/gui/entry/EditEntryWidget.cpp | 38 +++--------------- src/gui/entry/EditEntryWidget.h | 5 --- src/gui/entry/EditEntryWidgetMain.ui | 15 ++++--- 12 files changed, 39 insertions(+), 77 deletions(-) create mode 100644 share/icons/application/16x16/actions/password-show-off.png create mode 100644 share/icons/application/16x16/actions/password-show-on.png 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 0000000000000000000000000000000000000000..24277f6dea1913a153409028f33509d285ac89fa GIT binary patch literal 783 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&N| z?e4XE&fjQyX6n|%3k>fb4Lo!9nx0|X-8~$)4m$H3h|~V5g*ucr`svK@80wN z`R|`~cK6w*v$EQ3(BT$wJ$UC%OufJVdFC}Umo8oE&&|#4voeHfZP@Snrh^9$W*CXED-!t_n&>D#}#gI=VxWR!<8nUFn6ff8~1}-Z~ALZJCy^? zXVWfQ%JkI*eGakXZ*_X_sVl(I&~V6h<;RbOo;qULOi6Whb-Q-&{=GCnBZTSEmoHOR zhG?yym32a4mx`j1~m}brgpt5vAU3967i+U%G&z& z%sF%R)YsI+IHz8=c)@GWT4*Bmw=eLngq$2(4%?-eY!ip2Ax=g!RsL_B;lcWSf2f8? zMo5Xe3}1e6cfz^(o|~^`u}U2JFdUpd@*B5Utiy@2?^5C>)yS6 z`<9_eIYDAsc0xi!=%X!VyLqK&&)%?U508XwNaif%s~IK+Mn+B^RToe6zbyGB?*8EO z&xFFli(R{eOnf)L(3{C7G_$Ar)YGCB*I(ZWT(~pAK!U-xs)hZzow|bf59VNll+BT| zR%pC^w<$R}ImTJ^df@7-E|Nbd&YG}k#*yet^{fIrWB5M({A0K51K<0-z4s61&e1w1 z+_rC@-L)LE;?4(^!u}oZUqiG^yS%(a{xAmz2Y)yC+`cyK^|ONq8-?;02J21N&bW8% n&6}K(w6tY!KUO@r^n>^E8>4vRE#1Kk3=9mOu6{1-oD!M7X literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..ea53bd1c0b39c86e89eba3b2c32b5b4772bc19eb GIT binary patch literal 838 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&N| z?e4w#xneO^D!CcVK zz{KUukt=7*7J7)s-E_UszE*YFB25j|cZ(h#Z=LbGpl*-f^q*Gt+rE9X5C}^!|M%cP zapAoGmj8<_EVM*~9$4^+xGr3~R(JOC$FX7@ENgDRExVOtcJ29RMPuX7|Cw4_TaR~l zckiA)efs)|48E5Gw5Cq*TDtAir=ru2jV=}J{hKx!%~CmMEz|ezF)fzyt$15k&%&ty)N@|-oIJ$!DCW@O43P# z*RNl_n%A6QBDMNS(a!{T_v6=hI2`(NbnDiwhmDPmpC8dw-_c_%rFG_CQ~ERM>GS5f zX+9|`@4gzfW#7JkmlF&^zI^+(O(oAUB0k>!>BowY@^>>g=mjN<8Y+l1hR7T~KAm?# zWuo8GAj7$H=k8qM;j#XD_OD;RVhWXgeSK|t4zF0Xdi91)x(B}>&{Od~JVQSB_=!!0lM)sL2F3T?37{X+70&&2Zlhrhls#&27E zW3j7;@6?4`woKt-YmR*T_HAEdW1~mRffS?0Ek(t7d3~RBe^|~+R@`5}y8chLMDVJK zT3*b;9|RaVMYxXsJ0`%_zTV8-+@4AC=F_6L>vM9es%|;v+|fD{&aKY2++yJ`GgYf; zj8-q4C(dcMGMBEdp7`T{r?|}g^X3+F&n-WxaOT{(q{70&%9@%#tea1{m}-5zdG`Q+ zV#!hNznP5b`?8lPU6gQIC~zY84R_9$@84gWnVZ*&@GX3@>tWL2&1`RvT`TLmFYlpv w{LAgvUyWQ+maJa=dh6A!-Y6Y0nVI&B9$N^MRZqCaz`(%Z>FVdQ&MBb@0L!U?PXGV_ literal 0 HcmV?d00001 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 +
gui/PasswordEdit.h
+
+
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 +
gui/PasswordEdit.h
+
+
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 +
gui/PasswordEdit.h
+
titleEdit