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

Commit dadd7546 authored by Anton Potapov's avatar Anton Potapov Committed by Android (Google) Code Review
Browse files

Merge "Make unmutable sliders icons untappable." into main

parents 041f37e1 c261deb0
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.settingslib.volume.data.repository
import android.media.AudioDeviceInfo
import android.media.AudioManager
import android.media.AudioManager.OnCommunicationDeviceChangedListener
import androidx.concurrent.futures.DirectExecutor
import com.android.internal.util.ConcurrentUtils
import com.android.settingslib.volume.shared.AudioManagerEventsReceiver
import com.android.settingslib.volume.shared.model.AudioManagerEvent
@@ -109,8 +108,8 @@ class AudioRepositoryImpl(
            callbackFlow {
                    val listener = OnCommunicationDeviceChangedListener { trySend(Unit) }
                    audioManager.addOnCommunicationDeviceChangedListener(
                        DirectExecutor.INSTANCE,
                        listener
                        ConcurrentUtils.DIRECT_EXECUTOR,
                        listener,
                    )

                    awaitClose { audioManager.removeOnCommunicationDeviceChangedListener(listener) }
@@ -146,7 +145,7 @@ class AudioRepositoryImpl(
            maxVolume = audioManager.getStreamMaxVolume(audioStream.value),
            volume = audioManager.getStreamVolume(audioStream.value),
            isAffectedByRingerMode = audioManager.isStreamAffectedByRingerMode(audioStream.value),
            isMuted = audioManager.isStreamMute(audioStream.value),
            isMuted = audioManager.isStreamMute(audioStream.value)
        )
    }

+4 −0
Original line number Diff line number Diff line
@@ -66,6 +66,10 @@ class AudioVolumeInteractor(
        }
    }

    fun isMutable(audioStream: AudioStream): Boolean =
        // Alarm stream doesn't support muting
        audioStream.value != AudioManager.STREAM_ALARM

    private suspend fun processVolume(
        audioStreamModel: AudioStreamModel,
        ringerMode: RingerMode,
+37 −12
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.volume.panel.component.volume.ui.composable

import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.foundation.basicMarquee
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.size
import androidx.compose.material3.IconButton
@@ -27,6 +28,7 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.semantics.ProgressBarRangeInfo
@@ -38,6 +40,7 @@ import androidx.compose.ui.semantics.setProgress
import androidx.compose.ui.unit.dp
import com.android.compose.PlatformSlider
import com.android.compose.PlatformSliderColors
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.common.ui.compose.Icon
import com.android.systemui.volume.panel.component.volume.slider.ui.viewmodel.SliderState

@@ -86,18 +89,11 @@ fun VolumeSlider(
                Text(text = state.valueText, color = LocalContentColor.current)
            } else {
                state.icon?.let {
                    IconButton(
                        onClick = onIconTapped,
                        colors =
                            IconButtonColors(
                                contentColor = LocalContentColor.current,
                                containerColor = Color.Transparent,
                                disabledContentColor = LocalContentColor.current,
                                disabledContainerColor = Color.Transparent,
                    SliderIcon(
                        icon = it,
                        onIconTapped = onIconTapped,
                        isTappable = state.isMutable,
                    )
                    ) {
                        Icon(modifier = Modifier.size(24.dp), icon = it)
                    }
                }
            }
        },
@@ -127,3 +123,32 @@ fun VolumeSlider(
        }
    )
}

@Composable
private fun SliderIcon(
    icon: Icon,
    onIconTapped: () -> Unit,
    isTappable: Boolean,
    modifier: Modifier = Modifier
) {
    if (isTappable) {
        IconButton(
            modifier = modifier,
            onClick = onIconTapped,
            colors =
                IconButtonColors(
                    contentColor = LocalContentColor.current,
                    containerColor = Color.Transparent,
                    disabledContentColor = LocalContentColor.current,
                    disabledContainerColor = Color.Transparent,
                ),
            content = { Icon(modifier = Modifier.size(24.dp), icon = icon) },
        )
    } else {
        Box(
            modifier = modifier,
            contentAlignment = Alignment.Center,
            content = { Icon(modifier = Modifier.size(24.dp), icon = icon) },
        )
    }
}
+9 −0
Original line number Diff line number Diff line
@@ -200,6 +200,15 @@ class AudioVolumeInteractorTest : SysuiTestCase() {
        }
    }

    @Test
    fun alarmStream_isNotMutable() {
        with(kosmos) {
            val isMutable = underTest.isMutable(AudioStream(AudioManager.STREAM_ALARM))

            assertThat(isMutable).isFalse()
        }
    }

    private companion object {
        val audioStream = AudioStream(AudioManager.STREAM_SYSTEM)
    }
+2 −0
Original line number Diff line number Diff line
@@ -116,6 +116,7 @@ constructor(
            isEnabled = isEnabled,
            a11yStep = volumeRange.step,
            audioStreamModel = this,
            isMutable = audioVolumeInteractor.isMutable(audioStream),
        )
    }

@@ -160,6 +161,7 @@ constructor(
        override val disabledMessage: String?,
        override val isEnabled: Boolean,
        override val a11yStep: Int,
        override val isMutable: Boolean,
        val audioStreamModel: AudioStreamModel,
    ) : SliderState

Loading