mirror of
https://github.com/SimpleMobileTools/Simple-Contacts.git
synced 2025-06-05 21:59:27 +02:00
highlight the part of Group title that is searched
This commit is contained in:
@ -7,6 +7,8 @@ import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
|
|||||||
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
||||||
import com.simplemobiletools.commons.extensions.applyColorFilter
|
import com.simplemobiletools.commons.extensions.applyColorFilter
|
||||||
import com.simplemobiletools.commons.extensions.beVisibleIf
|
import com.simplemobiletools.commons.extensions.beVisibleIf
|
||||||
|
import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor
|
||||||
|
import com.simplemobiletools.commons.extensions.highlightTextPart
|
||||||
import com.simplemobiletools.commons.views.FastScroller
|
import com.simplemobiletools.commons.views.FastScroller
|
||||||
import com.simplemobiletools.commons.views.MyRecyclerView
|
import com.simplemobiletools.commons.views.MyRecyclerView
|
||||||
import com.simplemobiletools.contacts.pro.R
|
import com.simplemobiletools.contacts.pro.R
|
||||||
@ -26,7 +28,9 @@ class GroupsAdapter(activity: SimpleActivity, var groups: ArrayList<Group>, val
|
|||||||
|
|
||||||
private var smallPadding = activity.resources.getDimension(R.dimen.small_margin).toInt()
|
private var smallPadding = activity.resources.getDimension(R.dimen.small_margin).toInt()
|
||||||
private var bigPadding = activity.resources.getDimension(R.dimen.normal_margin).toInt()
|
private var bigPadding = activity.resources.getDimension(R.dimen.normal_margin).toInt()
|
||||||
|
private var textToHighlight = ""
|
||||||
|
|
||||||
|
var adjustedPrimaryColor = activity.getAdjustedPrimaryColor()
|
||||||
var showContactThumbnails = activity.config.showContactThumbnails
|
var showContactThumbnails = activity.config.showContactThumbnails
|
||||||
|
|
||||||
init {
|
init {
|
||||||
@ -75,10 +79,16 @@ class GroupsAdapter(activity: SimpleActivity, var groups: ArrayList<Group>, val
|
|||||||
|
|
||||||
private fun getItemWithKey(key: Int): Group? = groups.firstOrNull { it.id!!.toInt() == key }
|
private fun getItemWithKey(key: Int): Group? = groups.firstOrNull { it.id!!.toInt() == key }
|
||||||
|
|
||||||
fun updateItems(newItems: ArrayList<Group>) {
|
fun updateItems(newItems: ArrayList<Group>, highlightText: String = "") {
|
||||||
groups = newItems
|
if (newItems.hashCode() != groups.hashCode()) {
|
||||||
notifyDataSetChanged()
|
groups = newItems
|
||||||
finishActMode()
|
textToHighlight = highlightText
|
||||||
|
notifyDataSetChanged()
|
||||||
|
finishActMode()
|
||||||
|
} else if (textToHighlight != highlightText) {
|
||||||
|
textToHighlight = highlightText
|
||||||
|
notifyDataSetChanged()
|
||||||
|
}
|
||||||
fastScroller?.measureRecyclerView()
|
fastScroller?.measureRecyclerView()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,9 +137,16 @@ class GroupsAdapter(activity: SimpleActivity, var groups: ArrayList<Group>, val
|
|||||||
private fun setupView(view: View, group: Group) {
|
private fun setupView(view: View, group: Group) {
|
||||||
view.apply {
|
view.apply {
|
||||||
group_frame?.isSelected = selectedKeys.contains(group.id!!.toInt())
|
group_frame?.isSelected = selectedKeys.contains(group.id!!.toInt())
|
||||||
|
val titleWithCnt = "${group.title} (${group.contactsCount})"
|
||||||
|
val groupTitle = if (textToHighlight.isEmpty()) {
|
||||||
|
titleWithCnt
|
||||||
|
} else {
|
||||||
|
titleWithCnt.highlightTextPart(textToHighlight, adjustedPrimaryColor)
|
||||||
|
}
|
||||||
|
|
||||||
group_name.apply {
|
group_name.apply {
|
||||||
setTextColor(textColor)
|
setTextColor(textColor)
|
||||||
text = String.format(activity.getString(R.string.groups_placeholder), group.title, group.contactsCount.toString())
|
text = groupTitle
|
||||||
setPadding(if (showContactThumbnails) smallPadding else bigPadding, smallPadding, smallPadding, 0)
|
setPadding(if (showContactThumbnails) smallPadding else bigPadding, smallPadding, smallPadding, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,6 +79,10 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
|
|||||||
(fragment_list.adapter as? ContactsAdapter)?.apply {
|
(fragment_list.adapter as? ContactsAdapter)?.apply {
|
||||||
adjustedPrimaryColor = context.getAdjustedPrimaryColor()
|
adjustedPrimaryColor = context.getAdjustedPrimaryColor()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
(fragment_list.adapter as? GroupsAdapter)?.apply {
|
||||||
|
adjustedPrimaryColor = context.getAdjustedPrimaryColor()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun startNameWithSurnameChanged(startNameWithSurname: Boolean) {
|
fun startNameWithSurnameChanged(startNameWithSurname: Boolean) {
|
||||||
@ -268,7 +272,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
|
|||||||
}
|
}
|
||||||
|
|
||||||
fragment_placeholder.beVisibleIf(filtered.isEmpty())
|
fragment_placeholder.beVisibleIf(filtered.isEmpty())
|
||||||
(adapter as? GroupsAdapter)?.updateItems(filtered)
|
(adapter as? GroupsAdapter)?.updateItems(filtered, text)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user