diff --git a/app/src/main/java/eu/faircode/email/EntityIdentity.java b/app/src/main/java/eu/faircode/email/EntityIdentity.java index 8351d7e33f..b439714081 100644 --- a/app/src/main/java/eu/faircode/email/EntityIdentity.java +++ b/app/src/main/java/eu/faircode/email/EntityIdentity.java @@ -47,9 +47,9 @@ public class EntityIdentity { public Long id; @NonNull public String name; - public String display; @NonNull public String email; + public String display; public String replyto; public String bcc; @NonNull diff --git a/app/src/main/java/eu/faircode/email/FragmentAccount.java b/app/src/main/java/eu/faircode/email/FragmentAccount.java index ec03238912..aada8ec540 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccount.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccount.java @@ -451,13 +451,13 @@ public class FragmentAccount extends FragmentEx { int auth_type = args.getInt("auth_type"); if (TextUtils.isEmpty(host)) - throw new Throwable(getContext().getString(R.string.title_no_host)); + throw new Throwable(context.getString(R.string.title_no_host)); if (TextUtils.isEmpty(port)) port = (starttls ? "143" : "993"); if (TextUtils.isEmpty(user)) - throw new Throwable(getContext().getString(R.string.title_no_user)); + throw new Throwable(context.getString(R.string.title_no_user)); if (TextUtils.isEmpty(password) && !insecure) - throw new Throwable(getContext().getString(R.string.title_no_password)); + throw new Throwable(context.getString(R.string.title_no_password)); CheckResult result = new CheckResult(); result.folders = new ArrayList<>(); @@ -647,17 +647,17 @@ public class FragmentAccount extends FragmentEx { EntityFolder junk = (EntityFolder) args.getSerializable("junk"); if (TextUtils.isEmpty(host)) - throw new Throwable(getContext().getString(R.string.title_no_host)); + throw new Throwable(context.getString(R.string.title_no_host)); if (TextUtils.isEmpty(port)) port = (starttls ? "143" : "993"); if (TextUtils.isEmpty(user)) - throw new Throwable(getContext().getString(R.string.title_no_user)); + throw new Throwable(context.getString(R.string.title_no_user)); if (synchronize && TextUtils.isEmpty(password) && !insecure) - throw new Throwable(getContext().getString(R.string.title_no_password)); + throw new Throwable(context.getString(R.string.title_no_password)); if (TextUtils.isEmpty(interval)) interval = "19"; if (synchronize && drafts == null) - throw new Throwable(getContext().getString(R.string.title_no_drafts)); + throw new Throwable(context.getString(R.string.title_no_drafts)); if (TextUtils.isEmpty(prefix)) prefix = null; @@ -816,10 +816,10 @@ public class FragmentAccount extends FragmentEx { } if (reload) - ServiceSynchronize.reload(getContext(), "save account"); + ServiceSynchronize.reload(context, "save account"); if (!synchronize) { - NotificationManager nm = (NotificationManager) getContext().getSystemService(Context.NOTIFICATION_SERVICE); + NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); nm.cancel("receive", account.id.intValue()); } @@ -1070,7 +1070,7 @@ public class FragmentAccount extends FragmentEx { DB db = DB.getInstance(context); db.account().setAccountTbd(id); - ServiceSynchronize.reload(getContext(), "delete account"); + ServiceSynchronize.reload(context, "delete account"); return null; } diff --git a/app/src/main/java/eu/faircode/email/FragmentFolder.java b/app/src/main/java/eu/faircode/email/FragmentFolder.java index ed7692ed61..c3994fe2b5 100644 --- a/app/src/main/java/eu/faircode/email/FragmentFolder.java +++ b/app/src/main/java/eu/faircode/email/FragmentFolder.java @@ -171,7 +171,7 @@ public class FragmentFolder extends FragmentEx { keep_days = sync_days; boolean reload; - DB db = DB.getInstance(getContext()); + DB db = DB.getInstance(context); try { db.beginTransaction(); @@ -233,7 +233,7 @@ public class FragmentFolder extends FragmentEx { } if (reload) - ServiceSynchronize.reload(getContext(), "save folder"); + ServiceSynchronize.reload(context, "save folder"); return null; } @@ -308,7 +308,7 @@ public class FragmentFolder extends FragmentEx { protected Void onLoad(Context context, Bundle args) { long id = args.getLong("id"); - DB db = DB.getInstance(getContext()); + DB db = DB.getInstance(context); int count = db.operation().getOperationCount(id, null); if (count > 0) throw new IllegalArgumentException( @@ -316,7 +316,7 @@ public class FragmentFolder extends FragmentEx { R.plurals.title_notification_operations, count, count)); db.folder().setFolderTbd(id); - ServiceSynchronize.reload(getContext(), "delete folder"); + ServiceSynchronize.reload(context, "delete folder"); return null; } diff --git a/app/src/main/java/eu/faircode/email/FragmentIdentity.java b/app/src/main/java/eu/faircode/email/FragmentIdentity.java index 2f05dad018..2c3506611a 100644 --- a/app/src/main/java/eu/faircode/email/FragmentIdentity.java +++ b/app/src/main/java/eu/faircode/email/FragmentIdentity.java @@ -29,6 +29,7 @@ import android.os.Handler; import android.preference.PreferenceManager; import android.text.Html; import android.text.TextUtils; +import android.util.Patterns; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -46,7 +47,6 @@ import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.ScrollView; import android.widget.Spinner; -import android.widget.TextView; import com.android.colorpicker.ColorPickerDialog; import com.android.colorpicker.ColorPickerSwatch; @@ -74,11 +74,10 @@ import androidx.fragment.app.FragmentTransaction; public class FragmentIdentity extends FragmentEx { private ViewGroup view; private EditText etName; + private EditText etEmail; private EditText etDisplay; private Spinner spAccount; private Button btnAdvanced; - private TextView tvEmail; - private EditText etEmail; private EditText etReplyTo; private EditText etBcc; private CheckBox cbDeliveryReceipt; @@ -134,12 +133,11 @@ public class FragmentIdentity extends FragmentEx { // Get controls etName = view.findViewById(R.id.etName); + etEmail = view.findViewById(R.id.etEmail); spAccount = view.findViewById(R.id.spAccount); btnAdvanced = view.findViewById(R.id.btnAdvanced); etDisplay = view.findViewById(R.id.etDisplay); - tvEmail = view.findViewById(R.id.tvEmail); - etEmail = view.findViewById(R.id.etEmail); etReplyTo = view.findViewById(R.id.etReplyTo); etBcc = view.findViewById(R.id.etBcc); cbDeliveryReceipt = view.findViewById(R.id.cbDeliveryReceipt); @@ -383,8 +381,8 @@ public class FragmentIdentity extends FragmentEx { Bundle args = new Bundle(); args.putLong("id", id); args.putString("name", etName.getText().toString()); - args.putString("display", etDisplay.getText().toString()); args.putString("email", etEmail.getText().toString()); + args.putString("display", etDisplay.getText().toString()); args.putString("replyto", etReplyTo.getText().toString()); args.putString("bcc", etBcc.getText().toString()); args.putBoolean("delivery_receipt", cbDeliveryReceipt.isChecked()); @@ -429,17 +427,19 @@ public class FragmentIdentity extends FragmentEx { EntityFolder sent = (EntityFolder) args.getSerializable("sent"); if (TextUtils.isEmpty(name)) - throw new IllegalArgumentException(getContext().getString(R.string.title_no_name)); + throw new IllegalArgumentException(context.getString(R.string.title_no_name)); if (TextUtils.isEmpty(email)) - throw new IllegalArgumentException(getContext().getString(R.string.title_no_email)); + throw new IllegalArgumentException(context.getString(R.string.title_no_email)); + if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) + throw new IllegalArgumentException(context.getString(R.string.title_email_invalid)); if (TextUtils.isEmpty(host)) - throw new IllegalArgumentException(getContext().getString(R.string.title_no_host)); + throw new IllegalArgumentException(context.getString(R.string.title_no_host)); if (TextUtils.isEmpty(port)) port = (starttls ? "587" : "465"); if (TextUtils.isEmpty(user)) - throw new IllegalArgumentException(getContext().getString(R.string.title_no_user)); + throw new IllegalArgumentException(context.getString(R.string.title_no_user)); if (synchronize && TextUtils.isEmpty(password) && !insecure) - throw new IllegalArgumentException(getContext().getString(R.string.title_no_password)); + throw new IllegalArgumentException(context.getString(R.string.title_no_password)); email = email.toLowerCase(); @@ -531,7 +531,7 @@ public class FragmentIdentity extends FragmentEx { } if (reload) - ServiceSynchronize.reload(getContext(), "save identity"); + ServiceSynchronize.reload(context, "save identity"); return null; } @@ -601,8 +601,8 @@ public class FragmentIdentity extends FragmentEx { protected void onLoaded(Bundle args, final EntityIdentity identity) { if (savedInstanceState == null) { etName.setText(identity == null ? null : identity.name); - etDisplay.setText(identity == null ? null : identity.display); etEmail.setText(identity == null ? null : identity.email); + etDisplay.setText(identity == null ? null : identity.display); etReplyTo.setText(identity == null ? null : identity.replyto); etBcc.setText(identity == null ? null : identity.bcc); cbDeliveryReceipt.setChecked(identity == null ? false : identity.delivery_receipt); @@ -787,7 +787,7 @@ public class FragmentIdentity extends FragmentEx { DB db = DB.getInstance(context); db.identity().setIdentityTbd(id); - ServiceSynchronize.reload(getContext(), "delete identity"); + ServiceSynchronize.reload(context, "delete identity"); return null; } diff --git a/app/src/main/res/layout/fragment_identity.xml b/app/src/main/res/layout/fragment_identity.xml index 5a4f2c00de..3f977d5012 100644 --- a/app/src/main/res/layout/fragment_identity.xml +++ b/app/src/main/res/layout/fragment_identity.xml @@ -33,6 +33,26 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tvName" /> + + + + + app:layout_constraintTop_toBottomOf="@id/etEmail" /> - - - - + app:layout_constraintTop_toBottomOf="@id/etDisplay" /> + app:constraint_referenced_ids="tvDisplay,etDisplay,tvReplyTo,etReplyTo,tvBcc,etBcc,cbDeliveryReceipt,cbReadReceipt,tvReceipt,tvProvider,spProvider,tvDomain,etDomain,btnAutoConfig,tvSmtp,tvHost,etHost,cbStartTls,tvPort,etPort,tvUser,etUser,tvPassword,tilPassword,btnColor,vwColor,ibColorDefault,tvSignature,etSignature,ibPro,cbSynchronize,cbPrimary,tvSent,spSent,tvSentHint" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b1e89f90ca..2fc35564f5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -187,6 +187,7 @@ Check Name missing Email address missing + Email address invalid Account missing Host name missing User name missing