diff --git a/tools/chatgui-android/app/src/main/java/com/utun/chat/ui/components/MessageBubble.kt b/tools/chatgui-android/app/src/main/java/com/utun/chat/ui/components/MessageBubble.kt index 59f6c97e..5a35bf69 100644 --- a/tools/chatgui-android/app/src/main/java/com/utun/chat/ui/components/MessageBubble.kt +++ b/tools/chatgui-android/app/src/main/java/com/utun/chat/ui/components/MessageBubble.kt @@ -125,23 +125,33 @@ private fun VoiceBubble(message: Message, textColor: Color, onPlay: (String, () Canvas(modifier = Modifier.weight(1f).height(28.dp)) { val barW = size.width / wfCount val ph = size.height - val playedIdx = if (progress > 0f) (progress * wfCount).toInt() else 0 + val playedIdx = if (playing && progress > 0f) (progress * wfCount).toInt() else 0 for (i in 0 until wfCount) { val level = wf[i].coerceIn(0f, 1f) val barH = (2f + level * (ph - 2f)).coerceAtMost(ph) val x = i.toFloat() * barW val y = ph - barH - val played = i < playedIdx + val played = playing && i < playedIdx drawRect( - color = if (playing) { - if (played) Color(0xFF3390EC) else Color(0xFF3390EC).copy(alpha = 0.35f) - } else { - Color(0xFFCCCCD4).copy(alpha = 0.8f) + color = when { + played -> Color.White + playing -> Color(0xFFCCCCD4).copy(alpha = 0.8f) + else -> Color(0xFFCCCCD4).copy(alpha = 0.8f) }, topLeft = Offset(x, y), size = Size(barW * 0.75f, barH) ) } + /* yellow cursor line */ + if (playing && progress > 0f && progress < 1f) { + val cursorX = progress * size.width + drawLine( + color = Color(0xFFFFD600), + start = Offset(cursorX, 0f), + end = Offset(cursorX, ph), + strokeWidth = 2.5f + ) + } } } }