diff options
author | Daniel Gultsch <daniel@gultsch.de> | 2016-05-28 17:01:05 +0200 |
---|---|---|
committer | Daniel Gultsch <daniel@gultsch.de> | 2016-05-28 17:01:05 +0200 |
commit | fde27f447f008c79b797214d6351dee770b39f96 (patch) | |
tree | b775ccb7fe0f83f87f3bc8bc043283149c303444 /src/main/java/eu/siacs | |
parent | b3f50d1ad01b7d5a5f9d1d17623bc64404faf626 (diff) |
count xmpp uris when disableing text selection
Diffstat (limited to 'src/main/java/eu/siacs')
-rw-r--r-- | src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java index c08b41f0..74bfb491 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -35,6 +35,7 @@ import java.lang.ref.WeakReference; import java.net.URL; import java.util.List; import java.util.concurrent.RejectedExecutionException; +import java.util.regex.MatchResult; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -352,14 +353,26 @@ public class MessageAdapter extends ArrayAdapter<Message> { viewHolder.messageBody.setText(span); } int urlCount = 0; - Matcher matcher = Patterns.WEB_URL.matcher(body); + final Matcher matcher = Patterns.WEB_URL.matcher(body); + int beginWebURL = Integer.MAX_VALUE; + int endWebURL = 0; while (matcher.find()) { + MatchResult result = matcher.toMatchResult(); + beginWebURL = result.start(); + endWebURL = result.end(); urlCount++; } - Matcher geoMatcher = GeoHelper.GEO_URI.matcher(body); - while (matcher.find()) { + final Matcher geoMatcher = GeoHelper.GEO_URI.matcher(body); + while (geoMatcher.find()) { urlCount++; } + final Matcher xmppMatcher = XMPP_PATTERN.matcher(body); + while (xmppMatcher.find()) { + MatchResult result = xmppMatcher.toMatchResult(); + if (beginWebURL < result.start() || endWebURL > result.end()) { + urlCount++; + } + } viewHolder.messageBody.setTextIsSelectable(urlCount <= 1); viewHolder.messageBody.setAutoLinkMask(0); Linkify.addLinks(viewHolder.messageBody, Linkify.WEB_URLS); |