Set delete in context menu to color destructive

pull/1313/head
Andrew 4 months ago
parent 8e4266d9ee
commit 91807db8a9

@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.components.menu
import android.content.Context import android.content.Context
import androidx.annotation.AttrRes import androidx.annotation.AttrRes
import androidx.annotation.ColorRes
/** /**
* Represents an action to be rendered * Represents an action to be rendered
@ -11,5 +12,6 @@ data class ActionItem(
val title: Int, val title: Int,
val action: Runnable, val action: Runnable,
val contentDescription: Int? = null, val contentDescription: Int? = null,
val subtitle: ((Context) -> CharSequence?)? = null val subtitle: ((Context) -> CharSequence?)? = null,
@ColorRes val color: Int? = null,
) )

@ -1,13 +1,14 @@
package org.thoughtcrime.securesms.components.menu package org.thoughtcrime.securesms.components.menu
import android.content.Context import android.content.Context
import android.content.res.ColorStateList
import android.util.TypedValue import android.util.TypedValue
import android.view.View import android.view.View
import android.widget.ImageView import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.view.isGone import androidx.core.view.isGone
import androidx.core.view.isVisible import androidx.core.widget.ImageViewCompat
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import kotlinx.coroutines.CoroutineScope 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) val subtitle: TextView = itemView.findViewById(R.id.context_menu_item_subtitle)
override fun bind(model: DisplayItem) { 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() 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.setImageDrawable(ContextCompat.getDrawable(context, typedValue.resourceId))
icon.imageTintList = color?.let(ColorStateList::valueOf)
} }
model.item.contentDescription?.let(context.resources::getString)?.let { itemView.contentDescription = it } item.contentDescription?.let(context.resources::getString)?.let { itemView.contentDescription = it }
title.setText(model.item.title) title.setText(item.title)
color?.let(title::setTextColor)
color?.let(title::setTextColor)
subtitle.isGone = true subtitle.isGone = true
model.item.subtitle?.let { item.subtitle?.let {
startSubtitleJob(subtitle, it) startSubtitleJob(subtitle, it)
} }
itemView.setOnClickListener { itemView.setOnClickListener {
model.item.action.run() item.action.run()
onItemClick() onItemClick()
} }

@ -549,7 +549,7 @@ class ConversationReactionOverlay : FrameLayout {
} }
// Delete message // Delete message
if (userCanDeleteSelectedItems(context, message, openGroup, userPublicKey, blindedPublicKey)) { 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 // Ban user
if (userCanBanSelectedUsers(context, message, openGroup, userPublicKey, blindedPublicKey)) { if (userCanBanSelectedUsers(context, message, openGroup, userPublicKey, blindedPublicKey)) {

Loading…
Cancel
Save