From 8bc3eaa91e9bbe4b6d5ea4dcb81e1368ec324d43 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 23 Feb 2022 20:01:35 +0100 Subject: [PATCH] Replace email address --- .../email/EditTextMultiAutoComplete.java | 23 +++++++++++++++++++ .../eu/faircode/email/FragmentCompose.java | 3 --- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/EditTextMultiAutoComplete.java b/app/src/main/java/eu/faircode/email/EditTextMultiAutoComplete.java index 68dabed73a..1dffb791e5 100644 --- a/app/src/main/java/eu/faircode/email/EditTextMultiAutoComplete.java +++ b/app/src/main/java/eu/faircode/email/EditTextMultiAutoComplete.java @@ -58,6 +58,7 @@ public class EditTextMultiAutoComplete extends AppCompatMultiAutoCompleteTextVie private boolean dark; private int colorAccent; private ContextThemeWrapper ctx; + private Tokenizer tokenizer; public EditTextMultiAutoComplete(@NonNull Context context) { super(context); @@ -77,6 +78,9 @@ public class EditTextMultiAutoComplete extends AppCompatMultiAutoCompleteTextVie private void init(Context context) { Helper.setKeyboardIncognitoMode(this, context); + tokenizer = new CommaTokenizer(); + setTokenizer(tokenizer); + prefs = PreferenceManager.getDefaultSharedPreferences(context); dark = Helper.isDarkTheme(context); colorAccent = Helper.resolveColor(context, R.attr.colorAccent); @@ -182,6 +186,25 @@ public class EditTextMultiAutoComplete extends AppCompatMultiAutoCompleteTextVie return super.onTouchEvent(event); } + @Override + protected void replaceText(CharSequence text) { + clearComposingText(); + + Editable edit = getText(); + int _end = getSelectionEnd(); + int start = tokenizer.findTokenStart(edit, _end); + int end = tokenizer.findTokenEnd(edit, _end); + if (end < edit.length() && edit.charAt(end) == ',') { + end++; + while (end < edit.length() && edit.charAt(end) == ' ') + end++; + } + + edit.replace(start, end, tokenizer.terminateToken(text)); + + setSelection(edit.length()); + } + private final Runnable update = new Runnable() { @Override public void run() { diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 12b318bb06..e825b9f85f 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -1186,9 +1186,6 @@ public class FragmentCompose extends FragmentBase { etCc.setAdapter(cadapter); etBcc.setAdapter(cadapter); - etTo.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); - etCc.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); - etBcc.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); grpAddresses.setVisibility(cc_bcc ? View.VISIBLE : View.GONE); rvAttachment.setHasFixedSize(false);