Skip to content
Snippets Groups Projects
Verified Commit 008e12ea authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Allow highlighting of own messages

parent 0c784994
Branches
Tags
No related merge requests found
Pipeline #
Showing
with 69 additions and 20 deletions
......@@ -36,7 +36,8 @@ data class MessageSettings(
val showIRCCloudAvatars: Boolean = false,
val showGravatarAvatars: Boolean = false,
val showMatrixAvatars: Boolean = false,
val largerEmoji: Boolean = false
val largerEmoji: Boolean = false,
val highlightOwnMessages: Boolean = false
) {
enum class ColorizeNicknamesMode {
......
......@@ -128,6 +128,10 @@ object Settings {
largerEmoji = getBoolean(
context.getString(R.string.preference_larger_emoji_key),
MessageSettings.DEFAULT.largerEmoji
),
highlightOwnMessages = getBoolean(
context.getString(R.string.preference_highlight_own_messages_key),
MessageSettings.DEFAULT.highlightOwnMessages
)
)
}
......
......@@ -19,7 +19,9 @@
package de.kuschku.quasseldroid.ui.chat.messages
import de.kuschku.libquassel.protocol.Message_Flag
import de.kuschku.libquassel.protocol.MsgId
import de.kuschku.libquassel.util.flag.hasFlag
import de.kuschku.quasseldroid.persistence.QuasselDatabase
data class DisplayMessage(
......@@ -33,6 +35,7 @@ data class DisplayMessage(
) {
data class Tag(
val id: MsgId,
val isSelf: Boolean,
val hasDayChange: Boolean,
val isFollowUp: Boolean,
val isSelected: Boolean,
......@@ -43,6 +46,7 @@ data class DisplayMessage(
val tag = Tag(
content.messageId,
content.flag.hasFlag(Message_Flag.Self),
hasDayChange,
isFollowUp,
isSelected,
......
......@@ -110,11 +110,12 @@ class MessageAdapter @Inject constructor(
it.content.type.value or
(if (it.content.flag.hasFlag(Message_Flag.Highlight)) MASK_HIGHLIGHT else 0x00) or
(if (it.isFollowUp) MASK_FOLLOWUP else 0x00) or
(if (it.isEmoji) MASK_EMOJI else 0x00)
(if (it.isEmoji) MASK_EMOJI else 0x00) or
(if (it.content.flag.hasFlag(Message_Flag.Self)) MASK_SELF else 0x00)
} ?: 0
override fun getItemId(position: Int): Long {
return getItem(position)?.content?.messageId?.toLong() ?: 0L
return getItem(position)?.content?.messageId ?: 0L
}
private fun messageType(viewType: Int): Message_Type? =
......@@ -126,13 +127,17 @@ class MessageAdapter @Inject constructor(
private fun isEmoji(viewType: Int) = viewType and MASK_EMOJI != 0
private fun isSelf(viewType: Int) = viewType and MASK_SELF != 0
companion object {
private const val SHIFT_HIGHLIGHT = 32 - 1
private const val SHIFT_FOLLOWUP = SHIFT_HIGHLIGHT - 1
private const val SHIFT_EMOJI = SHIFT_FOLLOWUP - 1
private const val SHIFT_SELF = SHIFT_EMOJI - 1
const val MASK_HIGHLIGHT = 0x01 shl SHIFT_HIGHLIGHT
const val MASK_FOLLOWUP = 0x01 shl SHIFT_FOLLOWUP
const val MASK_EMOJI = 0x01 shl SHIFT_EMOJI
const val MASK_SELF = 0x01 shl SHIFT_SELF
const val MASK_TYPE = 0xFFFFFF
}
......@@ -141,9 +146,10 @@ class MessageAdapter @Inject constructor(
val hasHighlight = hasHiglight(viewType)
val isFollowUp = isFollowUp(viewType)
val isEmoji = isEmoji(viewType)
val isSelf = isSelf(viewType)
val viewHolder = QuasselMessageViewHolder(
LayoutInflater.from(parent.context).inflate(
messageRenderer.layout(messageType, hasHighlight, isFollowUp, isEmoji),
messageRenderer.layout(messageType, hasHighlight, isFollowUp, isEmoji, isSelf),
parent,
false
),
......@@ -153,7 +159,7 @@ class MessageAdapter @Inject constructor(
expansionListener,
movementMethod
)
messageRenderer.init(viewHolder, messageType, hasHighlight, isFollowUp, isEmoji)
messageRenderer.init(viewHolder, messageType, hasHighlight, isFollowUp, isEmoji, isSelf)
return viewHolder
}
......
......@@ -27,7 +27,11 @@ import de.kuschku.quasseldroid.viewmodel.data.FormattedMessage
interface MessageRenderer {
@LayoutRes
fun layout(type: Message_Type?, hasHighlight: Boolean, isFollowUp: Boolean, isEmoji: Boolean): Int
fun layout(type: Message_Type?,
hasHighlight: Boolean,
isFollowUp: Boolean,
isEmoji: Boolean,
isSelf: Boolean): Int
fun bind(holder: MessageAdapter.QuasselMessageViewHolder, message: FormattedMessage,
original: QuasselDatabase.MessageData)
......@@ -38,5 +42,6 @@ interface MessageRenderer {
messageType: Message_Type?,
hasHighlight: Boolean,
isFollowUp: Boolean,
isEmoji: Boolean) = Unit
isEmoji: Boolean,
isSelf: Boolean) = Unit
}
......@@ -102,8 +102,11 @@ class QuasselMessageRenderer @Inject constructor(
private val zoneId = ZoneId.systemDefault()
override fun layout(type: Message_Type?, hasHighlight: Boolean,
isFollowUp: Boolean, isEmoji: Boolean) = when (type) {
override fun layout(type: Message_Type?,
hasHighlight: Boolean,
isFollowUp: Boolean,
isEmoji: Boolean,
isSelf: Boolean) = when (type) {
Notice -> R.layout.widget_chatmessage_notice
Server -> R.layout.widget_chatmessage_server
Error -> R.layout.widget_chatmessage_error
......@@ -119,7 +122,8 @@ class QuasselMessageRenderer @Inject constructor(
messageType: Message_Type?,
hasHighlight: Boolean,
isFollowUp: Boolean,
isEmoji: Boolean) {
isEmoji: Boolean,
isSelf: Boolean) {
if (hasHighlight) {
viewHolder.itemView.context.theme.styledAttributes(
R.attr.colorForegroundHighlight, R.attr.colorForegroundHighlightSecondary,
......@@ -140,6 +144,21 @@ class QuasselMessageRenderer @Inject constructor(
}
}
if (isSelf && messageSettings.highlightOwnMessages) {
viewHolder.itemView.context.theme.styledAttributes(
R.attr.colorBackgroundSecondary,
R.attr.backgroundMenuItem
) {
viewHolder.messageContainer?.background = LayerDrawable(
arrayOf(
ColorDrawable(getColor(0, 0)),
getDrawable(1)
)
)
}
}
val avatarContainer = viewHolder.itemView.findViewById<View>(R.id.avatar_container)
val avatarPlaceholder = viewHolder.itemView.findViewById<View>(R.id.avatar_placeholder)
......
......@@ -242,6 +242,10 @@
<string name="preference_larger_emoji_title">Larger Reactions</string>
<string name="preference_larger_emoji_summary">Increase the size of emoji-only messages</string>
<string name="preference_highlight_own_messages_key" translatable="false">highlight_own_messages</string>
<string name="preference_highlight_own_messages_title">Highlight own messages</string>
<string name="preference_highlight_own_messages_summary">Shows your own messages more prominently</string>
<string name="preference_autocomplete_title">Autocomplete</string>
......
......@@ -63,7 +63,7 @@
<item name="colorBackground">#000000</item>
<item name="android:windowBackground">@color/amoled_background</item>
<item name="colorBackgroundHighlight">#40ffaf3b</item>
<item name="colorBackgroundSecondary">@null</item>
<item name="colorBackgroundSecondary">#10ffaf3b</item>
<item name="colorBackgroundCard">#000000</item>
<item name="colorBackgroundDialog">#000000</item>
......
......@@ -63,7 +63,7 @@
<item name="android:windowBackground">@color/dracula_dark_background</item>
<item name="colorBackground">#282a36</item>
<item name="colorBackgroundHighlight">#20ff79c6</item>
<item name="colorBackgroundSecondary">@null</item>
<item name="colorBackgroundSecondary">#44475a</item>
<item name="colorBackgroundCard">#44475a</item>
<item name="colorBackgroundDialog">#282a36</item>
......
......@@ -63,7 +63,7 @@
<item name="android:windowBackground">@color/gruvbox_light_background</item>
<item name="colorBackground">#fbf1c7</item>
<item name="colorBackgroundHighlight">#40d65d0e</item>
<item name="colorBackgroundSecondary">@null</item>
<item name="colorBackgroundSecondary">#ebdbb2</item>
<item name="colorBackgroundCard">#ebdbb2</item>
<item name="colorBackgroundDialog">#f2d5bc</item>
......@@ -124,7 +124,7 @@
<item name="android:windowBackground">@color/gruvbox_dark_background</item>
<item name="colorBackground">#282828</item>
<item name="colorBackgroundHighlight">#40d65d0e</item>
<item name="colorBackgroundSecondary">@null</item>
<item name="colorBackgroundSecondary">#504945</item>
<item name="colorBackgroundCard">#504945</item>
<item name="colorBackgroundDialog">#3c3836</item>
......
......@@ -59,7 +59,7 @@
<item name="android:windowBackground">@color/material_light_background</item>
<item name="colorBackground">#FAFAFA</item>
<item name="colorBackgroundHighlight">#40ffaf3b</item>
<item name="colorBackgroundSecondary">@null</item>
<item name="colorBackgroundSecondary">#F0F0F0</item>
<item name="colorBackgroundCard">#FFFFFF</item>
<item name="colorBackgroundDialog">#FAFAFA</item>
......@@ -113,7 +113,7 @@
<item name="android:windowBackground">@color/material_dark_background</item>
<item name="colorBackground">#303030</item>
<item name="colorBackgroundHighlight">#40ffaf3b</item>
<item name="colorBackgroundSecondary">@null</item>
<item name="colorBackgroundSecondary">#424242</item>
<item name="colorBackgroundCard">#424242</item>
<item name="colorBackgroundDialog">#303030</item>
......
......@@ -61,7 +61,7 @@
<item name="android:windowBackground">@color/quassel_light_background</item>
<item name="colorBackground">#FAFAFA</item>
<item name="colorBackgroundHighlight">#ffaf3b</item>
<item name="colorBackgroundSecondary">@null</item>
<item name="colorBackgroundSecondary">#F0F0F0</item>
<item name="colorBackgroundCard">#FFFFFF</item>
<item name="colorBackgroundDialog">#FAFAFA</item>
......@@ -117,7 +117,7 @@
<item name="android:windowBackground">@color/quassel_dark_background</item>
<item name="colorBackground">#303030</item>
<item name="colorBackgroundHighlight">#ffaf3b</item>
<item name="colorBackgroundSecondary">@null</item>
<item name="colorBackgroundSecondary">#424242</item>
<item name="colorBackgroundCard">#424242</item>
<item name="colorBackgroundDialog">#303030</item>
......
......@@ -63,7 +63,7 @@
<item name="android:windowBackground">@color/solarized_light_background</item>
<item name="colorBackground">#FDF6E3</item>
<item name="colorBackgroundHighlight">#40B58900</item>
<item name="colorBackgroundSecondary">@null</item>
<item name="colorBackgroundSecondary">#EEE8D5</item>
<item name="colorBackgroundCard">#EEE8D5</item>
<item name="colorBackgroundDialog">#FDF6E3</item>
......@@ -124,7 +124,7 @@
<item name="android:windowBackground">@color/solarized_dark_background</item>
<item name="colorBackground">#002B36</item>
<item name="colorBackgroundHighlight">#30268BD2</item>
<item name="colorBackgroundSecondary">@null</item>
<item name="colorBackgroundSecondary">#073642</item>
<item name="colorBackgroundCard">#073642</item>
<item name="colorBackgroundDialog">#002B36</item>
......
......@@ -213,6 +213,12 @@
android:key="@string/preference_larger_emoji_key"
android:summary="@string/preference_larger_emoji_summary"
android:title="@string/preference_larger_emoji_title" />
<SwitchPreference
android:defaultValue="false"
android:dependency="@string/preference_highlight_own_messages"
android:key="@string/preference_highlight_own_messages_key"
android:summary="@string/preference_highlight_own_messages_summary"
android:title="@string/preference_highlight_own_messages_title" />
</PreferenceCategory>
<PreferenceCategory android:layout="@layout/widget_preference_divider" />
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment