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

Commit 37c6d36c authored by Ale Nijamkin's avatar Ale Nijamkin Committed by Android (Google) Code Review
Browse files

Merge "[Flexiglass] Remove NotificationScrollingStack from QuickSettingsScene" into main

parents e38cdc92 c8482117
Loading
Loading
Loading
Loading
+0 −38
Original line number Diff line number Diff line
@@ -31,7 +31,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.offset
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.overscroll
@@ -52,7 +51,6 @@ import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.unit.IntOffset
import androidx.compose.ui.unit.dp
import com.android.compose.animation.scene.ContentScope
import com.android.compose.animation.scene.UserAction
@@ -61,7 +59,6 @@ import com.android.compose.animation.scene.animateContentFloatAsState
import com.android.compose.animation.scene.content.state.TransitionState
import com.android.compose.modifiers.thenIf
import com.android.compose.windowsizeclass.LocalWindowSizeClass
import com.android.internal.jank.InteractionJankMonitor
import com.android.systemui.brightness.ui.compose.BrightnessSliderContainer
import com.android.systemui.brightness.ui.compose.ContainerColors
import com.android.systemui.common.ui.compose.windowinsets.CutoutLocation
@@ -74,7 +71,6 @@ import com.android.systemui.media.controls.ui.composable.isLandscape
import com.android.systemui.media.remedia.ui.compose.Media
import com.android.systemui.media.remedia.ui.compose.MediaPresentationStyle
import com.android.systemui.notifications.ui.composable.HeadsUpNotificationSpace
import com.android.systemui.notifications.ui.composable.NotificationScrollingStack
import com.android.systemui.qs.composefragment.ui.GridAnchor
import com.android.systemui.qs.footer.ui.compose.FooterActionsWithAnimatedVisibility
import com.android.systemui.qs.panels.ui.compose.TileGrid
@@ -83,7 +79,6 @@ import com.android.systemui.qs.ui.viewmodel.QuickSettingsContainerViewModel
import com.android.systemui.qs.ui.viewmodel.QuickSettingsSceneContentViewModel
import com.android.systemui.qs.ui.viewmodel.QuickSettingsUserActionsViewModel
import com.android.systemui.res.R
import com.android.systemui.scene.session.ui.composable.SaveableSession
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.ui.composable.Scene
import com.android.systemui.shade.ui.composable.CollapsedShadeHeader
@@ -94,7 +89,6 @@ import com.android.systemui.statusbar.notification.stack.ui.view.NotificationScr
import com.android.systemui.statusbar.notification.stack.ui.viewmodel.NotificationsPlaceholderViewModel
import dagger.Lazy
import javax.inject.Inject
import kotlin.math.roundToInt
import kotlinx.coroutines.flow.Flow

/** The Quick Settings (AKA "QS") scene shows the quick setting tiles. */
@@ -102,12 +96,10 @@ import kotlinx.coroutines.flow.Flow
class QuickSettingsScene
@Inject
constructor(
    private val shadeSession: SaveableSession,
    private val notificationStackScrollView: Lazy<NotificationScrollView>,
    private val notificationsPlaceholderViewModelFactory: NotificationsPlaceholderViewModel.Factory,
    private val actionsViewModelFactory: QuickSettingsUserActionsViewModel.Factory,
    private val contentViewModelFactory: QuickSettingsSceneContentViewModel.Factory,
    private val jankMonitor: InteractionJankMonitor,
) : ExclusiveActivatable(), Scene {
    override val key = Scenes.QuickSettings

@@ -137,8 +129,6 @@ constructor(
            headerViewModel = viewModel.qsContainerViewModel.shadeHeaderViewModel,
            notificationsPlaceholderViewModel = notificationsPlaceholderViewModel,
            modifier = modifier,
            shadeSession = shadeSession,
            jankMonitor = jankMonitor,
        )
    }
}
@@ -150,8 +140,6 @@ private fun ContentScope.QuickSettingsScene(
    headerViewModel: ShadeHeaderViewModel,
    notificationsPlaceholderViewModel: NotificationsPlaceholderViewModel,
    modifier: Modifier = Modifier,
    shadeSession: SaveableSession,
    jankMonitor: InteractionJankMonitor,
) {
    val cutoutLocation = LocalDisplayCutout.current().location
    val brightnessMirrorShowing =
@@ -323,32 +311,6 @@ private fun ContentScope.QuickSettingsScene(
                    .navigationBarsPadding()
                    .padding(horizontal = shadeHorizontalPadding),
        )

        // The minimum possible value for the top of the notification stack. In other words: how
        // high is the notification stack allowed to get when the scene is at rest. It may still be
        // translated farther upwards by a transition animation but, at rest, the top edge of its
        // bounds must be limited to be at or below this value.
        //
        // A 1 pixel is added to compensate for any kind of rounding errors to make sure 100% that
        // the notification stack is entirely "below" the entire screen.
        val minNotificationStackTop = screenHeight.roundToInt() + 1
        val notificationStackPadding = dimensionResource(id = R.dimen.notification_side_paddings)
        NotificationScrollingStack(
            shadeSession = shadeSession,
            stackScrollView = notificationStackScrollView,
            viewModel = notificationsPlaceholderViewModel,
            jankMonitor = jankMonitor,
            maxScrimTop = { minNotificationStackTop.toFloat() },
            shouldPunchHoleBehindScrim = shouldPunchHoleBehindScrim,
            stackTopPadding = notificationStackPadding,
            stackBottomPadding = navBarBottomHeight,
            shouldIncludeHeadsUpSpace = false,
            supportNestedScrolling = true,
            modifier =
                Modifier.fillMaxWidth()
                    .offset { IntOffset(x = 0, y = minNotificationStackTop) }
                    .padding(horizontal = shadeHorizontalPadding),
        )
    }
}

+5 −4
Original line number Diff line number Diff line
@@ -19,8 +19,8 @@ package com.android.systemui.scene.ui.composable.transitions
import androidx.compose.animation.core.tween
import com.android.compose.animation.scene.Edge
import com.android.compose.animation.scene.TransitionBuilder
import com.android.systemui.notifications.ui.composable.Notifications
import com.android.systemui.qs.ui.composable.QuickSettings
import com.android.systemui.qs.shared.ui.ElementKeys
import com.android.systemui.shade.ui.composable.Shade
import com.android.systemui.shade.ui.composable.ShadeHeader
import kotlin.time.Duration.Companion.milliseconds

@@ -34,15 +34,16 @@ fun TransitionBuilder.toQuickSettingsTransition(durationScale: Double = 1.0) {
    )
    translate(ShadeHeader.Elements.Clock, y = -translationY)
    translate(ShadeHeader.Elements.ShadeCarrierGroup, y = -translationY)
    translate(ElementKeys.QuickSettingsContent, Edge.Top, false)

    fractionRange(start = .58f) {
        fade(ElementKeys.QuickSettingsContent)
        fade(ShadeHeader.Elements.ExpandedContent)
        fade(ShadeHeader.Elements.Clock)
        fade(ShadeHeader.Elements.ShadeCarrierGroup)
    }

    translate(QuickSettings.Elements.Content, y = -ShadeHeader.Dimensions.ExpandedHeight * .66f)
    translate(Notifications.Elements.NotificationScrim, Edge.Top, false)
    fractionRange(end = .58f) { fade(Shade.Elements.BackgroundScrim) }
}

private val DefaultDuration = 500.milliseconds
+0 −3
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ import com.android.compose.theme.PlatformTheme
import com.android.systemui.SysuiTestCase
import com.android.systemui.compose.modifiers.resIdToTestTag
import com.android.systemui.flags.EnableSceneContainer
import com.android.systemui.jank.interactionJankMonitor
import com.android.systemui.qs.composefragment.dagger.usingMediaInComposeFragment
import com.android.systemui.qs.ui.viewmodel.quickSettingsSceneContentViewModelFactory
import com.android.systemui.qs.ui.viewmodel.quickSettingsUserActionsViewModelFactory
@@ -75,13 +74,11 @@ class QuickSettingsSceneTest : SysuiTestCase() {

        val scene =
            QuickSettingsScene(
                shadeSession = shadeSession,
                notificationStackScrollView = { mock(NotificationScrollView::class.java) },
                notificationsPlaceholderViewModelFactory =
                    kosmos.notificationsPlaceholderViewModelFactory,
                actionsViewModelFactory = kosmos.quickSettingsUserActionsViewModelFactory,
                contentViewModelFactory = kosmos.quickSettingsSceneContentViewModelFactory,
                jankMonitor = kosmos.interactionJankMonitor,
            )

        composeTestRule.setContent {