From 5e585eec719ea7469ba09e4f3fdf55df788b3234 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 20 Mar 2018 10:54:35 +0100 Subject: [PATCH] provide contacts to show at SelectContactsDialog explicitly --- .../activities/GroupContactsActivity.kt | 16 ++++++---- .../contacts/dialogs/SelectContactsDialog.kt | 29 ++++++++++--------- .../contacts/fragments/FavoritesFragment.kt | 2 +- .../contacts/fragments/MyViewPagerFragment.kt | 9 ++++-- 4 files changed, 32 insertions(+), 24 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/GroupContactsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/GroupContactsActivity.kt index 3f345a05..d3fca91a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/GroupContactsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/GroupContactsActivity.kt @@ -16,6 +16,8 @@ import com.simplemobiletools.contacts.models.Group import kotlinx.android.synthetic.main.activity_group_contacts.* class GroupContactsActivity : SimpleActivity() { + private var allContacts = ArrayList() + private var groupContacts = ArrayList() lateinit var group: Group override fun onCreate(savedInstanceState: Bundle?) { @@ -28,7 +30,7 @@ class GroupContactsActivity : SimpleActivity() { refreshContacts() group_contacts_fab.setOnClickListener { - SelectContactsDialog(this) { displayedContacts, selectedContacts -> + SelectContactsDialog(this, allContacts, groupContacts) { addedContacts, removedContacts -> refreshContacts() } } @@ -36,15 +38,17 @@ class GroupContactsActivity : SimpleActivity() { private fun refreshContacts() { ContactsHelper(this).getContacts { - val contacts = it.filter { it.groups.map { it.id }.contains(group.id) } as ArrayList - updateContacts(contacts) + allContacts = it + groupContacts = it.filter { it.groups.map { it.id }.contains(group.id) } as ArrayList + + Contact.sorting = config.sorting + groupContacts.sort() + + updateContacts(groupContacts) } } private fun updateContacts(contacts: ArrayList) { - Contact.sorting = config.sorting - contacts.sort() - ContactsAdapter(this, contacts, null, LOCATION_GROUP_CONTACTS, group_contacts_list, group_contacts_fastscroller) { when (config.onContactClick) { ON_CLICK_CALL_CONTACT -> { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/SelectContactsDialog.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/SelectContactsDialog.kt index 8d4d0a6d..7f5e259d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/SelectContactsDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/SelectContactsDialog.kt @@ -7,35 +7,36 @@ import com.simplemobiletools.contacts.R import com.simplemobiletools.contacts.activities.SimpleActivity import com.simplemobiletools.contacts.adapters.SelectContactsAdapter import com.simplemobiletools.contacts.extensions.config -import com.simplemobiletools.contacts.helpers.ContactsHelper import com.simplemobiletools.contacts.models.Contact import kotlinx.android.synthetic.main.layout_select_contact.view.* -class SelectContactsDialog(val activity: SimpleActivity, private val callback: (addedContacts: ArrayList, removedContacts: ArrayList) -> Unit) { +class SelectContactsDialog(val activity: SimpleActivity, initialContacts: ArrayList, val selectContacts: ArrayList? = null, + val callback: (addedContacts: ArrayList, removedContacts: ArrayList) -> Unit) { private var view = activity.layoutInflater.inflate(R.layout.layout_select_contact, null) private var initiallySelectedContacts = ArrayList() init { - ContactsHelper(activity).getContacts { - var allContacts = it - + var allContacts = initialContacts + if (selectContacts == null) { val contactSources = activity.config.displayContactSources if (!activity.config.showAllContacts()) { allContacts = allContacts.filter { contactSources.contains(it.source) } as ArrayList } initiallySelectedContacts = allContacts.filter { it.starred == 1 } as ArrayList + } else { + initiallySelectedContacts = selectContacts + } - Contact.sorting = activity.config.sorting - allContacts.sort() + Contact.sorting = activity.config.sorting + allContacts.sort() - activity.runOnUiThread { - view.apply { - select_contact_list.adapter = SelectContactsAdapter(activity, allContacts, initiallySelectedContacts, true) - select_contact_fastscroller.allowBubbleDisplay = activity.baseConfig.showInfoBubble - select_contact_fastscroller.setViews(select_contact_list) { - select_contact_fastscroller.updateBubbleText(allContacts[it].getBubbleText()) - } + activity.runOnUiThread { + view.apply { + select_contact_list.adapter = SelectContactsAdapter(activity, allContacts, initiallySelectedContacts, true) + select_contact_fastscroller.allowBubbleDisplay = activity.baseConfig.showInfoBubble + select_contact_fastscroller.setViews(select_contact_list) { + select_contact_fastscroller.updateBubbleText(allContacts[it].getBubbleText()) } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/FavoritesFragment.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/FavoritesFragment.kt index 705eba44..edafe57d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/FavoritesFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/FavoritesFragment.kt @@ -17,7 +17,7 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa } private fun showAddFavoritesDialog() { - SelectContactsDialog(activity!!) { addedContacts, removedContacts -> + SelectContactsDialog(activity!!, allContacts) { addedContacts, removedContacts -> ContactsHelper(activity as SimpleActivity).apply { addFavorites(addedContacts) removeFavorites(removedContacts) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt index d4f12cd3..add7d3c0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt @@ -22,6 +22,8 @@ import kotlinx.android.synthetic.main.fragment_layout.view.* abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) : CoordinatorLayout(context, attributeSet), FragmentInterface { protected var activity: MainActivity? = null + protected var allContacts = ArrayList() + private var lastHashCode = 0 private var contactsIgnoringSearch = ArrayList() private lateinit var config: Config @@ -75,6 +77,10 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) config.lastUsedContactSource = grouped?.key ?: "" } + Contact.sorting = config.sorting + contacts.sort() + allContacts = contacts + val filtered = if (this is FavoritesFragment) { contacts.filter { it.starred == 1 } as ArrayList } else { @@ -86,9 +92,6 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) } } - Contact.sorting = config.sorting - filtered.sort() - if (filtered.hashCode() != lastHashCode) { lastHashCode = filtered.hashCode() activity?.runOnUiThread {