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

Commit 042947a7 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add Volume Dialog logs" into main

parents 1ae13332 3b0dae5a
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