diff options
7 files changed, 45 insertions, 53 deletions
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt index dbf6cd3c9f4f..e433d32e350b 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt @@ -50,30 +50,22 @@ val SceneContainerTransitions = transitions { from(Scenes.Gone, to = Scenes.NotificationsShade, key = OpenBottomShade) { goneToNotificationsShadeTransition(Edge.Bottom) } - from(Scenes.Gone, to = Scenes.Shade) { goneToShadeTransition() } - from( - Scenes.Gone, - to = Scenes.Shade, - key = ToSplitShade, - ) { - goneToSplitShadeTransition() + from(Scenes.Gone, to = Scenes.QuickSettingsShade) { + goneToQuickSettingsShadeTransition(Edge.Top) + } + from(Scenes.Gone, to = Scenes.QuickSettingsShade, key = OpenBottomShade) { + goneToQuickSettingsShadeTransition(Edge.Bottom) } - from( - Scenes.Gone, - to = Scenes.Shade, - key = SlightlyFasterShadeCollapse, - ) { + from(Scenes.Gone, to = Scenes.Shade) { goneToShadeTransition() } + from(Scenes.Gone, to = Scenes.Shade, key = ToSplitShade) { goneToSplitShadeTransition() } + from(Scenes.Gone, to = Scenes.Shade, key = SlightlyFasterShadeCollapse) { goneToShadeTransition(durationScale = 0.9) } from(Scenes.Gone, to = Scenes.QuickSettings) { goneToQuickSettingsTransition() } - from( - Scenes.Gone, - to = Scenes.QuickSettings, - key = SlightlyFasterShadeCollapse, - ) { + from(Scenes.Gone, to = Scenes.QuickSettings, key = SlightlyFasterShadeCollapse) { goneToQuickSettingsTransition(durationScale = 0.9) } - from(Scenes.Gone, to = Scenes.QuickSettingsShade) { goneToQuickSettingsShadeTransition() } + from(Scenes.Lockscreen, to = Scenes.Bouncer) { lockscreenToBouncerTransition() } from(Scenes.Lockscreen, to = Scenes.Communal) { lockscreenToCommunalTransition() } from(Scenes.Lockscreen, to = Scenes.NotificationsShade) { @@ -83,18 +75,10 @@ val SceneContainerTransitions = transitions { lockscreenToQuickSettingsShadeTransition() } from(Scenes.Lockscreen, to = Scenes.Shade) { lockscreenToShadeTransition() } - from( - Scenes.Lockscreen, - to = Scenes.Shade, - key = ToSplitShade, - ) { + from(Scenes.Lockscreen, to = Scenes.Shade, key = ToSplitShade) { lockscreenToSplitShadeTransition() } - from( - Scenes.Lockscreen, - to = Scenes.Shade, - key = SlightlyFasterShadeCollapse, - ) { + from(Scenes.Lockscreen, to = Scenes.Shade, key = SlightlyFasterShadeCollapse) { lockscreenToShadeTransition(durationScale = 0.9) } from(Scenes.Lockscreen, to = Scenes.QuickSettings) { lockscreenToQuickSettingsTransition() } diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromGoneToQuickSettingsShadeTransition.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromGoneToQuickSettingsShadeTransition.kt index 225ca4ebdb91..8a03e29e6377 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromGoneToQuickSettingsShadeTransition.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromGoneToQuickSettingsShadeTransition.kt @@ -16,10 +16,12 @@ package com.android.systemui.scene.ui.composable.transitions +import com.android.compose.animation.scene.Edge import com.android.compose.animation.scene.TransitionBuilder fun TransitionBuilder.goneToQuickSettingsShadeTransition( + edge: Edge = Edge.Top, durationScale: Double = 1.0, ) { - toQuickSettingsShadeTransition(durationScale) + toQuickSettingsShadeTransition(edge, durationScale) } diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromLockscreenToQuickSettingsShadeTransition.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromLockscreenToQuickSettingsShadeTransition.kt index ce24f5ed6592..19aa3a7197d2 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromLockscreenToQuickSettingsShadeTransition.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromLockscreenToQuickSettingsShadeTransition.kt @@ -16,10 +16,11 @@ package com.android.systemui.scene.ui.composable.transitions +import com.android.compose.animation.scene.Edge import com.android.compose.animation.scene.TransitionBuilder fun TransitionBuilder.lockscreenToQuickSettingsShadeTransition( durationScale: Double = 1.0, ) { - toQuickSettingsShadeTransition(durationScale) + toQuickSettingsShadeTransition(Edge.Top, durationScale) } diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/ToQuickSettingsShadeTransition.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/ToQuickSettingsShadeTransition.kt index ec2f14f34dba..9d13647bc43f 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/ToQuickSettingsShadeTransition.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/ToQuickSettingsShadeTransition.kt @@ -19,17 +19,15 @@ package com.android.systemui.scene.ui.composable.transitions import androidx.compose.animation.core.Spring import androidx.compose.animation.core.spring import androidx.compose.animation.core.tween -import androidx.compose.foundation.gestures.Orientation -import androidx.compose.ui.unit.IntSize import com.android.compose.animation.scene.Edge import com.android.compose.animation.scene.TransitionBuilder import com.android.compose.animation.scene.UserActionDistance -import com.android.compose.animation.scene.UserActionDistanceScope import com.android.systemui.shade.ui.composable.OverlayShade import com.android.systemui.shade.ui.composable.Shade import kotlin.time.Duration.Companion.milliseconds fun TransitionBuilder.toQuickSettingsShadeTransition( + edge: Edge = Edge.Top, durationScale: Double = 1.0, ) { spec = tween(durationMillis = (DefaultDuration * durationScale).inWholeMilliseconds.toInt()) @@ -38,17 +36,9 @@ fun TransitionBuilder.toQuickSettingsShadeTransition( stiffness = Spring.StiffnessMediumLow, visibilityThreshold = Shade.Dimensions.ScrimVisibilityThreshold, ) - distance = - object : UserActionDistance { - override fun UserActionDistanceScope.absoluteDistance( - fromSceneSize: IntSize, - orientation: Orientation, - ): Float { - return fromSceneSize.height.toFloat() * 2 / 3f - } - } + distance = UserActionDistance { fromSceneSize, _ -> fromSceneSize.height.toFloat() * 2 / 3f } - translate(OverlayShade.Elements.Panel, Edge.Top) + translate(OverlayShade.Elements.Panel, edge) fractionRange(end = .5f) { fade(OverlayShade.Elements.Scrim) } } diff --git a/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/GoneSceneViewModel.kt b/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/GoneSceneViewModel.kt index ac913375dc9d..9f48ee9e5ecb 100644 --- a/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/GoneSceneViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/GoneSceneViewModel.kt @@ -64,14 +64,25 @@ constructor( // TODO(b/338577208): Remove this once we add Dual Shade invocation zones. shadeMode is ShadeMode.Dual ) { - put( - Swipe( - pointerCount = 2, - fromSource = Edge.Top, - direction = SwipeDirection.Down, - ), - UserActionResult(SceneFamilies.QuickSettings) - ) + if (shadeInteractor.shadeAlignment == Alignment.BottomEnd) { + put( + Swipe( + pointerCount = 2, + fromSource = Edge.Bottom, + direction = SwipeDirection.Up, + ), + UserActionResult(SceneFamilies.QuickSettings, OpenBottomShade) + ) + } else { + put( + Swipe( + pointerCount = 2, + fromSource = Edge.Top, + direction = SwipeDirection.Down, + ), + UserActionResult(SceneFamilies.QuickSettings) + ) + } } if (shadeInteractor.shadeAlignment == Alignment.BottomEnd) { diff --git a/packages/SystemUI/src/com/android/systemui/shade/ShadeControllerSceneImpl.kt b/packages/SystemUI/src/com/android/systemui/shade/ShadeControllerSceneImpl.kt index ee8161c67c73..ce321dcc03fd 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/ShadeControllerSceneImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/shade/ShadeControllerSceneImpl.kt @@ -182,7 +182,11 @@ constructor( } override fun expandToQs() { - sceneInteractor.changeScene(SceneFamilies.QuickSettings, "ShadeController.animateExpandQs") + sceneInteractor.changeScene( + SceneFamilies.QuickSettings, + "ShadeController.animateExpandQs", + OpenBottomShade.takeIf { shadeInteractor.shadeAlignment == Alignment.BottomEnd } + ) } override fun setVisibilityListener(listener: ShadeVisibilityListener) { diff --git a/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/OverlayShadeViewModel.kt b/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/OverlayShadeViewModel.kt index b94612982b23..6551854dcb36 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/OverlayShadeViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/OverlayShadeViewModel.kt @@ -51,7 +51,7 @@ constructor( initialValue = Scenes.Lockscreen, ) - /** Dictates whether the panel is aligned to the top or the bottom. */ + /** Dictates the alignment of the overlay shade panel on the screen. */ val panelAlignment = shadeInteractor.shadeAlignment /** Notifies that the user has clicked the semi-transparent background scrim. */ |