From ec4fda1f1112452b1986e3768f0379845b5cd800 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 4 Feb 2023 14:53:51 +0100 Subject: [PATCH] Improved identity password management --- .../eu/faircode/email/FragmentIdentity.java | 94 +++++++++---------- 1 file changed, 45 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentIdentity.java b/app/src/main/java/eu/faircode/email/FragmentIdentity.java index 73db00c9d0..954afcdd4a 100644 --- a/app/src/main/java/eu/faircode/email/FragmentIdentity.java +++ b/app/src/main/java/eu/faircode/email/FragmentIdentity.java @@ -526,11 +526,6 @@ public class FragmentIdentity extends FragmentBase { pbAutoConfig.setVisibility(View.GONE); cbInsecure.setVisibility(View.GONE); - if (id < 0) - tilPassword.setEndIconMode(END_ICON_PASSWORD_TOGGLE); - else - Helper.setupPasswordToggle(getActivity(), tilPassword); - btnAdvanced.setVisibility(View.GONE); etEhlo.setHint(EmailService.getDefaultEhlo()); @@ -566,9 +561,52 @@ public class FragmentIdentity extends FragmentBase { etRealm.setText(account.realm); cbTrust.setChecked(false); + setAuth(auth); + } + + private void setAuth(int auth) { etUser.setEnabled(auth == AUTH_TYPE_PASSWORD); tilPassword.getEditText().setEnabled(auth == AUTH_TYPE_PASSWORD); btnCertificate.setEnabled(auth == AUTH_TYPE_PASSWORD); + + tilPassword.setEndIconMode(TextInputLayout.END_ICON_NONE); + tilPassword.setEndIconMode(auth == AUTH_TYPE_PASSWORD ? END_ICON_PASSWORD_TOGGLE : TextInputLayout.END_ICON_CUSTOM); + + if (auth == AUTH_TYPE_PASSWORD) + Helper.setupPasswordToggle(getActivity(), tilPassword); + else { + tilPassword.setEndIconDrawable(R.drawable.twotone_edit_24); + + tilPassword.setEndIconOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + PopupMenuLifecycle popupMenu = new PopupMenuLifecycle(view.getContext(), FragmentIdentity.this, view); + + popupMenu.getMenu().add(Menu.NONE, R.string.title_account_auth_password, 1, R.string.title_account_auth_password); + + popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + int id = item.getItemId(); + if (id == R.string.title_account_auth_password) { + onPassword(); + return true; + } else + return false; + } + + private void onPassword() { + FragmentIdentity.this.auth = AUTH_TYPE_PASSWORD; + setAuth(AUTH_TYPE_PASSWORD); + tilPassword.getEditText().setText(null); + tilPassword.requestFocus(); + } + }); + + popupMenu.show(); + } + }); + } } private void setProvider(EmailProvider provider) { @@ -716,11 +754,7 @@ public class FragmentIdentity extends FragmentBase { saving = false; invalidateOptionsMenu(); Helper.setViewsEnabled(view, true); - if (auth != AUTH_TYPE_PASSWORD) { - etUser.setEnabled(false); - tilPassword.getEditText().setEnabled(false); - btnCertificate.setEnabled(false); - } + setAuth(auth); // Disable user/password again pbSave.setVisibility(View.GONE); } @@ -1242,45 +1276,7 @@ public class FragmentIdentity extends FragmentBase { } Helper.setViewsEnabled(view, true); - - if (auth != AUTH_TYPE_PASSWORD) { - etUser.setEnabled(false); - tilPassword.getEditText().setEnabled(false); - btnCertificate.setEnabled(false); - - tilPassword.setEndIconDrawable(R.drawable.twotone_edit_24); - tilPassword.setEndIconOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - PopupMenuLifecycle popupMenu = new PopupMenuLifecycle(getContext(), FragmentIdentity.this, view); - - popupMenu.getMenu().add(Menu.NONE, R.string.title_account_auth_password, 1, R.string.title_account_auth_password); - - popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - int id = item.getItemId(); - if (id == R.string.title_account_auth_password) { - onPassword(); - return true; - } else - return false; - } - - private void onPassword() { - auth = AUTH_TYPE_PASSWORD; - etUser.setEnabled(true); - tilPassword.getEditText().setText(null); - tilPassword.getEditText().setEnabled(true); - tilPassword.setEndIconMode(END_ICON_PASSWORD_TOGGLE); - tilPassword.requestFocus(); - } - }); - - popupMenu.show(); - } - }); - } + setAuth(auth); cbPrimary.setEnabled(cbSynchronize.isChecked()); cbSenderExtraName.setEnabled(cbSenderExtra.isChecked());