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

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

Merge "Fix mediaOffset for QQS flexiglass" into main

parents a8ef5dda 90b93d50
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -29,6 +29,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.drawWithContent
import androidx.compose.ui.layout.layout
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import androidx.compose.ui.viewinterop.AndroidView
import androidx.lifecycle.compose.collectAsStateWithLifecycle
@@ -45,6 +47,7 @@ import com.android.systemui.qs.ui.adapter.QSSceneAdapter.State.Companion.Collaps
import com.android.systemui.qs.ui.adapter.QSSceneAdapter.State.Expanding
import com.android.systemui.qs.ui.adapter.QSSceneAdapter.State.UnsquishingQQS
import com.android.systemui.qs.ui.adapter.QSSceneAdapter.State.UnsquishingQS
import com.android.systemui.res.R
import com.android.systemui.scene.shared.model.Scenes

object QuickSettings {
@@ -73,10 +76,21 @@ object QuickSettings {
        val MediaLandscapeTopOffset = ValueKey("MediaLandscapeTopOffset")

        object MediaOffset {
            val InQQS = 0.dp
            // Brightness + padding
            val InQS = 92.dp
            val Default = 0.dp

            @Composable
            fun inQqs(isMediaInRow: Boolean): Dp {
                return if (isMediaInRow) {
                    // Tiles are laid out in a center of a container, that has this
                    // margin on the bottom. This compensates this margin, so that the Media
                    // Carousel can be properly centered
                    -dimensionResource(id = R.dimen.qqs_layout_padding_bottom) / 2
                } else {
                    0.dp
                }
            }
        }
    }
}
+6 −3
Original line number Diff line number Diff line
@@ -69,7 +69,7 @@ import com.android.compose.animation.scene.NestedScrollBehavior
import com.android.compose.animation.scene.SceneScope
import com.android.compose.animation.scene.UserAction
import com.android.compose.animation.scene.UserActionResult
import com.android.compose.animation.scene.animateSceneDpAsState
import com.android.compose.animation.scene.animateContentDpAsState
import com.android.compose.animation.scene.animateSceneFloatAsState
import com.android.compose.animation.scene.content.state.TransitionState
import com.android.compose.modifiers.padding
@@ -100,7 +100,6 @@ import com.android.systemui.qs.footer.ui.compose.FooterActionsWithAnimatedVisibi
import com.android.systemui.qs.ui.composable.BrightnessMirror
import com.android.systemui.qs.ui.composable.QuickSettings
import com.android.systemui.qs.ui.composable.QuickSettings.SharedValues.MediaLandscapeTopOffset
import com.android.systemui.qs.ui.composable.QuickSettings.SharedValues.MediaOffset.InQQS
import com.android.systemui.res.R
import com.android.systemui.scene.session.ui.composable.SaveableSession
import com.android.systemui.scene.shared.model.Scenes
@@ -291,7 +290,11 @@ private fun SceneScope.SingleShade(
    // Media is visible and we are in landscape on a small height screen
    val mediaInRow = isMediaVisible && isLandscape()
    val mediaOffset by
        animateSceneDpAsState(value = InQQS, key = MediaLandscapeTopOffset, canOverflow = false)
        animateContentDpAsState(
            value = QuickSettings.SharedValues.MediaOffset.inQqs(mediaInRow),
            key = MediaLandscapeTopOffset,
            canOverflow = false,
        )

    val navBarHeight = WindowInsets.systemBars.asPaddingValues().calculateBottomPadding()

+22 −13
Original line number Diff line number Diff line
@@ -90,14 +90,23 @@ class SingleShadeMeasurePolicy(
                y = insetsTop + shadeHeaderPlaceable.height,
            )

            if (mediaPlaceable != null)
                if (isMediaInRow) {
                mediaPlaceable?.placeRelative(
                    // mediaPlaceable height ranges from 0 to qsHeight. We want it to be centered
                    // vertically when it's smaller than the QS
                    val mediaCenteringOffset =
                        (quickSettingsPlaceable.height - mediaPlaceable.height) / 2
                    mediaPlaceable.placeRelative(
                        x = insetsLeft + constraintsWithCutout.maxWidth / 2,
                    y = mediaOffset() + insetsTop + shadeHeaderPlaceable.height,
                        y =
                            insetsTop +
                                shadeHeaderPlaceable.height +
                                mediaCenteringOffset +
                                mediaOffset(),
                        zIndex = mediaZIndex(),
                    )
                } else {
                mediaPlaceable?.placeRelative(
                    mediaPlaceable.placeRelative(
                        x = insetsLeft,
                        y = insetsTop + shadeHeaderPlaceable.height + quickSettingsPlaceable.height,
                        zIndex = mediaZIndex(),