From 4f130fe40250a02767257b06ef767738e5e17c1d Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 27 Oct 2018 18:24:16 +0200 Subject: [PATCH] fix #269, add placeholders at SelectContact activity --- .../activities/SelectContactActivity.kt | 33 ++++++++++++++++--- .../adapters/SelectContactsAdapter.kt | 15 +++++++-- .../contacts/dialogs/SelectContactsDialog.kt | 2 +- .../res/layout/activity_group_contacts.xml | 10 +++--- .../res/layout/activity_select_contact.xml | 32 ++++++++++++++++-- app/src/main/res/layout/fragment_layout.xml | 12 +++---- 6 files changed, 82 insertions(+), 22 deletions(-) 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 11a56640..b71913a6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SelectContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SelectContactActivity.kt @@ -6,8 +6,7 @@ import android.os.Bundle import android.provider.ContactsContract import android.view.Menu import android.view.MenuItem -import com.simplemobiletools.commons.extensions.baseConfig -import com.simplemobiletools.commons.extensions.toast +import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CONTACTS import com.simplemobiletools.contacts.R @@ -28,6 +27,7 @@ class SelectContactActivity : SimpleActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_select_contact) + setupPlaceholders() handlePermission(PERMISSION_READ_CONTACTS) { if (it) { @@ -104,8 +104,11 @@ class SelectContactActivity : SimpleActivity() { contacts.sort() runOnUiThread { - select_contact_list.adapter = SelectContactsAdapter(this, contacts, ArrayList(), false) { + updatePlaceholderVisibility(contacts) + SelectContactsAdapter(this, contacts, ArrayList(), false, select_contact_list) { confirmSelection(it) + }.apply { + select_contact_list.adapter = this } select_contact_fastscroller.allowBubbleDisplay = baseConfig.showInfoBubble @@ -131,9 +134,29 @@ class SelectContactActivity : SimpleActivity() { val contactId = ContactsHelper(this).getContactMimeTypeId(contact.id.toString(), specialMimeType!!) Uri.withAppendedPath(ContactsContract.Data.CONTENT_URI, contactId) } - else -> { - getContactPublicUri(contact) + else -> getContactPublicUri(contact) + } + } + + private fun setupPlaceholders() { + select_contact_placeholder.setTextColor(config.textColor) + select_contact_placeholder_2.setTextColor(getAdjustedPrimaryColor()) + select_contact_placeholder_2.underlineText() + select_contact_placeholder_2.setOnClickListener { + FilterContactSourcesDialog(this) { + initContacts() } } } + + private fun updatePlaceholderVisibility(contacts: ArrayList) { + select_contact_list.beVisibleIf(contacts.isNotEmpty()) + select_contact_placeholder_2.beVisibleIf(contacts.isEmpty()) + select_contact_placeholder.beVisibleIf(contacts.isEmpty()) + select_contact_placeholder.setText(when (specialMimeType) { + ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE -> R.string.no_contacts_with_emails + ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE -> R.string.no_contacts_with_phone_numbers + else -> R.string.no_contacts_found + }) + } } 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 f7448dc6..6b485a93 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/SelectContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/SelectContactsAdapter.kt @@ -4,6 +4,7 @@ import android.graphics.drawable.Drawable import android.util.SparseArray import android.view.View import android.view.ViewGroup +import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide import com.bumptech.glide.load.engine.DiskCacheStrategy @@ -13,6 +14,7 @@ import com.bumptech.glide.signature.ObjectKey import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor +import com.simplemobiletools.commons.views.MyRecyclerView import com.simplemobiletools.contacts.R import com.simplemobiletools.contacts.activities.SimpleActivity import com.simplemobiletools.contacts.extensions.config @@ -22,7 +24,7 @@ import kotlinx.android.synthetic.main.item_add_favorite_with_number.view.* import java.util.* class SelectContactsAdapter(val activity: SimpleActivity, val contacts: List, private val selectedContacts: ArrayList, private val allowPickMultiple: Boolean, - private val itemClick: ((Contact) -> Unit)? = null) : RecyclerView.Adapter() { + private val recyclerView: MyRecyclerView, private val itemClick: ((Contact) -> Unit)? = null) : RecyclerView.Adapter() { private val itemViews = SparseArray() private val selectedPositions = HashSet() private val config = activity.config @@ -36,10 +38,19 @@ class SelectContactsAdapter(val activity: SimpleActivity, val contacts: List - if (selectedContacts.map { it.id }.contains(contact.id)) { + if (selectedContacts.asSequence().map { it.id }.contains(contact.id)) { selectedPositions.add(index) } } + + if (recyclerView.itemDecorationCount > 0) { + recyclerView.removeItemDecorationAt(0) + } + + DividerItemDecoration(activity, DividerItemDecoration.VERTICAL).apply { + setDrawable(activity.resources.getDrawable(R.drawable.divider)) + recyclerView.addItemDecoration(this) + } } private fun toggleItemSelection(select: Boolean, pos: Int) { 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 2b719c2a..2c2d3b6d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/SelectContactsDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/SelectContactsDialog.kt @@ -33,7 +33,7 @@ class SelectContactsDialog(val activity: SimpleActivity, initialContacts: ArrayL activity.runOnUiThread { view.apply { - select_contact_list.adapter = SelectContactsAdapter(activity, allContacts, initiallySelectedContacts, true) + select_contact_list.adapter = SelectContactsAdapter(activity, allContacts, initiallySelectedContacts, true, select_contact_list) 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/layout/activity_group_contacts.xml b/app/src/main/res/layout/activity_group_contacts.xml index adf3c68b..ad7edb2a 100644 --- a/app/src/main/res/layout/activity_group_contacts.xml +++ b/app/src/main/res/layout/activity_group_contacts.xml @@ -26,13 +26,13 @@ @@ -51,8 +51,8 @@ android:layout_height="match_parent" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" - android:paddingLeft="@dimen/normal_margin" - android:paddingStart="@dimen/normal_margin"> + android:paddingStart="@dimen/normal_margin" + android:paddingLeft="@dimen/normal_margin"> diff --git a/app/src/main/res/layout/activity_select_contact.xml b/app/src/main/res/layout/activity_select_contact.xml index d2dde128..c2f19d5a 100644 --- a/app/src/main/res/layout/activity_select_contact.xml +++ b/app/src/main/res/layout/activity_select_contact.xml @@ -6,6 +6,32 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> + + + + + android:paddingStart="@dimen/normal_margin" + android:paddingLeft="@dimen/normal_margin"> diff --git a/app/src/main/res/layout/fragment_layout.xml b/app/src/main/res/layout/fragment_layout.xml index 55e0a9ae..f1620a69 100644 --- a/app/src/main/res/layout/fragment_layout.xml +++ b/app/src/main/res/layout/fragment_layout.xml @@ -17,19 +17,19 @@ android:gravity="center" android:paddingLeft="@dimen/activity_margin" android:paddingRight="@dimen/activity_margin" - android:text="@string/no_items_found" + android:text="@string/no_contacts_found" android:textSize="@dimen/bigger_text_size" android:visibility="gone"/> @@ -48,8 +48,8 @@ android:layout_height="match_parent" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" - android:paddingLeft="@dimen/normal_margin" - android:paddingStart="@dimen/normal_margin"> + android:paddingStart="@dimen/normal_margin" + android:paddingLeft="@dimen/normal_margin">