improve name highlighting from the dialpad
This commit is contained in:
parent
defb7f9bf0
commit
b7fb0b979c
|
@ -1,6 +1,10 @@
|
|||
package com.simplemobiletools.contacts.pro.adapters
|
||||
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.telephony.PhoneNumberUtils
|
||||
import android.text.Spannable
|
||||
import android.text.SpannableString
|
||||
import android.text.style.ForegroundColorSpan
|
||||
import android.view.Menu
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
|
@ -255,7 +259,14 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
|||
view.apply {
|
||||
contact_frame?.isSelected = selectedKeys.contains(contact.id)
|
||||
val fullName = contact.getNameToDisplay()
|
||||
contact_name.text = if (textToHighlight.isEmpty()) fullName else fullName.highlightTextPart(textToHighlight, adjustedPrimaryColor)
|
||||
contact_name.text = if (textToHighlight.isEmpty()) fullName else {
|
||||
if (fullName.contains(textToHighlight, true)) {
|
||||
fullName.highlightTextPart(textToHighlight, adjustedPrimaryColor)
|
||||
} else {
|
||||
highlightTextFromNumbers(fullName, textToHighlight)
|
||||
}
|
||||
}
|
||||
|
||||
contact_name.setTextColor(textColor)
|
||||
contact_name.setPadding(if (showContactThumbnails) smallPadding else bigPadding, smallPadding, smallPadding, 0)
|
||||
|
||||
|
@ -300,4 +311,19 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun highlightTextFromNumbers(name: String, textToHighlight: String): SpannableString {
|
||||
val spannableString = SpannableString(name)
|
||||
val digits = PhoneNumberUtils.convertKeypadLettersToDigits(name)
|
||||
if (digits.contains(textToHighlight)) {
|
||||
val startIndex = digits.indexOf(textToHighlight, 0, true)
|
||||
val endIndex = Math.min(startIndex + textToHighlight.length, name.length)
|
||||
try {
|
||||
spannableString.setSpan(ForegroundColorSpan(adjustedPrimaryColor), startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_INCLUSIVE)
|
||||
} catch (ignored: IndexOutOfBoundsException) {
|
||||
}
|
||||
}
|
||||
|
||||
return spannableString
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue