diff options
-rw-r--r-- | packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/OverlayShade.kt | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/OverlayShade.kt b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/OverlayShade.kt index 2f1108593d2f..34cc6769eb40 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/OverlayShade.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/OverlayShade.kt @@ -23,9 +23,12 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass import androidx.compose.runtime.Composable import androidx.compose.runtime.ReadOnlyComposable import androidx.compose.runtime.getValue @@ -37,6 +40,8 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.android.compose.animation.scene.ElementKey import com.android.compose.animation.scene.LowestZIndexScenePicker import com.android.compose.animation.scene.SceneScope +import com.android.compose.modifiers.thenIf +import com.android.compose.windowsizeclass.LocalWindowSizeClass import com.android.systemui.keyguard.ui.composable.LockscreenContent import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.shade.ui.viewmodel.OverlayShadeViewModel @@ -54,6 +59,8 @@ fun SceneScope.OverlayShade( content: @Composable () -> Unit, ) { val backgroundScene by viewModel.backgroundScene.collectAsStateWithLifecycle() + val widthSizeClass = LocalWindowSizeClass.current.widthSizeClass + val isPanelFullWidth = widthSizeClass == WindowWidthSizeClass.Compact Box(modifier) { if (backgroundScene == Scenes.Lockscreen) { @@ -66,10 +73,13 @@ fun SceneScope.OverlayShade( Scrim(onClicked = viewModel::onScrimClicked) Row( - modifier = Modifier.fillMaxSize().padding(OverlayShade.Dimensions.ScrimContentPadding), + modifier = + Modifier.fillMaxSize().thenIf(!isPanelFullWidth) { + Modifier.padding(OverlayShade.Dimensions.ScrimContentPadding) + }, horizontalArrangement = horizontalArrangement, ) { - Panel(content = content) + Panel(modifier = Modifier.panelSize(), content = content) } } } @@ -111,6 +121,20 @@ private fun SceneScope.Panel( } } +@Composable +private fun Modifier.panelSize(): Modifier { + val widthSizeClass = LocalWindowSizeClass.current.widthSizeClass + + return this.then( + when (widthSizeClass) { + WindowWidthSizeClass.Compact -> Modifier.fillMaxWidth() + WindowWidthSizeClass.Medium -> Modifier.width(OverlayShade.Dimensions.PanelWidthMedium) + WindowWidthSizeClass.Expanded -> Modifier.width(OverlayShade.Dimensions.PanelWidthLarge) + else -> error("Unsupported WindowWidthSizeClass \"$widthSizeClass\"") + } + ) +} + object OverlayShade { object Elements { val Scrim = ElementKey("OverlayShadeScrim", scenePicker = LowestZIndexScenePicker) @@ -127,6 +151,8 @@ object OverlayShade { object Dimensions { val ScrimContentPadding = 16.dp val PanelCornerRadius = 46.dp + val PanelWidthMedium = 390.dp + val PanelWidthLarge = 474.dp } object Shapes { |