From 66835b12c35dad7a8ddbe816556635635b836e95 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Wed, 2 May 2018 21:50:05 +0200 Subject: search term parsing + highlighting --- src/main/java/de/pixart/messenger/ui/SearchActivity.java | 16 +++++++--------- .../de/pixart/messenger/ui/adapter/MessageAdapter.java | 10 +++++----- .../ui/interfaces/OnSearchResultsAvailable.java | 2 +- 3 files changed, 13 insertions(+), 15 deletions(-) (limited to 'src/main/java/de/pixart/messenger/ui') diff --git a/src/main/java/de/pixart/messenger/ui/SearchActivity.java b/src/main/java/de/pixart/messenger/ui/SearchActivity.java index 298bca6c0..7ce4ddc98 100644 --- a/src/main/java/de/pixart/messenger/ui/SearchActivity.java +++ b/src/main/java/de/pixart/messenger/ui/SearchActivity.java @@ -61,6 +61,7 @@ import de.pixart.messenger.ui.util.DateSeparator; import de.pixart.messenger.ui.util.Drawable; import de.pixart.messenger.ui.util.ListViewUtils; import de.pixart.messenger.ui.util.ShareUtil; +import de.pixart.messenger.utils.FtsUtils; import de.pixart.messenger.utils.MessageUtils; import static de.pixart.messenger.ui.util.SoftKeyboardUtils.hideSoftKeyboard; @@ -72,7 +73,7 @@ public class SearchActivity extends XmppActivity implements TextWatcher, OnSearc private MessageAdapter messageListAdapter; private final List messages = new ArrayList<>(); private WeakReference selectedMessageReference = new WeakReference<>(null); - private final ChangeWatcher currentSearch = new ChangeWatcher<>(); + private final ChangeWatcher> currentSearch = new ChangeWatcher<>(); @Override public void onCreate(final Bundle savedInstanceState) { @@ -150,13 +151,10 @@ public class SearchActivity extends XmppActivity implements TextWatcher, OnSearc } private void quote(Message message) { - String text = MessageUtils.prepareQuote(message); - final Conversational conversational = message.getConversation(); - switchToConversationAndQuote(wrap(message.getConversation()), text); + switchToConversationAndQuote(wrap(message.getConversation()), MessageUtils.prepareQuote(message)); } private Conversation wrap(Conversational conversational) { - final Conversation conversation; if (conversational instanceof Conversation) { return (Conversation) conversational; } else { @@ -202,12 +200,12 @@ public class SearchActivity extends XmppActivity implements TextWatcher, OnSearc @Override public void afterTextChanged(Editable s) { - final String term = s.toString().trim(); + final List term = FtsUtils.parse(s.toString().trim()); if (!currentSearch.watch(term)) { return; } - if (term.length() > 0) { - xmppConnectionService.search(s.toString().trim(), this); + if (term.size() > 0) { + xmppConnectionService.search(term, this); } else { MessageSearchTask.cancelRunningTasks(); this.messages.clear(); @@ -218,7 +216,7 @@ public class SearchActivity extends XmppActivity implements TextWatcher, OnSearc } @Override - public void onSearchResultsAvailable(String term, List messages) { + public void onSearchResultsAvailable(List term, List messages) { runOnUiThread(() -> { this.messages.clear(); messageListAdapter.setHighlightedTerm(term); 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 37eb00b76..d658b49bf 100644 --- a/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java +++ b/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java @@ -109,7 +109,7 @@ public class MessageAdapter extends ArrayAdapter implements CopyTextVie + "|(?:\\%[a-fA-F0-9]{2}))+"); boolean isResendable = false; - private String highlightedText = null; + private List highlightedTerm = null; private static final Linkify.TransformFilter WEBURL_TRANSFORM_FILTER = (matcher, url) -> { if (url == null) { @@ -597,8 +597,8 @@ public class MessageAdapter extends ArrayAdapter implements CopyTextVie } } StylingHelper.format(body, viewHolder.messageBody.getCurrentTextColor()); - if (highlightedText != null) { - StylingHelper.highlight(activity, body, highlightedText, StylingHelper.isDarkText(viewHolder.messageBody)); + if (highlightedTerm != null) { + StylingHelper.highlight(activity, body, highlightedTerm, StylingHelper.isDarkText(viewHolder.messageBody)); } Linkify.addLinks(body, XMPP_PATTERN, "xmpp", XMPPURI_MATCH_FILTER, null); Linkify.addLinks(body, Patterns.AUTOLINK_WEB_URL, "http", WEBURL_MATCH_FILTER, WEBURL_TRANSFORM_FILTER); @@ -1161,8 +1161,8 @@ public class MessageAdapter extends ArrayAdapter implements CopyTextVie } } - public void setHighlightedTerm(String term) { - this.highlightedText = term; + public void setHighlightedTerm(List term) { + this.highlightedTerm = term; } public interface OnQuoteListener { diff --git a/src/main/java/de/pixart/messenger/ui/interfaces/OnSearchResultsAvailable.java b/src/main/java/de/pixart/messenger/ui/interfaces/OnSearchResultsAvailable.java index 57f2a40cc..b0041fd66 100644 --- a/src/main/java/de/pixart/messenger/ui/interfaces/OnSearchResultsAvailable.java +++ b/src/main/java/de/pixart/messenger/ui/interfaces/OnSearchResultsAvailable.java @@ -34,6 +34,6 @@ import de.pixart.messenger.entities.Message; public interface OnSearchResultsAvailable { - void onSearchResultsAvailable(String term, List messages); + void onSearchResultsAvailable(List term, List messages); } \ No newline at end of file -- cgit v1.2.3