From 32d3e0b21ae3a7cfc70a0dd9ea2acef729b2fc3b Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 11 Apr 2020 20:07:39 +0200 Subject: [PATCH] use a different placeholder image at group conversations, not a letter --- app/build.gradle | 2 +- .../adapters/ConversationsAdapter.kt | 15 ++++++++++++++- .../smsmessenger/extensions/Context.kt | 12 +++++++++--- .../smsmessenger/models/Conversation.kt | 5 ++++- .../res/drawable/group_conversation_icon.xml | 16 ++++++++++++++++ 5 files changed, 44 insertions(+), 6 deletions(-) create mode 100644 app/src/main/res/drawable/group_conversation_icon.xml diff --git a/app/build.gradle b/app/build.gradle index 982bc9bb..e2e5c927 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -36,7 +36,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.25.6' + implementation 'com.simplemobiletools:commons:5.25.7' implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta4' implementation 'org.greenrobot:eventbus:3.2.0' implementation 'com.klinkerapps:android-smsmms:5.2.6' diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt index 81ae45c0..24846683 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ConversationsAdapter.kt @@ -1,6 +1,7 @@ package com.simplemobiletools.smsmessenger.adapters import android.graphics.Typeface +import android.graphics.drawable.LayerDrawable import android.view.Menu import android.view.View import android.view.ViewGroup @@ -8,6 +9,7 @@ import android.widget.TextView import com.bumptech.glide.Glide import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter import com.simplemobiletools.commons.dialogs.ConfirmationDialog +import com.simplemobiletools.commons.extensions.applyColorFilter import com.simplemobiletools.commons.extensions.formatDateOrTime import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.commons.views.FastScroller @@ -16,6 +18,7 @@ import com.simplemobiletools.smsmessenger.R import com.simplemobiletools.smsmessenger.activities.SimpleActivity import com.simplemobiletools.smsmessenger.extensions.deleteConversation import com.simplemobiletools.smsmessenger.extensions.loadImage +import com.simplemobiletools.smsmessenger.helpers.letterBackgroundColors import com.simplemobiletools.smsmessenger.helpers.refreshMessages import com.simplemobiletools.smsmessenger.models.Conversation import kotlinx.android.synthetic.main.item_conversation.view.* @@ -135,7 +138,17 @@ class ConversationsAdapter( it.setTextColor(textColor) } - context.loadImage(conversation.photoUri, conversation_image, conversation.title) + // at group conversations we use an icon as the placeholder, not any letter + val placeholder = if (conversation.isGroupConversation) { + val icon = activity.resources.getDrawable(R.drawable.group_conversation_icon) + val bgColor = letterBackgroundColors[Math.abs(conversation.title.hashCode()) % letterBackgroundColors.size].toInt() + (icon as LayerDrawable).findDrawableByLayerId(R.id.attendee_circular_background).applyColorFilter(bgColor) + icon + } else { + null + } + + context.loadImage(conversation.photoUri, conversation_image, conversation.title, placeholder) } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt index 0ae46472..0abb272d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -12,6 +12,7 @@ import android.graphics.Bitmap import android.graphics.Canvas import android.graphics.Paint import android.graphics.drawable.BitmapDrawable +import android.graphics.drawable.Drawable import android.media.AudioAttributes import android.media.AudioManager import android.media.RingtoneManager @@ -159,7 +160,8 @@ fun Context.getConversations(): ArrayList { val names = getThreadContactNames(phoneNumbers) val title = TextUtils.join(", ", names.toTypedArray()) val photoUri = if (phoneNumbers.size == 1) getPhotoUriFromPhoneNumber(phoneNumbers.first()) else "" - val conversation = Conversation(id, snippet, date.toInt(), read, title, photoUri) + val isGroupConversation = phoneNumbers.size > 1 + val conversation = Conversation(id, snippet, date.toInt(), read, title, photoUri, isGroupConversation) conversations.add(conversation) } return conversations @@ -595,8 +597,12 @@ fun Context.getNotificationLetterIcon(name: String): Bitmap { return bitmap } -fun Context.loadImage(path: String, imageView: ImageView, placeholderName: String) { - val placeholder = BitmapDrawable(resources, getNotificationLetterIcon(placeholderName)) +fun Context.loadImage(path: String, imageView: ImageView, placeholderName: String, placeholderImage: Drawable? = null) { + val placeholder = if (placeholderImage == null) { + BitmapDrawable(resources, getNotificationLetterIcon(placeholderName)) + } else { + placeholderImage + } val options = RequestOptions() .diskCacheStrategy(DiskCacheStrategy.RESOURCE) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Conversation.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Conversation.kt index d93a1dee..81420432 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Conversation.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Conversation.kt @@ -1,3 +1,6 @@ package com.simplemobiletools.smsmessenger.models -data class Conversation(val id: Int, val snippet: String, val date: Int, val read: Boolean, val title: String, val photoUri: String) +data class Conversation( + val id: Int, val snippet: String, val date: Int, val read: Boolean, val title: String, val photoUri: String, + val isGroupConversation: Boolean +) diff --git a/app/src/main/res/drawable/group_conversation_icon.xml b/app/src/main/res/drawable/group_conversation_icon.xml new file mode 100644 index 00000000..eef63aa5 --- /dev/null +++ b/app/src/main/res/drawable/group_conversation_icon.xml @@ -0,0 +1,16 @@ + + + + + + + + + + +