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

Commit 748cafcb authored by Bryce Lee's avatar Bryce Lee Committed by Android (Google) Code Review
Browse files

Merge "Center Glanceable Hub in Portrait Mode." into main

parents 0cf1ecf1 48daeaa0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@ import com.android.systemui.Flags.glanceableHubBackGesture
import com.android.systemui.communal.shared.model.CommunalBackgroundType
import com.android.systemui.communal.shared.model.CommunalScenes
import com.android.systemui.communal.shared.model.CommunalTransitionKeys
import com.android.systemui.communal.ui.compose.Dimensions.SlideOffsetY
import com.android.systemui.communal.ui.compose.Dimensions.Companion.SlideOffsetY
import com.android.systemui.communal.ui.compose.extensions.allowGestures
import com.android.systemui.communal.ui.viewmodel.CommunalViewModel
import com.android.systemui.communal.util.CommunalColors
+50 −26
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.systemui.communal.ui.compose

import android.content.Context
import android.content.res.Configuration
import android.graphics.drawable.Icon
import android.os.Bundle
import android.util.SizeF
@@ -116,6 +118,7 @@ import androidx.compose.ui.layout.boundsInWindow
import androidx.compose.ui.layout.onGloballyPositioned
import androidx.compose.ui.layout.onSizeChanged
import androidx.compose.ui.layout.positionInWindow
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.testTag
@@ -129,6 +132,7 @@ import androidx.compose.ui.semantics.onClick
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTagsAsResourceId
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.Density
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.IntSize
import androidx.compose.ui.unit.LayoutDirection
@@ -388,6 +392,10 @@ fun CommunalHub(
    }
}

val hubDimensions: Dimensions
    @Composable
    get() = Dimensions(LocalContext.current, LocalConfiguration.current, LocalDensity.current)

@Composable
private fun DisclaimerBottomSheetContent(onButtonClicked: () -> Unit) {
    val colors = LocalAndroidColorScheme.current
@@ -517,7 +525,7 @@ private fun BoxScope.CommunalHubLazyGrid(
        // for android drag events.
        Box(Modifier.fillMaxSize().dragAndDropTarget(dragAndDropTargetState)) {}
    } else {
        gridModifier = gridModifier.height(Dimensions.GridHeight)
        gridModifier = gridModifier.height(hubDimensions.GridHeight)
    }

    LazyHorizontalGrid(
@@ -595,7 +603,7 @@ private fun EmptyStateCta(
) {
    val colors = LocalAndroidColorScheme.current
    Card(
        modifier = Modifier.height(Dimensions.GridHeight).padding(contentPadding),
        modifier = Modifier.height(hubDimensions.GridHeight).padding(contentPadding),
        colors = CardDefaults.cardColors(containerColor = Color.Transparent),
        border = BorderStroke(3.dp, colors.secondary),
        shape = RoundedCornerShape(size = 80.dp)
@@ -1280,7 +1288,7 @@ private fun gridContentPadding(isEditMode: Boolean, toolbarSize: IntSize?): Padd
        return PaddingValues(
            start = Dimensions.ItemSpacing,
            end = Dimensions.ItemSpacing,
            top = Dimensions.GridTopSpacing,
            top = hubDimensions.GridTopSpacing,
        )
    }
    val context = LocalContext.current
@@ -1289,7 +1297,8 @@ private fun gridContentPadding(isEditMode: Boolean, toolbarSize: IntSize?): Padd
    val screenHeight = with(density) { windowMetrics.bounds.height().toDp() }
    val toolbarHeight = with(density) { Dimensions.ToolbarPaddingTop + toolbarSize.height.toDp() }
    val verticalPadding =
        ((screenHeight - toolbarHeight - Dimensions.GridHeight + Dimensions.GridTopSpacing) / 2)
        ((screenHeight - toolbarHeight - hubDimensions.GridHeight + hubDimensions.GridTopSpacing) /
                2)
            .coerceAtLeast(Dimensions.Spacing)
    return PaddingValues(
        start = Dimensions.ToolbarPaddingHorizontal,
@@ -1345,10 +1354,24 @@ data class ContentPaddingInPx(val start: Float, val top: Float) {
    fun toOffset(): Offset = Offset(start, top)
}

object Dimensions {
    val CardHeightFull = 530.dp
    val GridTopSpacing = 114.dp
class Dimensions(val context: Context, val config: Configuration, val density: Density) {
    val GridTopSpacing: Dp
        get() {
            if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
                return 114.dp
            } else {
                val windowMetrics =
                    WindowMetricsCalculator.getOrCreate().computeCurrentWindowMetrics(context)
                val screenHeight = with(density) { windowMetrics.bounds.height().toDp() }

                return (screenHeight - CardHeightFull) / 2
            }
        }

    val GridHeight = CardHeightFull + GridTopSpacing

    companion object {
        val CardHeightFull = 530.dp
        val ItemSpacing = 50.dp
        val CardHeightHalf = (CardHeightFull - ItemSpacing) / 2
        val CardHeightThird = (CardHeightFull - (2 * ItemSpacing)) / 3
@@ -1369,6 +1392,7 @@ object Dimensions {
        val IconSize = 40.dp
        val SlideOffsetY = 30.dp
    }
}

private object Colors {
    val DisabledColorFilter by lazy { disabledColorMatrix() }