diff options
author | Christian Schneppe <christian@pix-art.de> | 2018-05-03 21:38:02 +0200 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2018-05-03 21:38:02 +0200 |
commit | cac0d886bdaee1fbbd57b03192c4f57d5889e40b (patch) | |
tree | 2711e41f8bc0e0f7ebcea363874111c2d88b0e1b /src | |
parent | 70e50a27921e2250920c2143c13ccbb0b425377a (diff) |
only highlight alphanumeric chars
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java | 4 | ||||
-rw-r--r-- | src/main/java/de/pixart/messenger/utils/StylingHelper.java | 20 |
2 files changed, 22 insertions, 2 deletions
diff --git a/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java b/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java index d658b49bf..148d96bb3 100644 --- a/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java +++ b/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java @@ -1161,8 +1161,8 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie } } - public void setHighlightedTerm(List<String> term) { - this.highlightedTerm = term; + public void setHighlightedTerm(List<String> terms) { + this.highlightedTerm = terms == null ? null : StylingHelper.filterHighlightedWords(terms); } public interface OnQuoteListener { diff --git a/src/main/java/de/pixart/messenger/utils/StylingHelper.java b/src/main/java/de/pixart/messenger/utils/StylingHelper.java index f429a2573..9db7b2b47 100644 --- a/src/main/java/de/pixart/messenger/utils/StylingHelper.java +++ b/src/main/java/de/pixart/messenger/utils/StylingHelper.java @@ -47,6 +47,7 @@ import android.text.style.TypefaceSpan; import android.widget.EditText; import android.widget.TextView; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -99,6 +100,25 @@ public class StylingHelper { } } + public static List<String> filterHighlightedWords(List<String> terms) { + List<String> words = new ArrayList<>(); + for (String term : terms) { + if (!FtsUtils.isKeyword(term)) { + StringBuilder builder = new StringBuilder(); + for (int codepoint, i = 0; i < term.length(); i += Character.charCount(codepoint)) { + codepoint = term.codePointAt(i); + if (Character.isLetterOrDigit(codepoint)) { + builder.append(Character.toChars(codepoint)); + } + } + if (builder.length() > 0) { + words.add(builder.toString()); + } + } + } + return words; + } + private static void highlight(final Context context, final Editable editable, String needle, boolean dark) { final int length = needle.length(); String string = editable.toString(); |