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

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

Merge "[flexiglass] Adds pointerCount and fromEdge to the UserAction model." into main

parents c76a9d5a ffe787e6
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -130,10 +130,23 @@ interface SceneScope {
sealed interface UserAction

/** The user navigated back, either using a gesture or by triggering a KEYCODE_BACK event. */
object Back : UserAction
data object Back : UserAction

/** The user swiped on the container. */
enum class Swipe : UserAction {
data class Swipe(
    val direction: SwipeDirection,
    val pointerCount: Int = 1,
    val fromEdge: Edge? = null,
) : UserAction {
    companion object {
        val Left = Swipe(SwipeDirection.Left)
        val Up = Swipe(SwipeDirection.Up)
        val Right = Swipe(SwipeDirection.Right)
        val Down = Swipe(SwipeDirection.Down)
    }
}

enum class SwipeDirection {
    Up,
    Down,
    Left,
+5 −2
Original line number Diff line number Diff line
@@ -36,13 +36,14 @@ import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.viewinterop.AndroidView
import androidx.core.view.isVisible
import com.android.compose.animation.scene.SceneScope
import com.android.systemui.res.R
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.keyguard.qualifiers.KeyguardRootView
import com.android.systemui.keyguard.ui.viewmodel.KeyguardLongPressViewModel
import com.android.systemui.keyguard.ui.viewmodel.LockscreenSceneViewModel
import com.android.systemui.res.R
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
@@ -99,7 +100,9 @@ constructor(
        return buildMap {
            up?.let { this[UserAction.Swipe(Direction.UP)] = SceneModel(up) }
            left?.let { this[UserAction.Swipe(Direction.LEFT)] = SceneModel(left) }
            this[UserAction.Swipe(Direction.DOWN)] = SceneModel(SceneKey.Shade)
            this[UserAction.Swipe(fromEdge = Edge.TOP, direction = Direction.DOWN)] =
                SceneModel(SceneKey.QuickSettings)
            this[UserAction.Swipe(direction = Direction.DOWN)] = SceneModel(SceneKey.Shade)
        }
    }
}
+7 −1
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import androidx.compose.ui.Modifier
import com.android.compose.animation.scene.SceneScope
import com.android.systemui.dagger.SysUISingleton
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
@@ -41,7 +42,12 @@ class GoneScene @Inject constructor() : ComposableScene {
    override val destinationScenes: StateFlow<Map<UserAction, SceneModel>> =
        MutableStateFlow<Map<UserAction, SceneModel>>(
                mapOf(
                    UserAction.Swipe(Direction.DOWN) to SceneModel(SceneKey.Shade),
                    UserAction.Swipe(
                        pointerCount = 2,
                        fromEdge = Edge.TOP,
                        direction = Direction.DOWN,
                    ) to SceneModel(SceneKey.QuickSettings),
                    UserAction.Swipe(direction = Direction.DOWN) to SceneModel(SceneKey.Shade),
                )
            )
            .asStateFlow()
+21 −6
Original line number Diff line number Diff line
@@ -35,15 +35,18 @@ import androidx.compose.ui.input.pointer.PointerEventPass
import androidx.compose.ui.input.pointer.motionEventSpy
import androidx.compose.ui.input.pointer.pointerInput
import com.android.compose.animation.scene.Back
import com.android.compose.animation.scene.Edge as SceneTransitionEdge
import com.android.compose.animation.scene.ObservableTransitionState as SceneTransitionObservableTransitionState
import com.android.compose.animation.scene.SceneKey as SceneTransitionSceneKey
import com.android.compose.animation.scene.SceneTransitionLayout
import com.android.compose.animation.scene.SceneTransitionLayoutState
import com.android.compose.animation.scene.Swipe
import com.android.compose.animation.scene.SwipeDirection
import com.android.compose.animation.scene.UserAction as SceneTransitionUserAction
import com.android.compose.animation.scene.observableTransitionState
import com.android.systemui.ribbon.ui.composable.BottomRightCornerRibbon
import com.android.systemui.scene.shared.model.Direction
import com.android.systemui.scene.shared.model.Edge
import com.android.systemui.scene.shared.model.ObservableTransitionState
import com.android.systemui.scene.shared.model.SceneKey
import com.android.systemui.scene.shared.model.SceneModel
@@ -181,12 +184,24 @@ private fun SceneTransitionSceneKey.toModel(): SceneModel {
private fun UserAction.toTransitionUserAction(): SceneTransitionUserAction {
    return when (this) {
        is UserAction.Swipe ->
            Swipe(
                pointerCount = pointerCount,
                fromEdge =
                    when (this.fromEdge) {
                        null -> null
                        Edge.LEFT -> SceneTransitionEdge.Left
                        Edge.TOP -> SceneTransitionEdge.Top
                        Edge.RIGHT -> SceneTransitionEdge.Right
                        Edge.BOTTOM -> SceneTransitionEdge.Bottom
                    },
                direction =
                    when (this.direction) {
                Direction.LEFT -> Swipe.Left
                Direction.UP -> Swipe.Up
                Direction.RIGHT -> Swipe.Right
                Direction.DOWN -> Swipe.Down
                        Direction.LEFT -> SwipeDirection.Left
                        Direction.UP -> SwipeDirection.Up
                        Direction.RIGHT -> SwipeDirection.Right
                        Direction.DOWN -> SwipeDirection.Down
                    }
            )
        is UserAction.Back -> Back
    }
}
+14 −1
Original line number Diff line number Diff line
@@ -61,12 +61,17 @@ sealed interface UserAction {
    data class Swipe(
        /** The direction of the swipe. */
        val direction: Direction,
        /**
         * The edge from which the swipe originated or `null`, if the swipe didn't start close to an
         * edge.
         */
        val fromEdge: Edge? = null,
        /** The number of pointers that were used (for example, one or two fingers). */
        val pointerCount: Int = 1,
    ) : UserAction

    /** The user has hit the back button or performed the back navigation gesture. */
    object Back : UserAction
    data object Back : UserAction
}

/** Enumerates all known "cardinal" directions for user actions. */
@@ -76,3 +81,11 @@ enum class Direction {
    RIGHT,
    DOWN,
}

/** Enumerates all known edges from which a swipe can start. */
enum class Edge {
    LEFT,
    TOP,
    RIGHT,
    BOTTOM,
}