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