Added option to use sender name when editing user name

pull/197/head
M66B 3 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
@Database(
version = 193,
version = 194,
entities = {
EntityIdentity.class,
EntityAccount.class,
@ -1981,6 +1981,13 @@ public abstract class DB extends RoomDatabase {
Log.i("DB migration from version " + startVersion + " to " + endVersion);
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;
@NonNull
public Boolean sender_extra = false;
@NonNull
public Boolean sender_extra_name = false;
public String sender_extra_regex;
public String replyto;
public String cc;
@ -201,6 +203,7 @@ public class EntityIdentity {
json.put("primary", primary);
json.put("self", self);
json.put("sender_extra", sender_extra);
json.put("sender_extra_name", sender_extra_name);
json.put("sender_extra_regex", sender_extra_regex);
json.put("replyto", replyto);
@ -261,6 +264,8 @@ public class EntityIdentity {
if (json.has("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"))
identity.sender_extra_regex = json.getString("sender_extra_regex");
@ -298,6 +303,7 @@ public class EntityIdentity {
this.primary.equals(other.primary) &&
this.self.equals(other.self) &&
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.replyto, other.replyto) &&
Objects.equals(this.cc, other.cc) &&

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

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

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

@ -663,6 +663,7 @@
<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_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_identity_reply_to">Reply to address</string>
<string name="title_identity_unicode">Use Unicode transport</string>

Loading…
Cancel
Save