diff options
| author | 2025-01-16 06:12:52 -0800 | |
|---|---|---|
| committer | 2025-01-16 06:12:52 -0800 | |
| commit | 302b7e395a8ef19f2d36e424aa1bf44261ba880c (patch) | |
| tree | d151807271b9a9f01d3f31d2ba894635634973d0 | |
| parent | d15b4b88389ed5cd74ac1c863e81d552160e7337 (diff) | |
| parent | 94529617e5f7dae633ddc9a82431b070c894982c (diff) | |
Merge "Fix audio sharing and cast icons" into main
2 files changed, 46 insertions, 10 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderIconProvider.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderIconProvider.kt index 9cf02f26c9f7..ef147c741bec 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderIconProvider.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderIconProvider.kt @@ -21,6 +21,7 @@ import android.content.Context import android.graphics.drawable.Drawable import android.media.AudioManager import androidx.annotation.DrawableRes +import com.android.settingslib.R as SettingsR import com.android.settingslib.volume.domain.interactor.AudioVolumeInteractor import com.android.settingslib.volume.shared.model.AudioStream import com.android.settingslib.volume.shared.model.RingerMode @@ -30,8 +31,10 @@ import com.android.systemui.statusbar.policy.domain.model.ActiveZenModes import javax.inject.Inject import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flowOf +@SuppressLint("UseCompatLoadingForDrawables") class VolumeDialogSliderIconProvider @Inject constructor( @@ -40,7 +43,30 @@ constructor( private val audioVolumeInteractor: AudioVolumeInteractor, ) { - @SuppressLint("UseCompatLoadingForDrawables") + fun getAudioSharingIcon(isMuted: Boolean): Flow<Drawable> { + return flow { + val iconRes = + if (isMuted) { + R.drawable.ic_volume_media_bt_mute + } else { + R.drawable.ic_volume_media_bt + } + emit(context.getDrawable(iconRes)!!) + } + } + + fun getCastIcon(isMuted: Boolean): Flow<Drawable> { + return flow { + val iconRes = + if (isMuted) { + SettingsR.drawable.ic_volume_remote_mute + } else { + SettingsR.drawable.ic_volume_remote + } + emit(context.getDrawable(iconRes)!!) + } + } + fun getStreamIcon( stream: Int, level: Int, diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt index 89dd0352afa7..a752f1f78e74 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt @@ -57,12 +57,12 @@ private const val VOLUME_UPDATE_GRACE_PERIOD = 1000 class VolumeDialogSliderViewModel @Inject constructor( + private val sliderType: VolumeDialogSliderType, private val interactor: VolumeDialogSliderInteractor, private val visibilityInteractor: VolumeDialogVisibilityInteractor, @VolumeDialog private val coroutineScope: CoroutineScope, private val volumeDialogSliderIconProvider: VolumeDialogSliderIconProvider, private val systemClock: SystemClock, - private val sliderType: VolumeDialogSliderType, private val logger: VolumeDialogLogger, ) { @@ -82,14 +82,24 @@ constructor( model .flatMapLatest { streamModel -> with(streamModel) { - volumeDialogSliderIconProvider.getStreamIcon( - stream = stream, - level = level, - levelMin = levelMin, - levelMax = levelMax, - isMuted = muteSupported && muted, - isRoutedToBluetooth = routedToBluetooth, - ) + val isMuted = muteSupported && muted + when (sliderType) { + is VolumeDialogSliderType.Stream -> + volumeDialogSliderIconProvider.getStreamIcon( + stream = sliderType.audioStream, + level = level, + levelMin = levelMin, + levelMax = levelMax, + isMuted = isMuted, + isRoutedToBluetooth = routedToBluetooth, + ) + is VolumeDialogSliderType.RemoteMediaStream -> { + volumeDialogSliderIconProvider.getCastIcon(isMuted) + } + is VolumeDialogSliderType.AudioSharingStream -> { + volumeDialogSliderIconProvider.getAudioSharingIcon(isMuted) + } + } } .map { icon -> streamModel.toStateModel(icon) } } |