From 7bd9d34cd0cf6514b5667590f1bf244a46fd423d Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 15 Apr 2020 20:42:28 +0200 Subject: [PATCH] use the new contact avatars at the Select Contact dialog and screens too --- .../pro/adapters/SelectContactsAdapter.kt | 56 +++++++------------ .../layout/item_add_favorite_with_number.xml | 18 ++++-- .../item_add_favorite_without_number.xml | 13 +++-- .../res/layout/item_contact_with_number.xml | 1 + 4 files changed, 42 insertions(+), 46 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/SelectContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/SelectContactsAdapter.kt index e69b25fe..1ddeb70a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/SelectContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/SelectContactsAdapter.kt @@ -1,5 +1,6 @@ package com.simplemobiletools.contacts.pro.adapters +import android.graphics.drawable.BitmapDrawable import android.util.SparseArray import android.util.TypedValue import android.view.View @@ -7,7 +8,6 @@ import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide 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.* @@ -27,20 +27,14 @@ class SelectContactsAdapter(val activity: SimpleActivity, var contacts: ArrayLis private val itemViews = SparseArray() private val selectedPositions = HashSet() private val config = activity.config - private val textColor = config.textColor private val adjustedPrimaryColor = activity.getAdjustedPrimaryColor() private val fontSize = activity.getTextSize() - private val contactDrawable = activity.resources.getColoredDrawableWithColor(R.drawable.ic_person_vector, textColor) private val showContactThumbnails = config.showContactThumbnails private val showPhoneNumbers = config.showPhoneNumbers private val itemLayout = if (showPhoneNumbers) R.layout.item_add_favorite_with_number else R.layout.item_add_favorite_without_number private var textToHighlight = "" - private var smallPadding = activity.resources.getDimension(R.dimen.small_margin).toInt() - private var mediumPadding = activity.resources.getDimension(R.dimen.medium_margin).toInt() - private var bigPadding = activity.resources.getDimension(R.dimen.normal_margin).toInt() - init { contacts.forEachIndexed { index, contact -> if (selectedContacts.asSequence().map { it.id }.contains(contact.id)) { @@ -121,11 +115,6 @@ class SelectContactsAdapter(val activity: SimpleActivity, var contacts: ArrayLis contact_name.setTextColor(textColor) contact_name.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize) - if (!showContactThumbnails && !showPhoneNumbers) { - contact_name.setPadding(bigPadding, bigPadding, bigPadding, bigPadding) - } else { - contact_name.setPadding(if (showContactThumbnails) smallPadding else bigPadding, smallPadding, smallPadding, 0) - } if (contact_number != null) { val phoneNumberToUse = if (textToHighlight.isEmpty()) { @@ -137,7 +126,6 @@ class SelectContactsAdapter(val activity: SimpleActivity, var contacts: ArrayLis val numberText = phoneNumberToUse?.value ?: "" contact_number.text = if (textToHighlight.isEmpty()) numberText else numberText.highlightTextPart(textToHighlight, adjustedPrimaryColor, false, true) contact_number.setTextColor(textColor) - contact_number.setPadding(if (showContactThumbnails) smallPadding else bigPadding, 0, smallPadding, 0) contact_number.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize) } @@ -150,40 +138,36 @@ class SelectContactsAdapter(val activity: SimpleActivity, var contacts: ArrayLis } contact_tmb.beVisibleIf(showContactThumbnails) + if (showContactThumbnails) { - if (contact.photoUri.isNotEmpty()) { + val avatarName = when { + contact.isABusinessContact() -> contact.getFullCompany() + config.startNameWithSurname -> contact.surname + else -> contact.firstName + } + + val placeholderImage = BitmapDrawable(resources, context.getContactLetterIcon(avatarName)) + + if (contact.photoUri.isEmpty() && contact.photo == null) { + contact_tmb.setImageDrawable(placeholderImage) + } else { val options = RequestOptions() - .signature(ObjectKey(contact.photoUri)) + .signature(ObjectKey(contact.getSignatureKey())) .diskCacheStrategy(DiskCacheStrategy.RESOURCE) - .error(contactDrawable) + .error(placeholderImage) .centerCrop() - if (!activity.isDestroyed && !activity.isFinishing) { - Glide.with(activity) - .load(contact.photoUri) - .transition(DrawableTransitionOptions.withCrossFade()) - .apply(options) - .apply(RequestOptions.circleCropTransform()) - .into(contact_tmb) - contact_tmb.setPadding(smallPadding, smallPadding, smallPadding, smallPadding) + val itemToLoad: Any? = if (contact.photoUri.isNotEmpty()) { + contact.photoUri + } else { + contact.photo } - } else if (contact.photo != null) { - val options = RequestOptions() - .signature(ObjectKey(contact.hashCode())) - .diskCacheStrategy(DiskCacheStrategy.RESOURCE) - .error(contactDrawable) - .centerCrop() Glide.with(activity) - .load(contact.photo) - .transition(DrawableTransitionOptions.withCrossFade()) + .load(itemToLoad) .apply(options) .apply(RequestOptions.circleCropTransform()) .into(contact_tmb) - contact_tmb.setPadding(smallPadding, smallPadding, smallPadding, smallPadding) - } else { - contact_tmb.setPadding(mediumPadding, mediumPadding, mediumPadding, mediumPadding) - contact_tmb.setImageDrawable(contactDrawable) } } } diff --git a/app/src/main/res/layout/item_add_favorite_with_number.xml b/app/src/main/res/layout/item_add_favorite_with_number.xml index 8a1ff174..06de1793 100644 --- a/app/src/main/res/layout/item_add_favorite_with_number.xml +++ b/app/src/main/res/layout/item_add_favorite_with_number.xml @@ -12,16 +12,19 @@ android:id="@+id/contact_holder" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingTop="@dimen/medium_margin" - android:paddingEnd="@dimen/normal_margin" - android:paddingBottom="@dimen/medium_margin"> + android:minHeight="@dimen/min_row_height" + android:paddingStart="@dimen/tiny_margin" + android:paddingTop="@dimen/normal_margin" + android:paddingEnd="@dimen/activity_margin" + android:paddingBottom="@dimen/normal_margin"> @@ -47,6 +50,9 @@ android:layout_toEndOf="@+id/contact_tmb" android:alpha="0.6" android:maxLines="1" + android:ellipsize="end" + android:paddingStart="@dimen/medium_margin" + android:paddingEnd="@dimen/activity_margin" android:textSize="@dimen/bigger_text_size" tools:text="0123 456 789" /> diff --git a/app/src/main/res/layout/item_add_favorite_without_number.xml b/app/src/main/res/layout/item_add_favorite_without_number.xml index 2519eb54..e562e240 100644 --- a/app/src/main/res/layout/item_add_favorite_without_number.xml +++ b/app/src/main/res/layout/item_add_favorite_without_number.xml @@ -12,16 +12,19 @@ android:id="@+id/contact_holder" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingTop="@dimen/tiny_margin" - android:paddingEnd="@dimen/normal_margin" - android:paddingBottom="@dimen/tiny_margin"> + android:minHeight="@dimen/min_row_height" + android:paddingStart="@dimen/tiny_margin" + android:paddingTop="@dimen/medium_margin" + android:paddingEnd="@dimen/activity_margin" + android:paddingBottom="@dimen/medium_margin"> diff --git a/app/src/main/res/layout/item_contact_with_number.xml b/app/src/main/res/layout/item_contact_with_number.xml index ce243b01..663ad5b7 100644 --- a/app/src/main/res/layout/item_contact_with_number.xml +++ b/app/src/main/res/layout/item_contact_with_number.xml @@ -48,6 +48,7 @@ android:layout_alignStart="@+id/contact_name" android:layout_toEndOf="@+id/contact_tmb" android:alpha="0.6" + android:ellipsize="end" android:maxLines="1" android:paddingStart="@dimen/medium_margin" android:paddingEnd="@dimen/activity_margin"