Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2020-12-19 18:29:47 +0300
committerNiedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com>2020-12-21 13:49:02 +0300
commit26356d7c2433084b8678e5ce04f5825e218b886d (patch)
treed4c9f7e76c6b03ed5c20119c33ba1d194214647b
parentcf2b67de73f0f7a5f28f93da6427897c969ce9a0 (diff)
Enhance search highlighting
Signed-off-by: Stefan Niedermann <info@niedermann.it>
-rw-r--r--markdown/src/main/java/it/niedermann/android/markdown/markwon/MarkwonMarkdownUtil.java30
-rw-r--r--markdown/src/main/java/it/niedermann/android/markdown/markwon/plugins/SearchHighlightPlugin.java5
2 files changed, 16 insertions, 19 deletions
diff --git a/markdown/src/main/java/it/niedermann/android/markdown/markwon/MarkwonMarkdownUtil.java b/markdown/src/main/java/it/niedermann/android/markdown/markwon/MarkwonMarkdownUtil.java
index 86629bb0e..2e4b2250a 100644
--- a/markdown/src/main/java/it/niedermann/android/markdown/markwon/MarkwonMarkdownUtil.java
+++ b/markdown/src/main/java/it/niedermann/android/markdown/markwon/MarkwonMarkdownUtil.java
@@ -257,28 +257,26 @@ public class MarkwonMarkdownUtil {
}
public static void searchAndColor(@NonNull Editable editable, @Nullable CharSequence searchText, @NonNull Context context, @Nullable Integer current, @ColorInt int mainColor, @ColorInt int textColor) {
- resetSearchSpans(editable);
- if (TextUtils.isEmpty(searchText)) {
- return;
- }
-
- //noinspection ConstantConditions
- final Matcher m = Pattern.compile(searchText.toString(), Pattern.CASE_INSENSITIVE | Pattern.LITERAL)
- .matcher(editable);
+ removeSpans(editable, SearchSpan.class);
+ if (searchText != null) {
+ final Matcher m = Pattern
+ .compile(searchText.toString(), Pattern.CASE_INSENSITIVE | Pattern.LITERAL)
+ .matcher(editable);
- int i = 1;
- while (m.find()) {
- int start = m.start();
- int end = m.end();
- editable.setSpan(new SearchSpan(context, mainColor, textColor, (current != null && i == current)), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- i++;
+ int i = 1;
+ while (m.find()) {
+ int start = m.start();
+ int end = m.end();
+ editable.setSpan(new SearchSpan(context, mainColor, textColor, (current != null && i == current)), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+ i++;
+ }
}
}
- private static void resetSearchSpans(@NonNull Editable editable) {
+ private static void removeSpans(@NonNull Editable editable, @SuppressWarnings("SameParameterValue") @NonNull Class<?> clazz) {
final Object[] spansToRemove = editable.getSpans(0, editable.length(), Object.class);
for (Object span : spansToRemove) {
- if (span.getClass() == SearchSpan.class)
+ if (span.getClass() == clazz)
editable.removeSpan(span);
}
}
diff --git a/markdown/src/main/java/it/niedermann/android/markdown/markwon/plugins/SearchHighlightPlugin.java b/markdown/src/main/java/it/niedermann/android/markdown/markwon/plugins/SearchHighlightPlugin.java
index 93ca39ff2..cc9c5f27e 100644
--- a/markdown/src/main/java/it/niedermann/android/markdown/markwon/plugins/SearchHighlightPlugin.java
+++ b/markdown/src/main/java/it/niedermann/android/markdown/markwon/plugins/SearchHighlightPlugin.java
@@ -10,8 +10,7 @@ import androidx.annotation.Nullable;
import io.noties.markwon.AbstractMarkwonPlugin;
import io.noties.markwon.MarkwonPlugin;
-
-import static it.niedermann.android.markdown.markwon.MarkwonMarkdownUtil.searchAndColor;
+import it.niedermann.android.markdown.markwon.MarkwonMarkdownUtil;
public class SearchHighlightPlugin extends AbstractMarkwonPlugin {
@@ -34,7 +33,7 @@ public class SearchHighlightPlugin extends AbstractMarkwonPlugin {
public void afterSetText(@NonNull TextView textView) {
super.afterSetText(textView);
final Editable coloredContent = new SpannableStringBuilder(textView.getText());
- searchAndColor(coloredContent, searchText, textView.getContext(), current, Color.BLUE, Color.YELLOW);
+ MarkwonMarkdownUtil.searchAndColor(coloredContent, searchText, textView.getContext(), current, Color.BLUE, Color.YELLOW);
textView.setText(coloredContent, TextView.BufferType.SPANNABLE);
}
}