Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3b0dae5a authored by Anton Potapov's avatar Anton Potapov
Browse files

Add Volume Dialog logs

Flag: com.android.systemui.volume_redesign
Bug: 369993959
Test: passes presubmits
Change-Id: Ief51c331e7eb0256664e576eea934c33afd305e3
parent 35d2315f
Loading
Loading
Loading
Loading
+13 −18
Original line number Diff line number Diff line
@@ -144,7 +144,6 @@ constructor(private val viewModel: VolumeDialogRingerDrawerViewModel) {
                                    ringerState.orientation,
                                )
                            }

                            is RingerDrawerState.Closed -> {
                                if (
                                    uiModel.selectedButton.ringerMode ==
@@ -189,7 +188,6 @@ constructor(private val viewModel: VolumeDialogRingerDrawerViewModel) {
                                    }
                                }
                            }

                            is RingerDrawerState.Open -> {
                                drawerContainer.animateAndBindDrawerButtons(
                                    viewModel,
@@ -220,7 +218,6 @@ constructor(private val viewModel: VolumeDialogRingerDrawerViewModel) {
                            }
                        }
                    }

                    is RingerViewModelState.Unavailable -> {
                        drawerContainer.visibility = View.GONE
                        volumeDialogBackgroundView.setBackgroundResource(
@@ -251,7 +248,7 @@ constructor(private val viewModel: VolumeDialogRingerDrawerViewModel) {
                    .requireViewById<ImageButton>(R.id.volume_drawer_button)
            val previousIndex =
                uiModel.availableButtons.indexOfFirst {
                    it?.ringerMode == uiModel.drawerState.previousMode
                    it.ringerMode == uiModel.drawerState.previousMode
                }
            val unselectedButton =
                getChildAt(count - previousIndex)
@@ -306,20 +303,18 @@ constructor(private val viewModel: VolumeDialogRingerDrawerViewModel) {
    ) {
        val count = uiModel.availableButtons.size
        uiModel.availableButtons.fastForEachIndexed { index, ringerButton ->
            ringerButton?.let {
            val view = getChildAt(count - index)
            val isOpen = uiModel.drawerState is RingerDrawerState.Open
            if (index == uiModel.currentButtonIndex) {
                view.bindDrawerButton(
                        if (isOpen) it else uiModel.selectedButton,
                    if (isOpen) ringerButton else uiModel.selectedButton,
                    viewModel,
                    isOpen,
                    isSelected = true,
                    isAnimated = isAnimated,
                )
            } else {
                    view.bindDrawerButton(it, viewModel, isOpen, isAnimated = isAnimated)
                }
                view.bindDrawerButton(ringerButton, viewModel, isOpen, isAnimated = isAnimated)
            }
        }
        onAnimationEnd?.run()
+1 −1
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ package com.android.systemui.volume.dialog.ringer.ui.viewmodel
/** Models volume dialog ringer */
data class RingerViewModel(
    /** List of the available buttons according to the available modes */
    val availableButtons: List<RingerButtonViewModel?>,
    val availableButtons: List<RingerButtonViewModel>,
    /** The index of the currently selected button */
    val currentButtonIndex: Int,
    /** Currently selected button. */
+21 −6
Original line number Diff line number Diff line
@@ -50,7 +50,9 @@ import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch

@@ -106,9 +108,25 @@ constructor(
            .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
            .build()

    init {
        ringerViewModel
            .onEach { viewModelState ->
                when (viewModelState) {
                    is RingerViewModelState.Available ->
                        volumeDialogLogger.onRingerDrawerAvailable(
                            viewModelState.uiModel.availableButtons.map { it.ringerMode }
                        )
                    is RingerViewModelState.Unavailable ->
                        volumeDialogLogger.onRingerDrawerUnavailable()
                }
            }
            .launchIn(coroutineScope)
    }

    fun onRingerButtonClicked(ringerMode: RingerMode, isSelectedButton: Boolean = false) {
        if (drawerState.value is RingerDrawerState.Open && !isSelectedButton) {
            Events.writeEvent(Events.EVENT_RINGER_TOGGLE, ringerMode.value)
            volumeDialogLogger.onRingerModeChanged(ringerMode)
            provideTouchFeedback(ringerMode)
            maybeShowToast(ringerMode)
            ringerInteractor.setRingerMode(ringerMode)
@@ -159,7 +177,9 @@ constructor(
                RingerViewModelState.Available(
                    RingerViewModel(
                        availableButtons =
                            availableModes.map { mode -> toButtonViewModel(mode, isZenMuted) },
                            availableModes.mapNotNull { mode ->
                                toButtonViewModel(mode, isZenMuted)
                            },
                        currentButtonIndex = currentIndex,
                        selectedButton = it,
                        drawerState = drawerState,
@@ -219,7 +239,6 @@ constructor(
                            hintLabelResId = R.string.volume_ringer_hint_unmute,
                            ringerMode = ringerMode,
                        )

                    availableModes.contains(RingerMode(RINGER_MODE_VIBRATE)) ->
                        RingerButtonViewModel(
                            imageResId = R.drawable.ic_speaker_on,
@@ -232,7 +251,6 @@ constructor(
                            hintLabelResId = R.string.volume_ringer_hint_vibrate,
                            ringerMode = ringerMode,
                        )

                    else ->
                        RingerButtonViewModel(
                            imageResId = R.drawable.ic_speaker_on,
@@ -269,17 +287,14 @@ constructor(
                            null
                        }
                    }

                    RINGER_MODE_SILENT ->
                        applicationContext.getString(
                            internalR.string.volume_dialog_ringer_guidance_silent
                        )

                    RINGER_MODE_VIBRATE ->
                        applicationContext.getString(
                            internalR.string.volume_dialog_ringer_guidance_vibrate
                        )

                    else ->
                        applicationContext.getString(
                            internalR.string.volume_dialog_ringer_guidance_vibrate
+46 −0
Original line number Diff line number Diff line
@@ -45,6 +45,52 @@ class VolumeDialogLogger @Inject constructor(@VolumeLog private val logBuffer: L
        )
    }

    fun onVolumeSliderAdjustmentFinished(volume: Int, stream: Int) {
        logBuffer.log(
            TAG,
            LogLevel.DEBUG,
            {
                int1 = volume
                int2 = stream
            },
            { "Volume adjusted: volume=$int1 stream=$int2" },
        )
    }

    fun onVolumeSlidersUpdated(primaryStream: Int, floating: Collection<Int>) {
        logBuffer.log(
            TAG,
            LogLevel.DEBUG,
            {
                int1 = primaryStream
                str1 = floating.joinToString(",") { it.toString() }
            },
            { "Showing streams: primary=$int1 floating=$str1" },
        )
    }

    fun onRingerModeChanged(ringerMode: RingerMode) {
        logBuffer.log(
            TAG,
            LogLevel.DEBUG,
            { int1 = ringerMode.value },
            { "Ringer mode changed to: $int1" },
        )
    }

    fun onRingerDrawerAvailable(modes: List<RingerMode>) {
        logBuffer.log(
            TAG,
            LogLevel.DEBUG,
            { str1 = modes.joinToString(",") { it.value.toString() } },
            { "Ringer drawer available with modes: $str1" },
        )
    }

    fun onRingerDrawerUnavailable() {
        logBuffer.log(TAG, LogLevel.DEBUG, {}, { "Ringer drawer unavailable" })
    }

    fun onCurrentRingerModeIsUnsupported(ringerMode: RingerMode) {
        logBuffer.log(
            TAG,
+10 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import com.android.systemui.volume.dialog.sliders.ui.viewmodel.VolumeDialogSlide
import com.android.systemui.volume.dialog.sliders.ui.viewmodel.VolumeDialogSliderStateModel
import com.android.systemui.volume.dialog.sliders.ui.viewmodel.VolumeDialogSliderViewModel
import com.google.android.material.slider.Slider
import com.google.android.material.slider.Slider.OnSliderTouchListener
import javax.inject.Inject
import kotlin.math.roundToInt
import kotlinx.coroutines.CoroutineScope
@@ -68,6 +69,15 @@ constructor(
        sliderView.addOnChangeListener { _, value, fromUser ->
            viewModel.setStreamVolume(value.roundToInt(), fromUser)
        }
        sliderView.addOnSliderTouchListener(
            object : OnSliderTouchListener {
                override fun onStartTrackingTouch(slider: Slider) {}

                override fun onStopTrackingTouch(slider: Slider) {
                    viewModel.onStreamChangeFinished(slider.value.roundToInt())
                }
            }
        )

        viewModel.isDisabledByZenMode.onEach { sliderView.isEnabled = !it }.launchIn(this)
        viewModel.state
Loading