From 310fd9815175866a5ceba9e8243a0c18ca91bb9b Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 13 Mar 2019 07:17:24 +0000 Subject: [PATCH] Use radio button for SSL/STARTTLS --- .../eu/faircode/email/FragmentAccount.java | 23 +++++++------- .../eu/faircode/email/FragmentIdentity.java | 21 ++++++------- app/src/main/res/layout/fragment_account.xml | 30 ++++++++++++++----- app/src/main/res/layout/fragment_identity.xml | 30 ++++++++++++++----- app/src/main/res/values/strings.xml | 1 + app/src/main/res/values/styles.xml | 7 +++++ 6 files changed, 76 insertions(+), 36 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentAccount.java b/app/src/main/java/eu/faircode/email/FragmentAccount.java index 44b9f1127b..7e36b07d1b 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccount.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccount.java @@ -53,6 +53,7 @@ import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.EditText; import android.widget.ImageView; +import android.widget.RadioGroup; import android.widget.ScrollView; import android.widget.Spinner; import android.widget.TextView; @@ -95,7 +96,7 @@ public class FragmentAccount extends FragmentBase { private Button btnAuthorize; private EditText etHost; - private CheckBox cbStartTls; + private RadioGroup rgEncryption; private CheckBox cbInsecure; private EditText etPort; private EditText etUser; @@ -173,7 +174,7 @@ public class FragmentAccount extends FragmentBase { btnAuthorize = view.findViewById(R.id.btnAuthorize); etHost = view.findViewById(R.id.etHost); etPort = view.findViewById(R.id.etPort); - cbStartTls = view.findViewById(R.id.cbStartTls); + rgEncryption = view.findViewById(R.id.rgEncryption); cbInsecure = view.findViewById(R.id.cbInsecure); etUser = view.findViewById(R.id.etUser); tilPassword = view.findViewById(R.id.tilPassword); @@ -247,7 +248,7 @@ public class FragmentAccount extends FragmentBase { etHost.setText(provider.imap_host); etPort.setText(provider.imap_host == null ? null : Integer.toString(provider.imap_port)); - cbStartTls.setChecked(provider.imap_starttls); + rgEncryption.check(provider.imap_starttls ? R.id.radio_starttls : R.id.radio_ssl); etUser.setTag(null); etUser.setText(null); @@ -290,10 +291,10 @@ public class FragmentAccount extends FragmentBase { } }); - cbStartTls.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + rgEncryption.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override - public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { - etPort.setHint(checked ? "143" : "993"); + public void onCheckedChanged(RadioGroup group, int id) { + etPort.setHint(id == R.id.radio_starttls ? "143" : "993"); } }); @@ -433,7 +434,7 @@ public class FragmentAccount extends FragmentBase { btnAutoConfig.setEnabled(false); btnAuthorize.setVisibility(View.GONE); - cbStartTls.setVisibility(View.GONE); + rgEncryption.setVisibility(View.GONE); cbInsecure.setVisibility(View.GONE); tilPassword.setPasswordVisibilityToggleEnabled(id < 0); @@ -485,7 +486,7 @@ public class FragmentAccount extends FragmentBase { protected void onExecuted(Bundle args, EmailProvider provider) { etHost.setText(provider.imap_host); etPort.setText(Integer.toString(provider.imap_port)); - cbStartTls.setChecked(provider.imap_starttls); + rgEncryption.check(provider.imap_starttls ? R.id.radio_starttls : R.id.radio_ssl); } @Override @@ -503,7 +504,7 @@ public class FragmentAccount extends FragmentBase { args.putLong("id", id); args.putInt("auth_type", auth_type); args.putString("host", etHost.getText().toString()); - args.putBoolean("starttls", cbStartTls.isChecked()); + args.putBoolean("starttls", rgEncryption.getCheckedRadioButtonId() == R.id.radio_starttls); args.putBoolean("insecure", cbInsecure.isChecked()); args.putString("port", etPort.getText().toString()); args.putString("user", etUser.getText().toString()); @@ -741,7 +742,7 @@ public class FragmentAccount extends FragmentBase { args.putInt("auth_type", auth_type); args.putString("host", etHost.getText().toString()); - args.putBoolean("starttls", cbStartTls.isChecked()); + args.putBoolean("starttls", rgEncryption.getCheckedRadioButtonId() == R.id.radio_starttls); args.putBoolean("insecure", cbInsecure.isChecked()); args.putString("port", etPort.getText().toString()); args.putString("user", etUser.getText().toString()); @@ -1130,7 +1131,7 @@ public class FragmentAccount extends FragmentBase { etPort.setText(Long.toString(account.port)); } - cbStartTls.setChecked(account == null ? false : account.starttls); + rgEncryption.check(account != null && account.starttls ? R.id.radio_starttls : R.id.radio_ssl); cbInsecure.setChecked(account == null ? false : account.insecure); etUser.setTag(account == null || auth_type == Helper.AUTH_TYPE_PASSWORD ? null : account.user); diff --git a/app/src/main/java/eu/faircode/email/FragmentIdentity.java b/app/src/main/java/eu/faircode/email/FragmentIdentity.java index d5878436a2..a4e83acf63 100644 --- a/app/src/main/java/eu/faircode/email/FragmentIdentity.java +++ b/app/src/main/java/eu/faircode/email/FragmentIdentity.java @@ -43,6 +43,7 @@ import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.EditText; import android.widget.ImageView; +import android.widget.RadioGroup; import android.widget.ScrollView; import android.widget.Spinner; import android.widget.TextView; @@ -90,7 +91,7 @@ public class FragmentIdentity extends FragmentBase { private EditText etDomain; private Button btnAutoConfig; private EditText etHost; - private CheckBox cbStartTls; + private RadioGroup rgEncryption; private CheckBox cbInsecure; private EditText etPort; private EditText etUser; @@ -159,7 +160,7 @@ public class FragmentIdentity extends FragmentBase { btnAutoConfig = view.findViewById(R.id.btnAutoConfig); etHost = view.findViewById(R.id.etHost); - cbStartTls = view.findViewById(R.id.cbStartTls); + rgEncryption = view.findViewById(R.id.rgEncryption); cbInsecure = view.findViewById(R.id.cbInsecure); etPort = view.findViewById(R.id.etPort); etUser = view.findViewById(R.id.etUser); @@ -224,7 +225,7 @@ public class FragmentIdentity extends FragmentBase { // This is needed because the spinner might be invisible etHost.setText(provider.smtp_host); etPort.setText(Integer.toString(provider.smtp_port)); - cbStartTls.setChecked(provider.smtp_starttls); + rgEncryption.check(provider.smtp_starttls ? R.id.radio_starttls : R.id.radio_ssl); break; } @@ -347,7 +348,7 @@ public class FragmentIdentity extends FragmentBase { // Set associated host/port/starttls etHost.setText(provider.smtp_host); etPort.setText(position == 0 ? null : Integer.toString(provider.smtp_port)); - cbStartTls.setChecked(provider.smtp_starttls); + rgEncryption.check(provider.smtp_starttls ? R.id.radio_starttls : R.id.radio_ssl); } @Override @@ -377,10 +378,10 @@ public class FragmentIdentity extends FragmentBase { } }); - cbStartTls.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + rgEncryption.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override - public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { - etPort.setHint(checked ? "587" : "465"); + public void onCheckedChanged(RadioGroup group, int id) { + etPort.setHint(id == R.id.radio_starttls ? "587" : "465"); } }); @@ -446,7 +447,7 @@ public class FragmentIdentity extends FragmentBase { protected void onExecuted(Bundle args, EmailProvider provider) { etHost.setText(provider.smtp_host); etPort.setText(Integer.toString(provider.smtp_port)); - cbStartTls.setChecked(provider.smtp_starttls); + rgEncryption.check(provider.smtp_starttls ? R.id.radio_starttls : R.id.radio_ssl); } @Override @@ -484,7 +485,7 @@ public class FragmentIdentity extends FragmentBase { args.putLong("account", account == null ? -1 : account.id); args.putInt("auth_type", auth_type); args.putString("host", etHost.getText().toString()); - args.putBoolean("starttls", cbStartTls.isChecked()); + args.putBoolean("starttls", rgEncryption.getCheckedRadioButtonId() == R.id.radio_starttls); args.putBoolean("insecure", cbInsecure.isChecked()); args.putString("port", etPort.getText().toString()); args.putString("user", etUser.getText().toString()); @@ -754,7 +755,7 @@ public class FragmentIdentity extends FragmentBase { TextUtils.isEmpty(identity.signature) ? null : HtmlHelper.fromHtml(identity.signature)); etHost.setText(identity == null ? null : identity.host); - cbStartTls.setChecked(identity == null ? false : identity.starttls); + rgEncryption.check(identity != null && identity.starttls ? R.id.radio_starttls : R.id.radio_ssl); cbInsecure.setChecked(identity == null ? false : identity.insecure); etPort.setText(identity == null ? null : Long.toString(identity.port)); etUser.setTag(identity == null || auth_type == Helper.AUTH_TYPE_PASSWORD ? null : identity.user); diff --git a/app/src/main/res/layout/fragment_account.xml b/app/src/main/res/layout/fragment_account.xml index 7c4a0ec518..8453c402ab 100644 --- a/app/src/main/res/layout/fragment_account.xml +++ b/app/src/main/res/layout/fragment_account.xml @@ -121,14 +121,30 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tvHost" /> - + + + app:layout_constraintTop_toBottomOf="@id/etHost"> + + + + + + app:layout_constraintTop_toBottomOf="@id/rgEncryption" /> @@ -697,7 +713,7 @@ android:layout_height="0dp" app:constraint_referenced_ids=" tvDomain,tvDomainHint,etDomain,btnAutoConfig, - tvImap,tvPopSupport,tvHost,etHost,cbStartTls,cbInsecure,tvPort,etPort" /> + tvImap,tvPopSupport,tvHost,etHost,rgEncryption,cbInsecure,tvPort,etPort" /> - + - + app:layout_constraintTop_toBottomOf="@id/etHost"> + + + + + + app:layout_constraintTop_toBottomOf="@id/rgEncryption" /> @@ -594,7 +608,7 @@ app:constraint_referenced_ids=" tvProvider,spProvider, tvDomain,tvDomainHint,etDomain,btnAutoConfig, - tvSmtp,tvHost,etHost,cbStartTls,cbInsecure,tvPort,etPort, + tvSmtp,tvHost,etHost,rgEncryption,cbInsecure,tvPort,etPort, tvUser,etUser,tvPassword,tilPassword, tvRealm,etRealm, cbUseIp,tvUseIpHint, diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 538b866d85..dddb3189fc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -234,6 +234,7 @@ Provider Custom Host name + SSL STARTTLS Allow insecure connections Port number diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 412f0dccc2..a5bf5d240b 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -27,6 +27,7 @@ @style/buttonStyle @style/buttonStyleSmall @style/buttonStyleToggle + @style/radioButtonStyle + +