improve text highlighting, if it contains numbers

This commit is contained in:
tibbi 2019-01-05 21:42:23 +01:00
parent f3b43e0398
commit bcec8ed25b
3 changed files with 23 additions and 4 deletions

View file

@ -7,7 +7,7 @@ buildscript {
propMinSdkVersion = 21 propMinSdkVersion = 21
propTargetSdkVersion = propCompileSdkVersion propTargetSdkVersion = propCompileSdkVersion
propVersionCode = 1 propVersionCode = 1
propVersionName = '5.6.3' propVersionName = '5.6.4'
kotlin_version = '1.3.11' kotlin_version = '1.3.11'
} }

View file

@ -2,8 +2,6 @@ package com.simplemobiletools.commons.extensions
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.Activity import android.app.Activity
import android.app.AlertDialog
import android.app.ProgressDialog.show
import android.content.* import android.content.*
import android.content.pm.ApplicationInfo import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager import android.content.pm.PackageManager
@ -14,6 +12,7 @@ import android.os.Looper
import android.os.TransactionTooLargeException import android.os.TransactionTooLargeException
import android.provider.DocumentsContract import android.provider.DocumentsContract
import android.provider.MediaStore import android.provider.MediaStore
import android.text.Html
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.Window import android.view.Window
@ -21,6 +20,9 @@ import android.view.WindowManager
import android.view.inputmethod.InputMethodManager import android.view.inputmethod.InputMethodManager
import android.widget.EditText import android.widget.EditText
import android.widget.TextView import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.documentfile.provider.DocumentFile
import com.simplemobiletools.commons.R import com.simplemobiletools.commons.R
import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.activities.BaseSimpleActivity
import com.simplemobiletools.commons.dialogs.* import com.simplemobiletools.commons.dialogs.*

View file

@ -10,11 +10,13 @@ import android.media.MediaMetadataRetriever
import android.os.Build import android.os.Build
import android.text.Spannable import android.text.Spannable
import android.text.SpannableString import android.text.SpannableString
import android.text.TextUtils
import android.text.style.ForegroundColorSpan import android.text.style.ForegroundColorSpan
import com.simplemobiletools.commons.helpers.* import com.simplemobiletools.commons.helpers.*
import java.text.Normalizer import java.text.Normalizer
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*
import java.util.regex.Pattern
fun String.getFilenameFromPath() = substring(lastIndexOf("/") + 1) fun String.getFilenameFromPath() = substring(lastIndexOf("/") + 1)
@ -240,7 +242,7 @@ fun String.substringTo(cnt: Int): String {
} }
} }
fun String.highlightTextPart(textToHighlight: String, color: Int, highlightAll: Boolean = false): SpannableString { fun String.highlightTextPart(textToHighlight: String, color: Int, highlightAll: Boolean = false, ignoreCharsBetweenDigits: Boolean = false): SpannableString {
val spannableString = SpannableString(this) val spannableString = SpannableString(this)
if (textToHighlight.isEmpty()) { if (textToHighlight.isEmpty()) {
return spannableString return spannableString
@ -259,6 +261,21 @@ fun String.highlightTextPart(textToHighlight: String, color: Int, highlightAll:
} }
} }
// handle cases when we search for 643, but in reality the string contains it like 6-43
if (ignoreCharsBetweenDigits && indexes.isEmpty()) {
val regex = TextUtils.join("(\\D*)", textToHighlight.toCharArray().toTypedArray())
val pattern = Pattern.compile(regex)
val result = pattern.matcher(normalizeString())
if (result.find()) {
try {
spannableString.setSpan(ForegroundColorSpan(color), result.start(), result.end(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE)
} catch (ignored: Exception) {
}
}
return spannableString
}
indexes.forEach { indexes.forEach {
val endIndex = Math.min(it + textToHighlight.length, length) val endIndex = Math.min(it + textToHighlight.length, length)
try { try {