mirror of
https://github.com/oxen-io/session-android.git
synced 2025-05-20 21:08:23 +00:00
Set delete in context menu to color destructive
This commit is contained in:
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…
x
Reference in New Issue
Block a user