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

Commit ce5a8554 authored by Alejandro Nijamkin's avatar Alejandro Nijamkin
Browse files

[flexiglass] Adds TransitionKey support.

In order to support the new TransitionKey API in SceneTransitionLayout
(STL), we integrate the SceneDataSource from the previous CL.

The CL also adds instant- and faster-shade collapse transitions.

Bug: 323173116
Test: unit tests updated
Test: manual verification on phone of the following scenes: lockscreen
-> bouncer -> shade -> quick settings (unlock) -> gone -> shade > quick
settings
Flag: ACONFIG com.android.systemui.scene_container DEVELOPMENT

Change-Id: I30ea3d7c2ace8bad9ad2999bdbde16e71337bca2
parent b70482d4
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -86,6 +86,7 @@ object ComposeFacade : BaseComposeFacade {
        viewModel: SceneContainerViewModel,
        windowInsets: StateFlow<WindowInsets?>,
        sceneByKey: Map<SceneKey, Scene>,
        dataSourceDelegator: SceneDataSourceBinder,
    ): View {
        throwComposeUnavailableError()
    }
+3 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ import com.android.systemui.people.ui.viewmodel.PeopleViewModel
import com.android.systemui.qs.footer.ui.compose.FooterActions
import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsViewModel
import com.android.systemui.scene.shared.model.Scene
import com.android.systemui.scene.shared.model.SceneDataSourceDelegator
import com.android.systemui.scene.shared.model.SceneKey
import com.android.systemui.scene.ui.composable.ComposableScene
import com.android.systemui.scene.ui.composable.SceneContainer
@@ -126,6 +127,7 @@ object ComposeFacade : BaseComposeFacade {
        viewModel: SceneContainerViewModel,
        windowInsets: StateFlow<WindowInsets?>,
        sceneByKey: Map<SceneKey, Scene>,
        dataSourceDelegator: SceneDataSourceDelegator,
    ): View {
        return ComposeView(context).apply {
            setContent {
@@ -138,6 +140,7 @@ object ComposeFacade : BaseComposeFacade {
                            viewModel = viewModel,
                            sceneByKey =
                                sceneByKey.mapValues { (_, scene) -> scene as ComposableScene },
                            dataSourceDelegator = dataSourceDelegator,
                        )
                    }
                }
+4 −4
Original line number Diff line number Diff line
@@ -29,8 +29,8 @@ import com.android.systemui.bouncer.ui.viewmodel.BouncerViewModel
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.scene.shared.model.Direction
import com.android.systemui.scene.shared.model.SceneKey
import com.android.systemui.scene.shared.model.SceneModel
import com.android.systemui.scene.shared.model.UserAction
import com.android.systemui.scene.shared.model.UserActionResult
import com.android.systemui.scene.ui.composable.ComposableScene
import javax.inject.Inject
import kotlinx.coroutines.flow.MutableStateFlow
@@ -54,11 +54,11 @@ constructor(
) : ComposableScene {
    override val key = SceneKey.Bouncer

    override val destinationScenes: StateFlow<Map<UserAction, SceneModel>> =
    override val destinationScenes: StateFlow<Map<UserAction, UserActionResult>> =
        MutableStateFlow(
                mapOf(
                    UserAction.Back to SceneModel(SceneKey.Lockscreen),
                    UserAction.Swipe(Direction.DOWN) to SceneModel(SceneKey.Lockscreen),
                    UserAction.Back to UserActionResult(SceneKey.Lockscreen),
                    UserAction.Swipe(Direction.DOWN) to UserActionResult(SceneKey.Lockscreen),
                )
            )
            .asStateFlow()
+4 −4
Original line number Diff line number Diff line
@@ -23,8 +23,8 @@ import com.android.systemui.communal.ui.viewmodel.CommunalViewModel
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.scene.shared.model.Direction
import com.android.systemui.scene.shared.model.SceneKey
import com.android.systemui.scene.shared.model.SceneModel
import com.android.systemui.scene.shared.model.UserAction
import com.android.systemui.scene.shared.model.UserActionResult
import com.android.systemui.scene.ui.composable.ComposableScene
import javax.inject.Inject
import kotlinx.coroutines.flow.MutableStateFlow
@@ -40,10 +40,10 @@ constructor(
) : ComposableScene {
    override val key = SceneKey.Communal

    override val destinationScenes: StateFlow<Map<UserAction, SceneModel>> =
        MutableStateFlow<Map<UserAction, SceneModel>>(
    override val destinationScenes: StateFlow<Map<UserAction, UserActionResult>> =
        MutableStateFlow<Map<UserAction, UserActionResult>>(
                mapOf(
                    UserAction.Swipe(Direction.RIGHT) to SceneModel(SceneKey.Lockscreen),
                    UserAction.Swipe(Direction.RIGHT) to UserActionResult(SceneKey.Lockscreen),
                )
            )
            .asStateFlow()
+7 −7
Original line number Diff line number Diff line
@@ -26,8 +26,8 @@ import com.android.systemui.keyguard.ui.viewmodel.LockscreenSceneViewModel
import com.android.systemui.scene.shared.model.Direction
import com.android.systemui.scene.shared.model.Edge
import com.android.systemui.scene.shared.model.SceneKey
import com.android.systemui.scene.shared.model.SceneModel
import com.android.systemui.scene.shared.model.UserAction
import com.android.systemui.scene.shared.model.UserActionResult
import com.android.systemui.scene.ui.composable.ComposableScene
import dagger.Lazy
import javax.inject.Inject
@@ -49,7 +49,7 @@ constructor(
) : ComposableScene {
    override val key = SceneKey.Lockscreen

    override val destinationScenes: StateFlow<Map<UserAction, SceneModel>> =
    override val destinationScenes: StateFlow<Map<UserAction, UserActionResult>> =
        combine(viewModel.upDestinationSceneKey, viewModel.leftDestinationSceneKey, ::Pair)
            .map { (upKey, leftKey) -> destinationScenes(up = upKey, left = leftKey) }
            .stateIn(
@@ -75,13 +75,13 @@ constructor(
    private fun destinationScenes(
        up: SceneKey?,
        left: SceneKey?,
    ): Map<UserAction, SceneModel> {
    ): Map<UserAction, UserActionResult> {
        return buildMap {
            up?.let { this[UserAction.Swipe(Direction.UP)] = SceneModel(up) }
            left?.let { this[UserAction.Swipe(Direction.LEFT)] = SceneModel(left) }
            up?.let { this[UserAction.Swipe(Direction.UP)] = UserActionResult(up) }
            left?.let { this[UserAction.Swipe(Direction.LEFT)] = UserActionResult(left) }
            this[UserAction.Swipe(fromEdge = Edge.TOP, direction = Direction.DOWN)] =
                SceneModel(SceneKey.QuickSettings)
            this[UserAction.Swipe(direction = Direction.DOWN)] = SceneModel(SceneKey.Shade)
                UserActionResult(SceneKey.QuickSettings)
            this[UserAction.Swipe(direction = Direction.DOWN)] = UserActionResult(SceneKey.Shade)
        }
    }
}
Loading