From 8e3eee5106382e3309ca5836e7efbb2507fd0977 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 2 Jan 2018 17:35:21 +0100 Subject: [PATCH] allow selecting only 1 contact at the selection activity --- app/src/main/AndroidManifest.xml | 9 ++--- .../activities/SelectContactActivity.kt | 40 +++---------------- .../adapters/SelectContactsAdapter.kt | 19 ++++++--- .../contacts/dialogs/AddFavoritesDialog.kt | 2 +- app/src/main/res/menu/menu_select_contact.xml | 10 ----- 5 files changed, 24 insertions(+), 56 deletions(-) delete mode 100644 app/src/main/res/menu/menu_select_contact.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 90bf4437..8060eb4f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,7 +65,6 @@ @@ -77,7 +76,7 @@ - + @@ -92,7 +91,7 @@ android:mimeType="vnd.android.cursor.item/raw_contact"/> - + @@ -101,7 +100,7 @@ - + @@ -110,7 +109,7 @@ - + diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SelectContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SelectContactActivity.kt index 5861c2cd..c369e93d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SelectContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SelectContactActivity.kt @@ -4,8 +4,6 @@ import android.content.Intent import android.net.Uri import android.os.Bundle import android.provider.ContactsContract -import android.view.Menu -import android.view.MenuItem import com.simplemobiletools.commons.extensions.appLaunched import com.simplemobiletools.commons.extensions.baseConfig import com.simplemobiletools.commons.extensions.isActivityDestroyed @@ -20,9 +18,6 @@ import com.simplemobiletools.contacts.models.Contact import kotlinx.android.synthetic.main.layout_select_contact.* class SelectContactActivity : SimpleActivity() { - private var skipFavorites = false - private var allowMultiple = false - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.layout_select_contact) @@ -45,28 +40,7 @@ class SelectContactActivity : SimpleActivity() { } } - override fun onCreateOptionsMenu(menu: Menu): Boolean { - menuInflater.inflate(R.menu.menu_select_contact, menu) - menu.findItem(R.id.confirm).isVisible = allowMultiple - return true - } - - override fun onOptionsItemSelected(item: MenuItem): Boolean { - when (item.itemId) { - R.id.confirm -> confirmSelection() - else -> return super.onOptionsItemSelected(item) - } - return true - } - private fun initContacts() { - skipFavorites = intent.getBooleanExtra("extraSkipFavorites", false) - allowMultiple = intent.getBooleanExtra("isPickMultiContactsWithoutProfile", false) - if (allowMultiple) { - title = getString(R.string.select_contacts) - invalidateOptionsMenu() - } - ContactsHelper(this).getContacts { var contacts = it if (isActivityDestroyed()) { @@ -78,16 +52,13 @@ class SelectContactActivity : SimpleActivity() { contacts = contacts.filter { contactSources.contains(it.source) } as ArrayList } - if (skipFavorites) { - val favorites = config.favorites - contacts = contacts.filter { !favorites.contains(it.id.toString()) } as ArrayList - } - Contact.sorting = config.sorting contacts.sort() runOnUiThread { - select_contact_list.adapter = SelectContactsAdapter(this, contacts, HashSet()) + select_contact_list.adapter = SelectContactsAdapter(this, contacts, HashSet(), false) { + confirmSelection(it) + } select_contact_fastscroller.allowBubbleDisplay = baseConfig.showInfoBubble select_contact_fastscroller.setViews(select_contact_list) { select_contact_fastscroller.updateBubbleText(contacts[it].getBubbleText()) @@ -96,9 +67,8 @@ class SelectContactActivity : SimpleActivity() { } } - private fun confirmSelection() { - val selectedItems = (select_contact_list.adapter as SelectContactsAdapter).getSelectedItemsSet() - val lookupKey = ContactsHelper(this).getContactLookupKey(selectedItems.first()) + private fun confirmSelection(contact: Contact) { + val lookupKey = ContactsHelper(this).getContactLookupKey(contact.id.toString()) val lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey) Intent().apply { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/SelectContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/SelectContactsAdapter.kt index badf877d..fad7cf4e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/SelectContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/SelectContactsAdapter.kt @@ -10,6 +10,7 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions import com.bumptech.glide.request.RequestOptions import com.bumptech.glide.signature.ObjectKey +import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor import com.simplemobiletools.commons.interfaces.MyAdapterListener import com.simplemobiletools.contacts.R @@ -20,8 +21,8 @@ import com.simplemobiletools.contacts.models.Contact import kotlinx.android.synthetic.main.item_add_favorite_with_number.view.* import java.util.* -class SelectContactsAdapter(val activity: SimpleActivity, val contacts: List, val selectedContacts: Set) - : RecyclerView.Adapter() { +class SelectContactsAdapter(val activity: SimpleActivity, val contacts: List, val selectedContacts: Set, val allowPickMultiple: Boolean, + val itemClick: ((Contact) -> Unit)? = null) : RecyclerView.Adapter() { private val itemViews = SparseArray() private val selectedPositions = HashSet() private val config = activity.config @@ -68,7 +69,7 @@ class SelectContactsAdapter(val activity: SimpleActivity, val contacts: List Unit)?) : RecyclerView.ViewHolder(view) { fun bindView(contact: Contact, startNameWithSurname: Boolean, contactDrawable: Drawable, config: Config): View { itemView.apply { + contact_checkbox.beVisibleIf(showCheckbox) contact_checkbox.setColors(config.textColor, config.primaryColor, config.backgroundColor) val textColor = config.textColor @@ -89,7 +92,13 @@ class SelectContactsAdapter(val activity: SimpleActivity, val contacts: List Unit) activity.runOnUiThread { view.apply { - select_contact_list.adapter = SelectContactsAdapter(activity, allContacts, config.favorites) + select_contact_list.adapter = SelectContactsAdapter(activity, allContacts, config.favorites, 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/res/menu/menu_select_contact.xml b/app/src/main/res/menu/menu_select_contact.xml deleted file mode 100644 index f33e03eb..00000000 --- a/app/src/main/res/menu/menu_select_contact.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - -