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

Commit c0e96e64 authored by Anton Potapov's avatar Anton Potapov
Browse files

Make volume sliders scroll when the panel uses horizontal layout

 - remove expanding when using horizontal layout;
 - fix max vertical height;

Flag: aconfig new_volume_panel STAGING
Test: vertical and portrait on phone and tablet
Fixes: 326897352
Change-Id: I1f2c86535924d61d35ee4bf7afcb2765a9ecc9f1
parent 9327855e
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -36,6 +36,8 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.IconButtonDefaults
@@ -66,9 +68,9 @@ fun ColumnVolumeSliders(
    modifier: Modifier = Modifier,
) {
    require(viewModels.isNotEmpty())
    var isExpanded: Boolean by remember { mutableStateOf(false) }
    var isExpanded: Boolean by remember(isExpandable) { mutableStateOf(!isExpandable) }
    val transition = updateTransition(isExpanded, label = "CollapsableSliders")
    Column(modifier = modifier) {
    Column(modifier = modifier.verticalScroll(rememberScrollState())) {
        Row(
            modifier = Modifier.fillMaxWidth(),
            horizontalArrangement = Arrangement.spacedBy(8.dp),
+2 −1
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import com.android.systemui.volume.panel.component.volume.slider.ui.viewmodel.Sl
import com.android.systemui.volume.panel.component.volume.ui.viewmodel.AudioVolumeComponentViewModel
import com.android.systemui.volume.panel.ui.composable.ComposeVolumePanelUiComponent
import com.android.systemui.volume.panel.ui.composable.VolumePanelComposeScope
import com.android.systemui.volume.panel.ui.composable.isPortrait
import javax.inject.Inject

class VolumeSlidersComponent
@@ -50,7 +51,7 @@ constructor(
            ColumnVolumeSliders(
                viewModels = sliderViewModels,
                sliderColors = PlatformSliderDefaults.defaultPlatformSliderColors(),
                isExpandable = true,
                isExpandable = isPortrait,
                modifier = modifier.fillMaxWidth(),
            )
        }
+1 −2
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@@ -56,7 +55,7 @@ fun VolumePanelComposeScope.HorizontalVolumePanelContent(
                }
            }
            Row(
                modifier = Modifier.fillMaxWidth().wrapContentHeight(),
                modifier = Modifier.fillMaxWidth(),
                horizontalArrangement = Arrangement.spacedBy(spacing),
            ) {
                for (component in layout.footerComponents) {
+17 −9
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.systemui.volume.panel.ui.composable

import android.content.res.Configuration
import androidx.compose.foundation.clickable
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.Arrangement
@@ -111,15 +110,24 @@ private fun VolumePanelComposeScope.Components(
    layout: ComponentsLayout,
    modifier: Modifier = Modifier
) {
    var columnModifier = modifier.widthIn(max = 800.dp)
    if (!isLargeScreen && orientation != Configuration.ORIENTATION_PORTRAIT) {
        columnModifier = columnModifier.heightIn(max = 332.dp)
    val arrangement =
        if (isLargeScreen) {
            Arrangement.spacedBy(20.dp)
        } else {
            if (isPortrait) Arrangement.spacedBy(padding) else Arrangement.spacedBy(4.dp)
        }
    Column(modifier = columnModifier, verticalArrangement = Arrangement.spacedBy(padding)) {
        if (orientation == Configuration.ORIENTATION_PORTRAIT || isLargeScreen) {
            VerticalVolumePanelContent(layout)
    Column(
        modifier = modifier.widthIn(max = 800.dp),
        verticalArrangement = arrangement,
    ) {
        val contentModifier = Modifier
        if (isPortrait || isLargeScreen) {
            VerticalVolumePanelContent(modifier = contentModifier, layout = layout)
        } else {
            HorizontalVolumePanelContent(layout)
            HorizontalVolumePanelContent(
                modifier = contentModifier.heightIn(max = 212.dp),
                layout = layout
            )
        }
        BottomBar(layout = layout, modifier = Modifier)
    }