From 6d4f9912fd7e62aa1dcaf82bdf6b32261a01cd89 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 20 Mar 2018 15:13:49 +0100 Subject: [PATCH] allow removing contacts from groups by long pressing them and selecting Remove --- .../activities/GroupContactsActivity.kt | 9 +++++++-- .../contacts/adapters/ContactsAdapter.kt | 17 ++++++++++------- .../contacts/fragments/MyViewPagerFragment.kt | 2 +- .../interfaces/RemoveFromGroupListener.kt | 7 +++++++ 4 files changed, 25 insertions(+), 10 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/contacts/interfaces/RemoveFromGroupListener.kt 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 9a3dd388..7b90e213 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/GroupContactsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/GroupContactsActivity.kt @@ -11,11 +11,12 @@ import com.simplemobiletools.contacts.extensions.editContact import com.simplemobiletools.contacts.extensions.tryStartCall import com.simplemobiletools.contacts.extensions.viewContact import com.simplemobiletools.contacts.helpers.* +import com.simplemobiletools.contacts.interfaces.RemoveFromGroupListener import com.simplemobiletools.contacts.models.Contact import com.simplemobiletools.contacts.models.Group import kotlinx.android.synthetic.main.activity_group_contacts.* -class GroupContactsActivity : SimpleActivity() { +class GroupContactsActivity : SimpleActivity(), RemoveFromGroupListener { private var allContacts = ArrayList() private var groupContacts = ArrayList() lateinit var group: Group @@ -53,7 +54,7 @@ class GroupContactsActivity : SimpleActivity() { } private fun updateContacts(contacts: ArrayList) { - ContactsAdapter(this, contacts, null, LOCATION_GROUP_CONTACTS, group_contacts_list, group_contacts_fastscroller) { + ContactsAdapter(this, contacts, null, LOCATION_GROUP_CONTACTS, this, group_contacts_list, group_contacts_fastscroller) { when (config.onContactClick) { ON_CLICK_CALL_CONTACT -> { val contact = it as Contact @@ -78,4 +79,8 @@ class GroupContactsActivity : SimpleActivity() { group_contacts_fastscroller.updateBubbleText(item?.getBubbleText() ?: "") } } + + override fun removeFromGroup(contacts: ArrayList) { + ContactsHelper(this).removeContactsFromGroup(contacts, group.id) + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt index e6df0637..23a5e7cf 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt @@ -26,12 +26,14 @@ import com.simplemobiletools.contacts.helpers.LOCATION_CONTACTS_TAB import com.simplemobiletools.contacts.helpers.LOCATION_FAVORITES_TAB import com.simplemobiletools.contacts.helpers.LOCATION_GROUP_CONTACTS import com.simplemobiletools.contacts.interfaces.RefreshContactsListener +import com.simplemobiletools.contacts.interfaces.RemoveFromGroupListener import com.simplemobiletools.contacts.models.Contact import kotlinx.android.synthetic.main.item_contact_with_number.view.* import java.util.* -class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList, private val listener: RefreshContactsListener?, - private val location: Int, recyclerView: MyRecyclerView, fastScroller: FastScroller, itemClick: (Any) -> Unit) : +class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList, private val refreshListener: RefreshContactsListener?, + private val location: Int, private val removeListener: RemoveFromGroupListener?, recyclerView: MyRecyclerView, + fastScroller: FastScroller, itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, fastScroller, itemClick) { private lateinit var contactDrawable: Drawable @@ -136,11 +138,11 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList() selectedPositions.forEach { newFavorites.add(contactItems[it]) } ContactsHelper(activity).addFavorites(newFavorites) - listener?.refreshFavorites() + refreshListener?.refreshFavorites() finishActMode() } 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 add7d3c0..83b61c8f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt @@ -109,7 +109,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) if (currAdapter == null || forceListRedraw) { forceListRedraw = false val location = if (this is FavoritesFragment) LOCATION_FAVORITES_TAB else LOCATION_CONTACTS_TAB - ContactsAdapter(activity as SimpleActivity, contacts, activity, location, fragment_list, fragment_fastscroller) { + ContactsAdapter(activity as SimpleActivity, contacts, activity, location, null, fragment_list, fragment_fastscroller) { when (config.onContactClick) { ON_CLICK_CALL_CONTACT -> { val contact = it as Contact diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/interfaces/RemoveFromGroupListener.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/interfaces/RemoveFromGroupListener.kt new file mode 100644 index 00000000..c435180a --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/interfaces/RemoveFromGroupListener.kt @@ -0,0 +1,7 @@ +package com.simplemobiletools.contacts.interfaces + +import com.simplemobiletools.contacts.models.Contact + +interface RemoveFromGroupListener { + fun removeFromGroup(contacts: ArrayList) +}