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

Commit cb11bd45 authored by Darrell Shi's avatar Darrell Shi
Browse files

Update widget spacing for medium screens

For medium screens like foldables, we want compact spacing in landscape
and regular spacing in portrait per design request.

Test: visual; see screenshots in bug
Bug: 427975607
Flag: com.android.systemui.hub_edit_mode_transition
Change-Id: I47bf3d04bf265d1b85740126e4f89f436a1eed8a
parent 3b3aa1d0
Loading
Loading
Loading
Loading
+24 −3
Original line number Diff line number Diff line
@@ -918,6 +918,7 @@ private fun BoxScope.CommunalHubLazyGrid(
    var dragDropState: GridDragDropState? = null
    val arrangementSpacing =
        if (communalResponsiveGrid() && isCompactWindow()) Dimensions.ItemSpacingCompact
        else if (communalResponsiveGrid() && isMediumWindow()) hubDimensions.ItemSpacingMedium
        else Dimensions.ItemSpacing
    val windowSize = WindowSizeUtils.getWindowSizeCategory(LocalContext.current)
    if (viewModel.isEditMode && viewModel is CommunalEditModeViewModel) {
@@ -1963,12 +1964,13 @@ private fun nonScalableTextSize(sizeInDp: Dp) = with(LocalDensity.current) { siz
private fun gridContentPadding(isEditMode: Boolean, toolbarHeight: Dp): PaddingValues {
    if (communalResponsiveGrid() && hubEditModeTransition()) {
        val itemSpacing =
            if (isCompactWindow()) Dimensions.ItemSpacingCompact else Dimensions.ItemSpacing
            if (isCompactWindow()) Dimensions.ItemSpacingCompact
            else if (isMediumWindow()) hubDimensions.ItemSpacingMedium else Dimensions.ItemSpacing
        val editModeTopPadding =
            toolbarPadding().calculateTopPadding() + toolbarHeight + itemSpacing
        // For compact windows, allow the bottom spacing to be minimum so that all items shift
        // down. For large window, use top padding for both vertical directions to ensure items
        // are centered vertically.
        // down. For medium and large windows, use top padding for both vertical directions to
        // ensure items are centered vertically.
        val editModeBottomPadding = if (isCompactWindow()) itemSpacing else editModeTopPadding

        val finalTopPadding: Dp
@@ -2065,6 +2067,16 @@ fun isCompactWindow(): Boolean {
    }
}

/** Medium size in landscape or portrait */
@Composable
private fun isMediumWindow(): Boolean {
    val windowSizeClass = LocalWindowSizeClass.current
    return remember(windowSizeClass) {
        windowSizeClass.widthSizeClass == WindowWidthSizeClass.Medium ||
            windowSizeClass.heightSizeClass == WindowHeightSizeClass.Medium
    }
}

private fun Modifier.toolbarHeight(): Modifier {
    return this.thenIf(hubEditModeTransition()) { Modifier.height(Dimensions.ToolbarHeight) }
}
@@ -2160,6 +2172,15 @@ class Dimensions(val context: Context, val config: Configuration) {
            }
        }

    val ItemSpacingMedium: Dp
        get() {
            return if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
                ItemSpacingCompact
            } else {
                ItemSpacing
            }
        }

    companion object {
        val CardHeightFull
            get() = 530.adjustedDp