VoiceBroadcast - Update live indicator icon
This commit is contained in:
parent
f711a0ea74
commit
cebc096ac7
@ -64,7 +64,7 @@ class VoiceBroadcastItemFactory @Inject constructor(
|
|||||||
return if (isRecording) {
|
return if (isRecording) {
|
||||||
createRecordingItem(params.event.roomId, highlight, callback, attributes)
|
createRecordingItem(params.event.roomId, highlight, callback, attributes)
|
||||||
} else {
|
} 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(
|
private fun createListeningItem(
|
||||||
roomId: String,
|
roomId: String,
|
||||||
voiceBroadcastId: String,
|
voiceBroadcastId: String,
|
||||||
|
voiceBroadcastState: VoiceBroadcastState?,
|
||||||
highlight: Boolean,
|
highlight: Boolean,
|
||||||
callback: TimelineEventController.Callback?,
|
callback: TimelineEventController.Callback?,
|
||||||
attributes: AbsMessageItem.Attributes,
|
attributes: AbsMessageItem.Attributes,
|
||||||
@ -102,6 +103,7 @@ class VoiceBroadcastItemFactory @Inject constructor(
|
|||||||
.drawableProvider(drawableProvider)
|
.drawableProvider(drawableProvider)
|
||||||
.voiceBroadcastPlayer(voiceBroadcastPlayer)
|
.voiceBroadcastPlayer(voiceBroadcastPlayer)
|
||||||
.voiceBroadcastId(voiceBroadcastId)
|
.voiceBroadcastId(voiceBroadcastId)
|
||||||
|
.voiceBroadcastState(voiceBroadcastState)
|
||||||
.leftGuideline(avatarSizeProvider.leftGuideline)
|
.leftGuideline(avatarSizeProvider.leftGuideline)
|
||||||
.callback(callback)
|
.callback(callback)
|
||||||
}
|
}
|
||||||
|
@ -24,11 +24,13 @@ import androidx.core.view.isVisible
|
|||||||
import com.airbnb.epoxy.EpoxyAttribute
|
import com.airbnb.epoxy.EpoxyAttribute
|
||||||
import com.airbnb.epoxy.EpoxyModelClass
|
import com.airbnb.epoxy.EpoxyModelClass
|
||||||
import im.vector.app.R
|
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.ColorProvider
|
||||||
import im.vector.app.core.resources.DrawableProvider
|
import im.vector.app.core.resources.DrawableProvider
|
||||||
import im.vector.app.features.home.room.detail.RoomDetailAction
|
import im.vector.app.features.home.room.detail.RoomDetailAction
|
||||||
import im.vector.app.features.home.room.detail.timeline.TimelineEventController
|
import im.vector.app.features.home.room.detail.timeline.TimelineEventController
|
||||||
import im.vector.app.features.voicebroadcast.VoiceBroadcastPlayer
|
import im.vector.app.features.voicebroadcast.VoiceBroadcastPlayer
|
||||||
|
import im.vector.app.features.voicebroadcast.model.VoiceBroadcastState
|
||||||
import org.matrix.android.sdk.api.util.MatrixItem
|
import org.matrix.android.sdk.api.util.MatrixItem
|
||||||
|
|
||||||
@EpoxyModelClass
|
@EpoxyModelClass
|
||||||
@ -43,6 +45,9 @@ abstract class MessageVoiceBroadcastListeningItem : AbsMessageItem<MessageVoiceB
|
|||||||
@EpoxyAttribute
|
@EpoxyAttribute
|
||||||
lateinit var voiceBroadcastId: String
|
lateinit var voiceBroadcastId: String
|
||||||
|
|
||||||
|
@EpoxyAttribute
|
||||||
|
var voiceBroadcastState: VoiceBroadcastState? = null
|
||||||
|
|
||||||
@EpoxyAttribute
|
@EpoxyAttribute
|
||||||
lateinit var colorProvider: ColorProvider
|
lateinit var colorProvider: ColorProvider
|
||||||
|
|
||||||
@ -70,6 +75,7 @@ abstract class MessageVoiceBroadcastListeningItem : AbsMessageItem<MessageVoiceB
|
|||||||
}
|
}
|
||||||
voiceBroadcastPlayer?.addListener(playerListener)
|
voiceBroadcastPlayer?.addListener(playerListener)
|
||||||
renderHeader(holder)
|
renderHeader(holder)
|
||||||
|
renderLiveIcon(holder)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun renderHeader(holder: 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) {
|
private fun renderState(holder: Holder, state: VoiceBroadcastPlayer.State) {
|
||||||
if (isCurrentMediaActive()) {
|
if (isCurrentMediaActive()) {
|
||||||
renderActiveMedia(holder, state)
|
renderActiveMedia(holder, state)
|
||||||
@ -94,8 +119,6 @@ abstract class MessageVoiceBroadcastListeningItem : AbsMessageItem<MessageVoiceB
|
|||||||
with(holder) {
|
with(holder) {
|
||||||
bufferingView.isVisible = state == VoiceBroadcastPlayer.State.BUFFERING
|
bufferingView.isVisible = state == VoiceBroadcastPlayer.State.BUFFERING
|
||||||
playPauseButton.isVisible = state != VoiceBroadcastPlayer.State.BUFFERING
|
playPauseButton.isVisible = state != VoiceBroadcastPlayer.State.BUFFERING
|
||||||
liveIndicator.isVisible = false
|
|
||||||
// liveIndicator.tintBackground(colorProvider.getColorFromAttribute(R.attr.colorOnError))
|
|
||||||
|
|
||||||
when (state) {
|
when (state) {
|
||||||
VoiceBroadcastPlayer.State.PLAYING -> {
|
VoiceBroadcastPlayer.State.PLAYING -> {
|
||||||
@ -118,7 +141,6 @@ abstract class MessageVoiceBroadcastListeningItem : AbsMessageItem<MessageVoiceB
|
|||||||
|
|
||||||
private fun renderInactiveMedia(holder: Holder) {
|
private fun renderInactiveMedia(holder: Holder) {
|
||||||
with(holder) {
|
with(holder) {
|
||||||
liveIndicator.isVisible = false
|
|
||||||
bufferingView.isVisible = false
|
bufferingView.isVisible = false
|
||||||
playPauseButton.isVisible = true
|
playPauseButton.isVisible = true
|
||||||
playPauseButton.setImageResource(R.drawable.ic_play_pause_play)
|
playPauseButton.setImageResource(R.drawable.ic_play_pause_play)
|
||||||
|
@ -87,7 +87,7 @@ abstract class MessageVoiceBroadcastRecordingItem : AbsMessageItem<MessageVoiceB
|
|||||||
stopRecordButton.isEnabled = true
|
stopRecordButton.isEnabled = true
|
||||||
|
|
||||||
liveIndicator.isVisible = 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 drawableColor = colorProvider.getColorFromAttribute(R.attr.vctr_content_secondary)
|
||||||
val drawable = drawableProvider.getDrawable(R.drawable.ic_play_pause_pause, drawableColor)
|
val drawable = drawableProvider.getDrawable(R.drawable.ic_play_pause_pause, drawableColor)
|
||||||
|
Loading…
Reference in New Issue
Block a user