From 5fc98ddaa372338df7758d8ed81763d45e0924e1 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 10 May 2020 22:38:28 +0200 Subject: [PATCH] adding a letters fastscroller at the contact selector dialog --- .../dialer/dialogs/SelectContactDialog.kt | 33 +++++++++++++++---- .../main/res/layout/dialog_select_contact.xml | 33 +++++++++++++++++++ .../main/res/layout/layout_select_contact.xml | 16 --------- 3 files changed, 60 insertions(+), 22 deletions(-) create mode 100644 app/src/main/res/layout/dialog_select_contact.xml delete mode 100644 app/src/main/res/layout/layout_select_contact.xml diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/SelectContactDialog.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/SelectContactDialog.kt index 2a5bb1bc..dff28686 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/SelectContactDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/SelectContactDialog.kt @@ -1,21 +1,42 @@ package com.simplemobiletools.dialer.dialogs import androidx.appcompat.app.AlertDialog +import com.reddit.indicatorfastscroll.FastScrollItemIndicator +import com.simplemobiletools.commons.extensions.getColorStateList +import com.simplemobiletools.commons.extensions.getContrastColor import com.simplemobiletools.commons.extensions.setupDialogStuff import com.simplemobiletools.commons.models.SimpleContact import com.simplemobiletools.dialer.R import com.simplemobiletools.dialer.activities.SimpleActivity import com.simplemobiletools.dialer.adapters.ContactsAdapter -import kotlinx.android.synthetic.main.layout_select_contact.view.* +import com.simplemobiletools.dialer.extensions.config +import kotlinx.android.synthetic.main.dialog_select_contact.view.* +import java.util.* -class SelectContactDialog(val activity: SimpleActivity, allContacts: ArrayList, val callback: (selectedContact: SimpleContact) -> Unit) { +class SelectContactDialog(val activity: SimpleActivity, contacts: ArrayList, val callback: (selectedContact: SimpleContact) -> Unit) { private var dialog: AlertDialog? = null - private var view = activity.layoutInflater.inflate(R.layout.layout_select_contact, null) + private var view = activity.layoutInflater.inflate(R.layout.dialog_select_contact, null) init { - view.select_contact_list.adapter = ContactsAdapter(activity, allContacts, view.select_contact_list) { - callback(it as SimpleContact) - dialog?.dismiss() + view.apply { + letter_fastscroller.textColor = context.config.textColor.getColorStateList() + letter_fastscroller_thumb.setupWithFastScroller(letter_fastscroller) + letter_fastscroller_thumb.textColor = context.config.primaryColor.getContrastColor() + + letter_fastscroller.setupWithRecyclerView(select_contact_list, { position -> + try { + val name = contacts[position].name + val character = if (name.isNotEmpty()) name.substring(0, 1) else "" + FastScrollItemIndicator.Text(character.toUpperCase(Locale.getDefault())) + } catch (e: Exception) { + FastScrollItemIndicator.Text("") + } + }) + + select_contact_list.adapter = ContactsAdapter(activity, contacts, select_contact_list) { + callback(it as SimpleContact) + dialog?.dismiss() + } } dialog = AlertDialog.Builder(activity) diff --git a/app/src/main/res/layout/dialog_select_contact.xml b/app/src/main/res/layout/dialog_select_contact.xml new file mode 100644 index 00000000..cd895a13 --- /dev/null +++ b/app/src/main/res/layout/dialog_select_contact.xml @@ -0,0 +1,33 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/layout_select_contact.xml b/app/src/main/res/layout/layout_select_contact.xml deleted file mode 100644 index 55b855cf..00000000 --- a/app/src/main/res/layout/layout_select_contact.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -