diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt index 5814c3932753219eca14f31dd59ba881c1c687c0..b9086710fb94c0c68ef21d670509ae15ba1f5775 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt @@ -115,16 +115,22 @@ class MessageAdapter( var markerline: View? = null private var message: FormattedMessage? = null + private var selectable: Boolean = false + private var clickable: Boolean = false private val localClickListener = View.OnClickListener { - message?.let { - clickListener?.invoke(it) + if (clickable) { + message?.let { + clickListener?.invoke(it) + } } } private val localLongClickListener = View.OnLongClickListener { - message?.let { - selectionListener?.invoke(it) + if (selectable) { + message?.let { + selectionListener?.invoke(it) + } } true } @@ -141,8 +147,10 @@ class MessageAdapter( content.setOnLongClickListener(localLongClickListener) } - fun bind(message: FormattedMessage) { + fun bind(message: FormattedMessage, selectable: Boolean = true, clickable: Boolean = true) { this.message = message + this.selectable = selectable + this.clickable = clickable time?.text = message.time content.text = message.content diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt index 597b8246c1b1cb4094a206d777d005536796bb3d..2429dd0847ba6eb00f6e4420d85f92e758fc1bb5 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt @@ -2,6 +2,8 @@ package de.kuschku.quasseldroid.ui.chat.messages import android.content.Context import android.graphics.Typeface +import android.graphics.drawable.ColorDrawable +import android.graphics.drawable.LayerDrawable import android.text.SpannableString import android.text.Spanned import android.text.TextPaint @@ -71,11 +73,17 @@ class QuasselMessageRenderer @Inject constructor( hasHighlight: Boolean) { if (hasHighlight) { viewHolder.itemView.context.theme.styledAttributes( - R.attr.colorForegroundHighlight, R.attr.colorBackgroundHighlight + R.attr.colorForegroundHighlight, R.attr.colorBackgroundHighlight, + R.attr.backgroundMenuItem ) { viewHolder.time?.setTextColor(getColor(0, 0)) viewHolder.content.setTextColor(getColor(0, 0)) - viewHolder.itemView.setBackgroundColor(getColor(1, 0)) + viewHolder.itemView.background = LayerDrawable( + arrayOf( + ColorDrawable(getColor(1, 0)), + getDrawable(2) + ) + ) } } if (appearanceSettings.useMonospace) { @@ -92,7 +100,10 @@ class QuasselMessageRenderer @Inject constructor( } override fun bind(holder: MessageAdapter.QuasselMessageViewHolder, message: FormattedMessage, - original: QuasselDatabase.DatabaseMessage) = holder.bind(message) + original: QuasselDatabase.DatabaseMessage) = + Message_Type.of(original.type).hasFlag(DayChange).let { isDayChange -> + holder.bind(message, !isDayChange, !isDayChange) + } override fun render(context: Context, message: DisplayMessage): FormattedMessage { @@ -326,7 +337,7 @@ class QuasselMessageRenderer @Inject constructor( } Message_Type.Server, Message_Type.Info, - Message_Type.Error -> FormattedMessage( + Message_Type.Error -> FormattedMessage( message.content.messageId, timeFormatter.format(message.content.time.atZone(zoneId)), formatContent(context, message.content.content, highlight), @@ -334,7 +345,7 @@ class QuasselMessageRenderer @Inject constructor( isExpanded = message.isExpanded, isSelected = message.isSelected ) - Message_Type.Topic -> FormattedMessage( + Message_Type.Topic -> FormattedMessage( message.content.messageId, timeFormatter.format(message.content.time.atZone(zoneId)), formatContent(context, message.content.content, highlight), @@ -342,7 +353,7 @@ class QuasselMessageRenderer @Inject constructor( isExpanded = message.isExpanded, isSelected = message.isSelected ) - DayChange -> FormattedMessage( + DayChange -> FormattedMessage( message.content.messageId, "", dateFormatter.format(message.content.time.atZone(zoneId)), @@ -350,7 +361,7 @@ class QuasselMessageRenderer @Inject constructor( isExpanded = false, isSelected = false ) - else -> FormattedMessage( + else -> FormattedMessage( message.content.messageId, timeFormatter.format(message.content.time.atZone(zoneId)), SpanFormatter.format(