Loading packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt +2 −14 Original line number Diff line number Diff line package com.android.systemui.scene.ui.composable import androidx.compose.foundation.gestures.Orientation import com.android.compose.animation.scene.Edge import com.android.compose.animation.scene.ProgressConverter import com.android.compose.animation.scene.transitions import com.android.systemui.bouncer.ui.composable.Bouncer import com.android.systemui.notifications.ui.composable.Notifications import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.TransitionKeys.OpenBottomShade import com.android.systemui.scene.shared.model.TransitionKeys.SlightlyFasterShadeCollapse import com.android.systemui.scene.shared.model.TransitionKeys.ToSplitShade import com.android.systemui.scene.ui.composable.transitions.bouncerToGoneTransition Loading Loading @@ -48,18 +46,8 @@ val SceneContainerTransitions = transitions { // Scene transitions from(Scenes.Bouncer, to = Scenes.Gone) { bouncerToGoneTransition() } from(Scenes.Gone, to = Scenes.NotificationsShade) { goneToNotificationsShadeTransition(Edge.Top) } from(Scenes.Gone, to = Scenes.NotificationsShade, key = OpenBottomShade) { goneToNotificationsShadeTransition(Edge.Bottom) } 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.NotificationsShade) { goneToNotificationsShadeTransition() } from(Scenes.Gone, to = Scenes.QuickSettingsShade) { goneToQuickSettingsShadeTransition() } from(Scenes.Gone, to = Scenes.Shade) { goneToShadeTransition() } from(Scenes.Gone, to = Scenes.Shade, key = ToSplitShade) { goneToSplitShadeTransition() } from(Scenes.Gone, to = Scenes.Shade, key = SlightlyFasterShadeCollapse) { Loading packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromGoneToNotificationsShadeTransition.kt +1 −3 Original line number Diff line number Diff line Loading @@ -16,12 +16,10 @@ package com.android.systemui.scene.ui.composable.transitions import com.android.compose.animation.scene.Edge import com.android.compose.animation.scene.TransitionBuilder fun TransitionBuilder.goneToNotificationsShadeTransition( edge: Edge = Edge.Top, durationScale: Double = 1.0, ) { toNotificationsShadeTransition(edge, durationScale) toNotificationsShadeTransition(durationScale) } packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/ToNotificationsShadeTransition.kt +4 −18 Original line number Diff line number Diff line Loading @@ -19,12 +19,9 @@ 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.notifications.ui.composable.Notifications import com.android.systemui.shade.ui.composable.OverlayShade import com.android.systemui.shade.ui.composable.Shade Loading @@ -32,11 +29,6 @@ import com.android.systemui.shade.ui.composable.ShadeHeader import kotlin.time.Duration.Companion.milliseconds fun TransitionBuilder.toNotificationsShadeTransition( /** * The edge where the shade will animate from. This is statically determined (i.e. doesn't * change during runtime). */ edge: Edge = Edge.Top, durationScale: Double = 1.0, ) { spec = tween(durationMillis = (DefaultDuration * durationScale).inWholeMilliseconds.toInt()) Loading @@ -45,17 +37,11 @@ fun TransitionBuilder.toNotificationsShadeTransition( 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, orientation -> fromSceneSize.height.toFloat() * 2 / 3f } translate(OverlayShade.Elements.Panel, edge) translate(OverlayShade.Elements.Panel, Edge.Top) fractionRange(end = .5f) { fade(OverlayShade.Elements.Scrim) } Loading packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/OverlayShade.kt +1 −7 Original line number Diff line number Diff line Loading @@ -55,7 +55,6 @@ import com.android.compose.windowsizeclass.LocalWindowSizeClass import com.android.systemui.keyguard.ui.composable.LockscreenContent import com.android.systemui.lifecycle.rememberViewModel import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.shade.shared.model.ShadeAlignment import com.android.systemui.shade.ui.viewmodel.OverlayShadeViewModel import com.android.systemui.util.kotlin.getOrNull import dagger.Lazy Loading Loading @@ -84,12 +83,7 @@ fun SceneScope.OverlayShade( Box( modifier = Modifier.fillMaxSize().panelPadding(), contentAlignment = if (viewModel.panelAlignment == ShadeAlignment.Top) { Alignment.TopEnd } else { Alignment.BottomEnd }, contentAlignment = Alignment.TopEnd, ) { Panel( modifier = Modifier.element(OverlayShade.Elements.Panel).panelSize(), Loading packages/SystemUI/multivalentTests/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayActionsViewModelTest.kt +2 −17 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.kosmos.testScope import com.android.systemui.lifecycle.activateIn import com.android.systemui.scene.shared.model.Overlays import com.android.systemui.shade.data.repository.fakeShadeRepository import com.android.systemui.shade.ui.viewmodel.notificationsShadeOverlayActionsViewModel import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat Loading @@ -44,15 +43,13 @@ class NotificationsShadeOverlayActionsViewModelTest : SysuiTestCase() { private val kosmos = testKosmos() private val testScope = kosmos.testScope private val fakeShadeRepository by lazy { kosmos.fakeShadeRepository } private val underTest by lazy { kosmos.notificationsShadeOverlayActionsViewModel } private val underTest = kosmos.notificationsShadeOverlayActionsViewModel @Test fun upTransitionSceneKey_topAligned_hidesShade() = fun upTransitionSceneKey_hidesShade() = testScope.runTest { val actions by collectLastValue(underTest.actions) fakeShadeRepository.setDualShadeAlignedToBottom(false) underTest.activateIn(this) assertThat((actions?.get(Swipe.Up) as? UserActionResult.HideOverlay)?.overlay) Loading @@ -60,18 +57,6 @@ class NotificationsShadeOverlayActionsViewModelTest : SysuiTestCase() { assertThat(actions?.get(Swipe.Down)).isNull() } @Test fun upTransitionSceneKey_bottomAligned_doesNothing() = testScope.runTest { val actions by collectLastValue(underTest.actions) fakeShadeRepository.setDualShadeAlignedToBottom(true) underTest.activateIn(this) assertThat(actions?.get(Swipe.Up)).isNull() assertThat((actions?.get(Swipe.Down) as? UserActionResult.HideOverlay)?.overlay) .isEqualTo(Overlays.NotificationsShade) } @Test fun back_hidesShade() = testScope.runTest { Loading Loading
packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt +2 −14 Original line number Diff line number Diff line package com.android.systemui.scene.ui.composable import androidx.compose.foundation.gestures.Orientation import com.android.compose.animation.scene.Edge import com.android.compose.animation.scene.ProgressConverter import com.android.compose.animation.scene.transitions import com.android.systemui.bouncer.ui.composable.Bouncer import com.android.systemui.notifications.ui.composable.Notifications import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.TransitionKeys.OpenBottomShade import com.android.systemui.scene.shared.model.TransitionKeys.SlightlyFasterShadeCollapse import com.android.systemui.scene.shared.model.TransitionKeys.ToSplitShade import com.android.systemui.scene.ui.composable.transitions.bouncerToGoneTransition Loading Loading @@ -48,18 +46,8 @@ val SceneContainerTransitions = transitions { // Scene transitions from(Scenes.Bouncer, to = Scenes.Gone) { bouncerToGoneTransition() } from(Scenes.Gone, to = Scenes.NotificationsShade) { goneToNotificationsShadeTransition(Edge.Top) } from(Scenes.Gone, to = Scenes.NotificationsShade, key = OpenBottomShade) { goneToNotificationsShadeTransition(Edge.Bottom) } 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.NotificationsShade) { goneToNotificationsShadeTransition() } from(Scenes.Gone, to = Scenes.QuickSettingsShade) { goneToQuickSettingsShadeTransition() } from(Scenes.Gone, to = Scenes.Shade) { goneToShadeTransition() } from(Scenes.Gone, to = Scenes.Shade, key = ToSplitShade) { goneToSplitShadeTransition() } from(Scenes.Gone, to = Scenes.Shade, key = SlightlyFasterShadeCollapse) { Loading
packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromGoneToNotificationsShadeTransition.kt +1 −3 Original line number Diff line number Diff line Loading @@ -16,12 +16,10 @@ package com.android.systemui.scene.ui.composable.transitions import com.android.compose.animation.scene.Edge import com.android.compose.animation.scene.TransitionBuilder fun TransitionBuilder.goneToNotificationsShadeTransition( edge: Edge = Edge.Top, durationScale: Double = 1.0, ) { toNotificationsShadeTransition(edge, durationScale) toNotificationsShadeTransition(durationScale) }
packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/ToNotificationsShadeTransition.kt +4 −18 Original line number Diff line number Diff line Loading @@ -19,12 +19,9 @@ 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.notifications.ui.composable.Notifications import com.android.systemui.shade.ui.composable.OverlayShade import com.android.systemui.shade.ui.composable.Shade Loading @@ -32,11 +29,6 @@ import com.android.systemui.shade.ui.composable.ShadeHeader import kotlin.time.Duration.Companion.milliseconds fun TransitionBuilder.toNotificationsShadeTransition( /** * The edge where the shade will animate from. This is statically determined (i.e. doesn't * change during runtime). */ edge: Edge = Edge.Top, durationScale: Double = 1.0, ) { spec = tween(durationMillis = (DefaultDuration * durationScale).inWholeMilliseconds.toInt()) Loading @@ -45,17 +37,11 @@ fun TransitionBuilder.toNotificationsShadeTransition( 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, orientation -> fromSceneSize.height.toFloat() * 2 / 3f } translate(OverlayShade.Elements.Panel, edge) translate(OverlayShade.Elements.Panel, Edge.Top) fractionRange(end = .5f) { fade(OverlayShade.Elements.Scrim) } Loading
packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/OverlayShade.kt +1 −7 Original line number Diff line number Diff line Loading @@ -55,7 +55,6 @@ import com.android.compose.windowsizeclass.LocalWindowSizeClass import com.android.systemui.keyguard.ui.composable.LockscreenContent import com.android.systemui.lifecycle.rememberViewModel import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.shade.shared.model.ShadeAlignment import com.android.systemui.shade.ui.viewmodel.OverlayShadeViewModel import com.android.systemui.util.kotlin.getOrNull import dagger.Lazy Loading Loading @@ -84,12 +83,7 @@ fun SceneScope.OverlayShade( Box( modifier = Modifier.fillMaxSize().panelPadding(), contentAlignment = if (viewModel.panelAlignment == ShadeAlignment.Top) { Alignment.TopEnd } else { Alignment.BottomEnd }, contentAlignment = Alignment.TopEnd, ) { Panel( modifier = Modifier.element(OverlayShade.Elements.Panel).panelSize(), Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayActionsViewModelTest.kt +2 −17 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.kosmos.testScope import com.android.systemui.lifecycle.activateIn import com.android.systemui.scene.shared.model.Overlays import com.android.systemui.shade.data.repository.fakeShadeRepository import com.android.systemui.shade.ui.viewmodel.notificationsShadeOverlayActionsViewModel import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat Loading @@ -44,15 +43,13 @@ class NotificationsShadeOverlayActionsViewModelTest : SysuiTestCase() { private val kosmos = testKosmos() private val testScope = kosmos.testScope private val fakeShadeRepository by lazy { kosmos.fakeShadeRepository } private val underTest by lazy { kosmos.notificationsShadeOverlayActionsViewModel } private val underTest = kosmos.notificationsShadeOverlayActionsViewModel @Test fun upTransitionSceneKey_topAligned_hidesShade() = fun upTransitionSceneKey_hidesShade() = testScope.runTest { val actions by collectLastValue(underTest.actions) fakeShadeRepository.setDualShadeAlignedToBottom(false) underTest.activateIn(this) assertThat((actions?.get(Swipe.Up) as? UserActionResult.HideOverlay)?.overlay) Loading @@ -60,18 +57,6 @@ class NotificationsShadeOverlayActionsViewModelTest : SysuiTestCase() { assertThat(actions?.get(Swipe.Down)).isNull() } @Test fun upTransitionSceneKey_bottomAligned_doesNothing() = testScope.runTest { val actions by collectLastValue(underTest.actions) fakeShadeRepository.setDualShadeAlignedToBottom(true) underTest.activateIn(this) assertThat(actions?.get(Swipe.Up)).isNull() assertThat((actions?.get(Swipe.Down) as? UserActionResult.HideOverlay)?.overlay) .isEqualTo(Overlays.NotificationsShade) } @Test fun back_hidesShade() = testScope.runTest { Loading