From 7c2ca77e7ace3462ad5b39715ad6527ea4ebcc42 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 20 Jan 2020 14:50:02 +0100 Subject: [PATCH] handle deleting speed dials --- .../pro/activities/ManageSpeedDialActivity.kt | 16 ++++++++++++++-- .../contacts/pro/adapters/SpeedDialAdapter.kt | 17 +++++++++++++++-- .../pro/interfaces/RemoveSpeedDialListener.kt | 5 +++++ 3 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/contacts/pro/interfaces/RemoveSpeedDialListener.kt diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ManageSpeedDialActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ManageSpeedDialActivity.kt index c93e0f7d..137e481e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ManageSpeedDialActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ManageSpeedDialActivity.kt @@ -8,11 +8,12 @@ import com.simplemobiletools.contacts.pro.adapters.SpeedDialAdapter import com.simplemobiletools.contacts.pro.dialogs.SelectContactsDialog import com.simplemobiletools.contacts.pro.extensions.config import com.simplemobiletools.contacts.pro.helpers.ContactsHelper +import com.simplemobiletools.contacts.pro.interfaces.RemoveSpeedDialListener import com.simplemobiletools.contacts.pro.models.Contact import com.simplemobiletools.contacts.pro.models.SpeedDial import kotlinx.android.synthetic.main.activity_manage_speed_dial.* -class ManageSpeedDialActivity : SimpleActivity() { +class ManageSpeedDialActivity : SimpleActivity(), RemoveSpeedDialListener { private var allContacts = ArrayList() private var speedDialValues = ArrayList() @@ -42,7 +43,7 @@ class ManageSpeedDialActivity : SimpleActivity() { } private fun updateAdapter() { - SpeedDialAdapter(this, speedDialValues, speed_dial_list) { + SpeedDialAdapter(this, speedDialValues, this, speed_dial_list) { val clickedContact = it as SpeedDial if (allContacts.isEmpty()) { return@SpeedDialAdapter @@ -60,4 +61,15 @@ class ManageSpeedDialActivity : SimpleActivity() { speed_dial_list.adapter = this } } + + override fun removeSpeedDial(ids: ArrayList) { + ids.forEach { + val dialId = it + speedDialValues.first { it.id == dialId }.apply { + displayName = "" + number = "" + } + } + updateAdapter() + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/SpeedDialAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/SpeedDialAdapter.kt index c2154b5a..a3fa7e2e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/SpeedDialAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/SpeedDialAdapter.kt @@ -7,12 +7,13 @@ import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter import com.simplemobiletools.commons.views.MyRecyclerView import com.simplemobiletools.contacts.pro.R import com.simplemobiletools.contacts.pro.activities.SimpleActivity +import com.simplemobiletools.contacts.pro.interfaces.RemoveSpeedDialListener import com.simplemobiletools.contacts.pro.models.SpeedDial import kotlinx.android.synthetic.main.item_speed_dial.view.* import java.util.* -class SpeedDialAdapter(activity: SimpleActivity, var speedDialValues: ArrayList, recyclerView: MyRecyclerView, itemClick: (Any) -> Unit) : - MyRecyclerViewAdapter(activity, recyclerView, null, itemClick) { +class SpeedDialAdapter(activity: SimpleActivity, var speedDialValues: ArrayList, private val removeListener: RemoveSpeedDialListener, + recyclerView: MyRecyclerView, itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, null, itemClick) { init { setupDragListener(true) @@ -26,6 +27,10 @@ class SpeedDialAdapter(activity: SimpleActivity, var speedDialValues: ArrayList< if (selectedKeys.isEmpty()) { return } + + when (id) { + R.id.cab_delete -> deleteSpeedDial() + } } override fun getSelectableItemCount() = speedDialValues.size @@ -52,6 +57,14 @@ class SpeedDialAdapter(activity: SimpleActivity, var speedDialValues: ArrayList< override fun getItemCount() = speedDialValues.size + private fun getSelectedItems() = speedDialValues.filter { selectedKeys.contains(it.hashCode()) } as ArrayList + + private fun deleteSpeedDial() { + val ids = getSelectedItems().map { it.id }.toMutableList() as ArrayList + removeListener.removeSpeedDial(ids) + finishActMode() + } + private fun setupView(view: View, speedDial: SpeedDial) { view.apply { var text = "${speedDial.id}. " diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/interfaces/RemoveSpeedDialListener.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/interfaces/RemoveSpeedDialListener.kt new file mode 100644 index 00000000..ccb59777 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/interfaces/RemoveSpeedDialListener.kt @@ -0,0 +1,5 @@ +package com.simplemobiletools.contacts.pro.interfaces + +interface RemoveSpeedDialListener { + fun removeSpeedDial(ids: ArrayList) +}