Added option to use sender name when editing user name

pull/197/head
M66B 4 years ago
parent b76f863620
commit 77aa03d0ba

File diff suppressed because it is too large Load Diff

@ -65,7 +65,7 @@ import static eu.faircode.email.ServiceAuthenticator.AUTH_TYPE_PASSWORD;
// https://developer.android.com/topic/libraries/architecture/room.html // https://developer.android.com/topic/libraries/architecture/room.html
@Database( @Database(
version = 193, version = 194,
entities = { entities = {
EntityIdentity.class, EntityIdentity.class,
EntityAccount.class, EntityAccount.class,
@ -1981,6 +1981,13 @@ public abstract class DB extends RoomDatabase {
Log.i("DB migration from version " + startVersion + " to " + endVersion); Log.i("DB migration from version " + startVersion + " to " + endVersion);
db.execSQL("ALTER TABLE `message` ADD COLUMN `notes_color` INTEGER"); db.execSQL("ALTER TABLE `message` ADD COLUMN `notes_color` INTEGER");
} }
})
.addMigrations(new Migration(193, 194) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase db) {
Log.i("DB migration from version " + startVersion + " to " + endVersion);
db.execSQL("ALTER TABLE `identity` ADD COLUMN `sender_extra_name` INTEGER NOT NULL DEFAULT 0");
}
}); });
} }

@ -95,6 +95,8 @@ public class EntityIdentity {
public Boolean self = true; public Boolean self = true;
@NonNull @NonNull
public Boolean sender_extra = false; public Boolean sender_extra = false;
@NonNull
public Boolean sender_extra_name = false;
public String sender_extra_regex; public String sender_extra_regex;
public String replyto; public String replyto;
public String cc; public String cc;
@ -201,6 +203,7 @@ public class EntityIdentity {
json.put("primary", primary); json.put("primary", primary);
json.put("self", self); json.put("self", self);
json.put("sender_extra", sender_extra); json.put("sender_extra", sender_extra);
json.put("sender_extra_name", sender_extra_name);
json.put("sender_extra_regex", sender_extra_regex); json.put("sender_extra_regex", sender_extra_regex);
json.put("replyto", replyto); json.put("replyto", replyto);
@ -261,6 +264,8 @@ public class EntityIdentity {
if (json.has("sender_extra")) if (json.has("sender_extra"))
identity.sender_extra = json.getBoolean("sender_extra"); identity.sender_extra = json.getBoolean("sender_extra");
if (json.has("sender_extra_name"))
identity.sender_extra_name = json.getBoolean("sender_extra_name");
if (json.has("sender_extra_regex")) if (json.has("sender_extra_regex"))
identity.sender_extra_regex = json.getString("sender_extra_regex"); identity.sender_extra_regex = json.getString("sender_extra_regex");
@ -298,6 +303,7 @@ public class EntityIdentity {
this.primary.equals(other.primary) && this.primary.equals(other.primary) &&
this.self.equals(other.self) && this.self.equals(other.self) &&
this.sender_extra.equals(other.sender_extra) && this.sender_extra.equals(other.sender_extra) &&
this.sender_extra_name.equals(other.sender_extra_name) &&
Objects.equals(this.sender_extra_regex, other.sender_extra_regex) && Objects.equals(this.sender_extra_regex, other.sender_extra_regex) &&
Objects.equals(this.replyto, other.replyto) && Objects.equals(this.replyto, other.replyto) &&
Objects.equals(this.cc, other.cc) && Objects.equals(this.cc, other.cc) &&

@ -110,6 +110,7 @@ public class FragmentIdentity extends FragmentBase {
private CheckBox cbSelf; private CheckBox cbSelf;
private CheckBox cbSenderExtra; private CheckBox cbSenderExtra;
private CheckBox cbSenderExtraName;
private TextView etSenderExtra; private TextView etSenderExtra;
private ImageButton ibSenderExtra; private ImageButton ibSenderExtra;
private EditText etReplyTo; private EditText etReplyTo;
@ -206,6 +207,7 @@ public class FragmentIdentity extends FragmentBase {
cbSelf = view.findViewById(R.id.cbSelf); cbSelf = view.findViewById(R.id.cbSelf);
cbSenderExtra = view.findViewById(R.id.cbSenderExtra); cbSenderExtra = view.findViewById(R.id.cbSenderExtra);
cbSenderExtraName = view.findViewById(R.id.cbSenderExtraName);
etSenderExtra = view.findViewById(R.id.etSenderExtra); etSenderExtra = view.findViewById(R.id.etSenderExtra);
ibSenderExtra = view.findViewById(R.id.ibSenderExtra); ibSenderExtra = view.findViewById(R.id.ibSenderExtra);
etReplyTo = view.findViewById(R.id.etReplyTo); etReplyTo = view.findViewById(R.id.etReplyTo);
@ -370,6 +372,13 @@ public class FragmentIdentity extends FragmentBase {
} }
}); });
cbSenderExtra.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
cbSenderExtraName.setEnabled(isChecked);
}
});
ibSenderExtra.setOnClickListener(new View.OnClickListener() { ibSenderExtra.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
@ -621,6 +630,7 @@ public class FragmentIdentity extends FragmentBase {
args.putString("display", etDisplay.getText().toString()); args.putString("display", etDisplay.getText().toString());
args.putInt("color", btnColor.getColor()); args.putInt("color", btnColor.getColor());
args.putBoolean("sender_extra", cbSenderExtra.isChecked()); args.putBoolean("sender_extra", cbSenderExtra.isChecked());
args.putBoolean("sender_extra_name", cbSenderExtraName.isChecked());
args.putString("sender_extra_regex", etSenderExtra.getText().toString()); args.putString("sender_extra_regex", etSenderExtra.getText().toString());
args.putString("replyto", etReplyTo.getText().toString().trim()); args.putString("replyto", etReplyTo.getText().toString().trim());
args.putString("cc", etCc.getText().toString().trim()); args.putString("cc", etCc.getText().toString().trim());
@ -705,6 +715,7 @@ public class FragmentIdentity extends FragmentBase {
boolean self = args.getBoolean("self"); boolean self = args.getBoolean("self");
boolean sender_extra = args.getBoolean("sender_extra"); boolean sender_extra = args.getBoolean("sender_extra");
boolean sender_extra_name = args.getBoolean("sender_extra_name");
String sender_extra_regex = args.getString("sender_extra_regex"); String sender_extra_regex = args.getString("sender_extra_regex");
String replyto = args.getString("replyto"); String replyto = args.getString("replyto");
String cc = args.getString("cc"); String cc = args.getString("cc");
@ -847,6 +858,8 @@ public class FragmentIdentity extends FragmentBase {
return true; return true;
if (!Objects.equals(identity.sender_extra, sender_extra)) if (!Objects.equals(identity.sender_extra, sender_extra))
return true; return true;
if (!Objects.equals(identity.sender_extra_name, sender_extra_name))
return true;
if (!Objects.equals(identity.sender_extra_regex, sender_extra_regex)) if (!Objects.equals(identity.sender_extra_regex, sender_extra_regex))
return true; return true;
if (!Objects.equals(identity.replyto, replyto)) if (!Objects.equals(identity.replyto, replyto))
@ -947,6 +960,7 @@ public class FragmentIdentity extends FragmentBase {
identity.self = self; identity.self = self;
identity.sender_extra = sender_extra; identity.sender_extra = sender_extra;
identity.sender_extra_name = sender_extra_name;
identity.sender_extra_regex = sender_extra_regex; identity.sender_extra_regex = sender_extra_regex;
identity.replyto = replyto; identity.replyto = replyto;
identity.cc = cc; identity.cc = cc;
@ -1124,6 +1138,7 @@ public class FragmentIdentity extends FragmentBase {
cbSelf.setChecked(identity == null ? true : identity.self); cbSelf.setChecked(identity == null ? true : identity.self);
cbSenderExtra.setChecked(identity != null && identity.sender_extra); cbSenderExtra.setChecked(identity != null && identity.sender_extra);
cbSenderExtraName.setChecked(identity != null && identity.sender_extra_name);
etSenderExtra.setText(identity == null ? null : identity.sender_extra_regex); etSenderExtra.setText(identity == null ? null : identity.sender_extra_regex);
etReplyTo.setText(identity == null ? null : identity.replyto); etReplyTo.setText(identity == null ? null : identity.replyto);
etCc.setText(identity == null ? null : identity.cc); etCc.setText(identity == null ? null : identity.cc);
@ -1173,6 +1188,7 @@ public class FragmentIdentity extends FragmentBase {
} }
cbPrimary.setEnabled(cbSynchronize.isChecked()); cbPrimary.setEnabled(cbSynchronize.isChecked());
cbSenderExtraName.setEnabled(cbSenderExtra.isChecked());
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
boolean sign_default = prefs.getBoolean("sign_default", false); boolean sign_default = prefs.getBoolean("sign_default", false);

@ -226,7 +226,8 @@ public class MessageHelper {
!message.extra.equals(identity.email.split("@")[0])) { !message.extra.equals(identity.email.split("@")[0])) {
int at = email.indexOf('@'); int at = email.indexOf('@');
email = message.extra + email.substring(at); email = message.extra + email.substring(at);
name = null; if (!identity.sender_extra_name)
name = null;
Log.i("extra=" + email); Log.i("extra=" + email);
} }
imessage.setFrom(new InternetAddress(email, name, StandardCharsets.UTF_8.name())); imessage.setFrom(new InternetAddress(email, name, StandardCharsets.UTF_8.name()));

@ -590,6 +590,15 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvSelfHint" /> app:layout_constraintTop_toBottomOf="@id/tvSelfHint" />
<CheckBox
android:id="@+id/cbSenderExtraName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/title_advanced_sender_name"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cbSenderExtra" />
<eu.faircode.email.FixedTextView <eu.faircode.email.FixedTextView
android:id="@+id/tvSenderExtra" android:id="@+id/tvSenderExtra"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -598,7 +607,7 @@
android:text="@string/title_advanced_sender_regex" android:text="@string/title_advanced_sender_regex"
android:textAppearance="@style/TextAppearance.AppCompat.Small" android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cbSenderExtra" /> app:layout_constraintTop_toBottomOf="@id/cbSenderExtraName" />
<eu.faircode.email.EditTextPlain <eu.faircode.email.EditTextPlain
android:id="@+id/etSenderExtra" android:id="@+id/etSenderExtra"
@ -900,7 +909,7 @@
tvRealm,etRealm, tvRealm,etRealm,
cbUseIp,tvUseIpHint,tvEhlo,etEhlo, cbUseIp,tvUseIpHint,tvEhlo,etEhlo,
cbSynchronize,cbPrimary,cbSelf,tvSelfHint, cbSynchronize,cbPrimary,cbSelf,tvSelfHint,
cbSenderExtra,tvSenderExtra,etSenderExtra,ibSenderExtra,tvSenderExtraHint, cbSenderExtra,cbSenderExtraName,tvSenderExtra,etSenderExtra,ibSenderExtra,tvSenderExtraHint,
tvReplyTo,etReplyTo,tvCc,etCc,tvCcHint,tvBcc,etBcc,tvBccHint, tvReplyTo,etReplyTo,tvCc,etCc,tvCcHint,tvBcc,etBcc,tvBccHint,
cbSignDefault,cbEncryptDefault, cbSignDefault,cbEncryptDefault,
cbUnicode,tvUnicodeHint,tvMaxSize,etMaxSize" /> cbUnicode,tvUnicodeHint,tvMaxSize,etMaxSize" />

@ -663,6 +663,7 @@
<string name="title_identity_email">Your email address</string> <string name="title_identity_email">Your email address</string>
<string name="title_identity_color_hint">Identity colors take precedence over folder and account colors</string> <string name="title_identity_color_hint">Identity colors take precedence over folder and account colors</string>
<string name="title_advanced_sender">Allow editing sender address</string> <string name="title_advanced_sender">Allow editing sender address</string>
<string name="title_advanced_sender_name">Use name when sender address has been edited</string>
<string name="title_advanced_sender_regex">Regex to match username of incoming email addresses</string> <string name="title_advanced_sender_regex">Regex to match username of incoming email addresses</string>
<string name="title_identity_reply_to">Reply to address</string> <string name="title_identity_reply_to">Reply to address</string>
<string name="title_identity_unicode">Use Unicode transport</string> <string name="title_identity_unicode">Use Unicode transport</string>

Loading…
Cancel
Save