diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingPreviewMessageViewHolder.java b/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingPreviewMessageViewHolder.java
index fb1f6f85d..572bd9e9a 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingPreviewMessageViewHolder.java
+++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingPreviewMessageViewHolder.java
@@ -50,7 +50,8 @@ public class IncomingPreviewMessageViewHolder extends PreviewMessageViewHolder {
message,
true,
viewThemeUtils);
- viewThemeUtils.talk.themeIncomingMessageBubble(binding.incomingPreviewMessageBubble, true, false);
+ viewThemeUtils.talk.themeIncomingMessageBubble(binding.incomingPreviewMessageBubble, true, false,
+ false);
}
if (processedMessageText != null) {
diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingVoiceMessageViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingVoiceMessageViewHolder.kt
index 71aafcce6..e16d1a45e 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingVoiceMessageViewHolder.kt
+++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingVoiceMessageViewHolder.kt
@@ -279,7 +279,7 @@ class IncomingVoiceMessageViewHolder(incomingView: View, payload: Any) :
}
private fun colorizeMessageBubble(message: ChatMessage) {
- viewThemeUtils.talk.themeIncomingMessageBubble(bubble, message.isGrouped, message.isDeleted)
+ viewThemeUtils.talk.themeIncomingMessageBubble(bubble, message.isGrouped, message.isDeleted, message.wasPlayedVoiceMessage)
}
@Suppress("Detekt.TooGenericExceptionCaught")
diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingPreviewMessageViewHolder.java b/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingPreviewMessageViewHolder.java
index 21509d502..eb7d54452 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingPreviewMessageViewHolder.java
+++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingPreviewMessageViewHolder.java
@@ -50,7 +50,8 @@ public class OutcomingPreviewMessageViewHolder extends PreviewMessageViewHolder
message,
false,
viewThemeUtils);
- viewThemeUtils.talk.themeOutgoingMessageBubble(binding.outgoingPreviewMessageBubble, true, false);
+ viewThemeUtils.talk.themeOutgoingMessageBubble(binding.outgoingPreviewMessageBubble, true, false,
+ false);
}
if (processedMessageText != null) {
diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingVoiceMessageViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingVoiceMessageViewHolder.kt
index 281240748..1e6715cde 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingVoiceMessageViewHolder.kt
+++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingVoiceMessageViewHolder.kt
@@ -342,7 +342,7 @@ class OutcomingVoiceMessageViewHolder(outcomingView: View) :
}
private fun colorizeMessageBubble(message: ChatMessage) {
- viewThemeUtils.talk.themeOutgoingMessageBubble(bubble, message.isGrouped, message.isDeleted)
+ viewThemeUtils.talk.themeOutgoingMessageBubble(bubble, message.isGrouped, message.isDeleted, message.wasPlayedVoiceMessage)
}
fun assignVoiceMessageInterface(voiceMessageInterface: VoiceMessageInterface) {
diff --git a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt
index 00706c42e..25d4790c6 100644
--- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt
+++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt
@@ -1644,6 +1644,11 @@ class ChatActivity :
lastRecordMediaPosition = mediaPlayer!!.currentPosition
message.voiceMessagePlayedSeconds = pos
message.voiceMessageSeekbarProgress = mediaPlayer!!.currentPosition
+ if(mediaPlayer!!.currentPosition * 20 > mediaPlayer!!.duration){
+ // a voice message is marked as played when the mediaplayer position
+ // is at least at 5% of its duration
+ message.wasPlayedVoiceMessage = true
+ }
adapter?.update(message)
} else {
message.resetVoiceMessage = true
diff --git a/app/src/main/java/com/nextcloud/talk/chat/data/model/ChatMessage.kt b/app/src/main/java/com/nextcloud/talk/chat/data/model/ChatMessage.kt
index 7283cf8ec..f071f9849 100644
--- a/app/src/main/java/com/nextcloud/talk/chat/data/model/ChatMessage.kt
+++ b/app/src/main/java/com/nextcloud/talk/chat/data/model/ChatMessage.kt
@@ -91,6 +91,8 @@ data class ChatMessage(
var isPlayingVoiceMessage: Boolean = false,
+ var wasPlayedVoiceMessage : Boolean = false,
+
var voiceMessageDuration: Int = 0,
var voiceMessagePlayedSeconds: Int = 0,
diff --git a/app/src/main/java/com/nextcloud/talk/ui/theme/TalkSpecificViewThemeUtils.kt b/app/src/main/java/com/nextcloud/talk/ui/theme/TalkSpecificViewThemeUtils.kt
index 87b1b3bde..ad85b6c9f 100644
--- a/app/src/main/java/com/nextcloud/talk/ui/theme/TalkSpecificViewThemeUtils.kt
+++ b/app/src/main/java/com/nextcloud/talk/ui/theme/TalkSpecificViewThemeUtils.kt
@@ -70,7 +70,7 @@ class TalkSpecificViewThemeUtils @Inject constructor(
) :
ViewThemeUtilsBase(schemes) {
private val dynamicColor = MaterialDynamicColors()
- fun themeIncomingMessageBubble(bubble: View, grouped: Boolean, deleted: Boolean) {
+ fun themeIncomingMessageBubble(bubble: View, grouped: Boolean, deleted: Boolean, isPlayed: Boolean = false) {
val resources = bubble.resources
var bubbleResource = R.drawable.shape_incoming_message
@@ -81,6 +81,8 @@ class TalkSpecificViewThemeUtils @Inject constructor(
val bgBubbleColor = if (deleted) {
resources.getColor(R.color.bg_message_list_incoming_bubble_deleted, null)
+ } else if(isPlayed){
+ resources.getColor(R.color.bg_message_list_incoming_bubble_audio_played, null)
} else {
resources.getColor(R.color.bg_message_list_incoming_bubble, null)
}
@@ -93,11 +95,13 @@ class TalkSpecificViewThemeUtils @Inject constructor(
ViewCompat.setBackground(bubble, bubbleDrawable)
}
- fun themeOutgoingMessageBubble(bubble: View, grouped: Boolean, deleted: Boolean) {
+ fun themeOutgoingMessageBubble(bubble: View, grouped: Boolean, deleted: Boolean, isPlayed : Boolean = false) {
withScheme(bubble) { scheme ->
val bgBubbleColor = if (deleted) {
ColorUtils.setAlphaComponent(dynamicColor.surfaceVariant().getArgb(scheme), HALF_ALPHA_INT)
- } else {
+ } else if(isPlayed){
+ ContextCompat.getColor(bubble.context, R.color.bg_message_list_outgoing_bubble_audio_played)
+ }else {
dynamicColor.surfaceVariant().getArgb(scheme)
}
diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml
index 7b4c18f30..087fee614 100644
--- a/app/src/main/res/values-night/colors.xml
+++ b/app/src/main/res/values-night/colors.xml
@@ -45,6 +45,8 @@
#121212
#2A2A2A
#14FFFFFF
+ #3F3F73
+ #313B75
#8c8c8c
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index a49e2de29..3253644f1 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -64,6 +64,8 @@
#EFEFEF
#66EFEFEF
+ #AFAFAF
+ #D3CFCF
#FFFFFF
#121212