VoiceBroadcast - Update live indicator icon

This commit is contained in:
Florian Renaud 2022-10-20 21:06:27 +02:00
parent f711a0ea74
commit cebc096ac7
3 changed files with 29 additions and 5 deletions

View File

@ -64,7 +64,7 @@ class VoiceBroadcastItemFactory @Inject constructor(
return if (isRecording) {
createRecordingItem(params.event.roomId, highlight, callback, attributes)
} else {
createListeningItem(params.event.roomId, eventsGroup.groupId, highlight, callback, attributes)
createListeningItem(params.event.roomId, eventsGroup.groupId, mostRecentMessageContent.voiceBroadcastState, highlight, callback, attributes)
}
}
@ -89,6 +89,7 @@ class VoiceBroadcastItemFactory @Inject constructor(
private fun createListeningItem(
roomId: String,
voiceBroadcastId: String,
voiceBroadcastState: VoiceBroadcastState?,
highlight: Boolean,
callback: TimelineEventController.Callback?,
attributes: AbsMessageItem.Attributes,
@ -102,6 +103,7 @@ class VoiceBroadcastItemFactory @Inject constructor(
.drawableProvider(drawableProvider)
.voiceBroadcastPlayer(voiceBroadcastPlayer)
.voiceBroadcastId(voiceBroadcastId)
.voiceBroadcastState(voiceBroadcastState)
.leftGuideline(avatarSizeProvider.leftGuideline)
.callback(callback)
}

View File

@ -24,11 +24,13 @@ import androidx.core.view.isVisible
import com.airbnb.epoxy.EpoxyAttribute
import com.airbnb.epoxy.EpoxyModelClass
import im.vector.app.R
import im.vector.app.core.extensions.tintBackground
import im.vector.app.core.resources.ColorProvider
import im.vector.app.core.resources.DrawableProvider
import im.vector.app.features.home.room.detail.RoomDetailAction
import im.vector.app.features.home.room.detail.timeline.TimelineEventController
import im.vector.app.features.voicebroadcast.VoiceBroadcastPlayer
import im.vector.app.features.voicebroadcast.model.VoiceBroadcastState
import org.matrix.android.sdk.api.util.MatrixItem
@EpoxyModelClass
@ -43,6 +45,9 @@ abstract class MessageVoiceBroadcastListeningItem : AbsMessageItem<MessageVoiceB
@EpoxyAttribute
lateinit var voiceBroadcastId: String
@EpoxyAttribute
var voiceBroadcastState: VoiceBroadcastState? = null
@EpoxyAttribute
lateinit var colorProvider: ColorProvider
@ -70,6 +75,7 @@ abstract class MessageVoiceBroadcastListeningItem : AbsMessageItem<MessageVoiceB
}
voiceBroadcastPlayer?.addListener(playerListener)
renderHeader(holder)
renderLiveIcon(holder)
}
private fun renderHeader(holder: Holder) {
@ -81,6 +87,25 @@ abstract class MessageVoiceBroadcastListeningItem : AbsMessageItem<MessageVoiceB
}
}
private fun renderLiveIcon(holder: Holder) {
with(holder) {
when (voiceBroadcastState) {
VoiceBroadcastState.STARTED,
VoiceBroadcastState.RESUMED -> {
liveIndicator.tintBackground(colorProvider.getColorFromAttribute(R.attr.colorError))
liveIndicator.isVisible = true
}
VoiceBroadcastState.PAUSED -> {
liveIndicator.tintBackground(colorProvider.getColorFromAttribute(R.attr.vctr_content_quaternary))
liveIndicator.isVisible = true
}
VoiceBroadcastState.STOPPED, null -> {
liveIndicator.isVisible = false
}
}
}
}
private fun renderState(holder: Holder, state: VoiceBroadcastPlayer.State) {
if (isCurrentMediaActive()) {
renderActiveMedia(holder, state)
@ -94,8 +119,6 @@ abstract class MessageVoiceBroadcastListeningItem : AbsMessageItem<MessageVoiceB
with(holder) {
bufferingView.isVisible = state == VoiceBroadcastPlayer.State.BUFFERING
playPauseButton.isVisible = state != VoiceBroadcastPlayer.State.BUFFERING
liveIndicator.isVisible = false
// liveIndicator.tintBackground(colorProvider.getColorFromAttribute(R.attr.colorOnError))
when (state) {
VoiceBroadcastPlayer.State.PLAYING -> {
@ -118,7 +141,6 @@ abstract class MessageVoiceBroadcastListeningItem : AbsMessageItem<MessageVoiceB
private fun renderInactiveMedia(holder: Holder) {
with(holder) {
liveIndicator.isVisible = false
bufferingView.isVisible = false
playPauseButton.isVisible = true
playPauseButton.setImageResource(R.drawable.ic_play_pause_play)

View File

@ -87,7 +87,7 @@ abstract class MessageVoiceBroadcastRecordingItem : AbsMessageItem<MessageVoiceB
stopRecordButton.isEnabled = true
liveIndicator.isVisible = true
liveIndicator.tintBackground(colorProvider.getColorFromAttribute(R.attr.colorOnError))
liveIndicator.tintBackground(colorProvider.getColorFromAttribute(R.attr.colorError))
val drawableColor = colorProvider.getColorFromAttribute(R.attr.vctr_content_secondary)
val drawable = drawableProvider.getDrawable(R.drawable.ic_play_pause_pause, drawableColor)