diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/menu/ActionItem.kt b/app/src/main/java/org/thoughtcrime/securesms/components/menu/ActionItem.kt index b63659c6c..700534fad 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/menu/ActionItem.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/menu/ActionItem.kt @@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.components.menu import android.content.Context import androidx.annotation.AttrRes +import androidx.annotation.ColorRes /** * Represents an action to be rendered @@ -11,5 +12,6 @@ data class ActionItem( val title: Int, val action: Runnable, val contentDescription: Int? = null, - val subtitle: ((Context) -> CharSequence?)? = null + val subtitle: ((Context) -> CharSequence?)? = null, + @ColorRes val color: Int? = null, ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/menu/ContextMenuList.kt b/app/src/main/java/org/thoughtcrime/securesms/components/menu/ContextMenuList.kt index 21f092b5e..46629403b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/menu/ContextMenuList.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/menu/ContextMenuList.kt @@ -1,13 +1,14 @@ package org.thoughtcrime.securesms.components.menu import android.content.Context +import android.content.res.ColorStateList import android.util.TypedValue import android.view.View import android.widget.ImageView import android.widget.TextView import androidx.core.content.ContextCompat import androidx.core.view.isGone -import androidx.core.view.isVisible +import androidx.core.widget.ImageViewCompat import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import kotlinx.coroutines.CoroutineScope @@ -78,19 +79,26 @@ class ContextMenuList(recyclerView: RecyclerView, onItemClick: () -> Unit) { val subtitle: TextView = itemView.findViewById(R.id.context_menu_item_subtitle) override fun bind(model: DisplayItem) { - if (model.item.iconRes > 0) { + val item = model.item + val color = item.color?.let { ContextCompat.getColor(context, it) } + + if (item.iconRes > 0) { val typedValue = TypedValue() - context.theme.resolveAttribute(model.item.iconRes, typedValue, true) + context.theme.resolveAttribute(item.iconRes, typedValue, true) icon.setImageDrawable(ContextCompat.getDrawable(context, typedValue.resourceId)) + + icon.imageTintList = color?.let(ColorStateList::valueOf) } - model.item.contentDescription?.let(context.resources::getString)?.let { itemView.contentDescription = it } - title.setText(model.item.title) + item.contentDescription?.let(context.resources::getString)?.let { itemView.contentDescription = it } + title.setText(item.title) + color?.let(title::setTextColor) + color?.let(title::setTextColor) subtitle.isGone = true - model.item.subtitle?.let { + item.subtitle?.let { startSubtitleJob(subtitle, it) } itemView.setOnClickListener { - model.item.action.run() + item.action.run() onItemClick() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationReactionOverlay.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationReactionOverlay.kt index f982974d1..ed25128f6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationReactionOverlay.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationReactionOverlay.kt @@ -549,7 +549,7 @@ class ConversationReactionOverlay : FrameLayout { } // Delete message if (userCanDeleteSelectedItems(context, message, openGroup, userPublicKey, blindedPublicKey)) { - items += ActionItem(R.attr.menu_trash_icon, R.string.delete, { handleActionItemClicked(Action.DELETE) }, R.string.AccessibilityId_delete_message, message.subtitle) + items += ActionItem(R.attr.menu_trash_icon, R.string.delete, { handleActionItemClicked(Action.DELETE) }, R.string.AccessibilityId_delete_message, message.subtitle, R.color.destructive) } // Ban user if (userCanBanSelectedUsers(context, message, openGroup, userPublicKey, blindedPublicKey)) {