mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2025-03-18 20:29:10 +03:00
VoiceBroadcast - Update live indicator icon
This commit is contained in:
parent
f711a0ea74
commit
cebc096ac7
3 changed files with 29 additions and 5 deletions
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue