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

Commit 2a3134e6 authored by Jordan Demeulenaere's avatar Jordan Demeulenaere
Browse files

Rename ElementScenePicker to ElementContentPicker (1/2)

This CL is a pure refactoring to make ElementScenePicker also work with
contents, so that they can be used by overlays.

Bug: 353679003
Test: atest PlatformComposeSceneTransitionLayoutTests
Flag: com.android.systemui.scene_container
Change-Id: Iaf3a054170ec875c4c6a5f73b709aedab5c353e8
parent 3d66a7be
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ import com.android.compose.animation.scene.ContentKey
import com.android.compose.animation.scene.Edge
import com.android.compose.animation.scene.ElementKey
import com.android.compose.animation.scene.ElementMatcher
import com.android.compose.animation.scene.LowestZIndexScenePicker
import com.android.compose.animation.scene.LowestZIndexContentPicker
import com.android.compose.animation.scene.MutableSceneTransitionLayoutState
import com.android.compose.animation.scene.SceneKey
import com.android.compose.animation.scene.SceneScope
@@ -62,7 +62,7 @@ import kotlin.time.DurationUnit

object Communal {
    object Elements {
        val Scrim = ElementKey("Scrim", scenePicker = LowestZIndexScenePicker)
        val Scrim = ElementKey("Scrim", contentPicker = LowestZIndexContentPicker)
        val Grid = ElementKey("CommunalContent")
        val LockIcon = ElementKey("CommunalLockIcon")
        val IndicationArea = ElementKey("CommunalIndicationArea")
+1 −1
Original line number Diff line number Diff line
@@ -38,7 +38,7 @@ import com.android.systemui.util.animation.MeasurementInput
object MediaCarousel {
    object Elements {
        internal val Content =
            ElementKey(debugName = "MediaCarouselContent", scenePicker = MediaScenePicker)
            ElementKey(debugName = "MediaCarouselContent", contentPicker = MediaContentPicker)
    }
}

+15 −19
Original line number Diff line number Diff line
@@ -16,15 +16,15 @@

package com.android.systemui.media.controls.ui.composable

import com.android.compose.animation.scene.ContentKey
import com.android.compose.animation.scene.ElementContentPicker
import com.android.compose.animation.scene.ElementKey
import com.android.compose.animation.scene.ElementScenePicker
import com.android.compose.animation.scene.SceneKey
import com.android.compose.animation.scene.SceneTransitionLayoutState
import com.android.compose.animation.scene.content.state.TransitionState
import com.android.compose.animation.scene.content.state.ContentState
import com.android.systemui.scene.shared.model.Scenes

/** [ElementScenePicker] implementation for the media carousel object. */
object MediaScenePicker : ElementScenePicker {
/** [ElementContentPicker] implementation for the media carousel object. */
object MediaContentPicker : ElementContentPicker {

    const val SHADE_FRACTION = 0.66f
    private val scenes =
@@ -36,12 +36,12 @@ object MediaScenePicker : ElementScenePicker {
            Scenes.Communal
        )

    override fun sceneDuringTransition(
    override fun contentDuringTransition(
        element: ElementKey,
        transition: TransitionState.Transition,
        fromSceneZIndex: Float,
        toSceneZIndex: Float
    ): SceneKey? {
        transition: ContentState.Transition<*>,
        fromContentZIndex: Float,
        toContentZIndex: Float
    ): ContentKey? {
        return when {
            shouldElevateMedia(transition) -> {
                Scenes.Shade
@@ -52,22 +52,18 @@ object MediaScenePicker : ElementScenePicker {
            transition.isTransitioningBetween(Scenes.QuickSettings, Scenes.Shade) -> {
                Scenes.QuickSettings
            }
            else -> {
                when {
                    scenes.contains(transition.toScene) -> transition.toScene
                    scenes.contains(transition.fromScene) -> transition.fromScene
            scenes.contains(transition.toContent) -> transition.toContent
            scenes.contains(transition.fromContent) -> transition.fromContent
            else -> null
        }
    }
        }
    }

    /** Returns true when the media should be laid on top of the rest for the given [transition]. */
    fun shouldElevateMedia(transition: TransitionState.Transition): Boolean {
    fun shouldElevateMedia(transition: ContentState.Transition<*>): Boolean {
        return transition.isTransitioningBetween(Scenes.Lockscreen, Scenes.Shade)
    }
}

fun MediaScenePicker.shouldElevateMedia(layoutState: SceneTransitionLayoutState): Boolean {
fun MediaContentPicker.shouldElevateMedia(layoutState: SceneTransitionLayoutState): Boolean {
    return layoutState.currentTransition?.let { shouldElevateMedia(it) } ?: false
}
+2 −2
Original line number Diff line number Diff line
@@ -78,7 +78,7 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.util.lerp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.compose.animation.scene.ElementKey
import com.android.compose.animation.scene.LowestZIndexScenePicker
import com.android.compose.animation.scene.LowestZIndexContentPicker
import com.android.compose.animation.scene.NestedScrollBehavior
import com.android.compose.animation.scene.SceneScope
import com.android.compose.modifiers.thenIf
@@ -105,7 +105,7 @@ object Notifications {
        val NotificationScrim = ElementKey("NotificationScrim")
        val NotificationStackPlaceholder = ElementKey("NotificationStackPlaceholder")
        val HeadsUpNotificationPlaceholder =
            ElementKey("HeadsUpNotificationPlaceholder", scenePicker = LowestZIndexScenePicker)
            ElementKey("HeadsUpNotificationPlaceholder", contentPicker = LowestZIndexContentPicker)
        val ShelfSpace = ElementKey("ShelfSpace")
        val NotificationStackCutoffGuideline = ElementKey("NotificationStackCutoffGuideline")
    }
+2 −2
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.viewinterop.AndroidView
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.compose.animation.scene.ElementKey
import com.android.compose.animation.scene.MovableElementScenePicker
import com.android.compose.animation.scene.MovableElementContentPicker
import com.android.compose.animation.scene.SceneScope
import com.android.compose.animation.scene.ValueKey
import com.android.compose.animation.scene.content.state.TransitionState
@@ -55,7 +55,7 @@ object QuickSettings {

    object Elements {
        val Content =
            ElementKey("QuickSettingsContent", scenePicker = MovableElementScenePicker(SCENES))
            ElementKey("QuickSettingsContent", contentPicker = MovableElementContentPicker(SCENES))
        val QuickQuickSettings = ElementKey("QuickQuickSettings")
        val SplitShadeQuickSettings = ElementKey("SplitShadeQuickSettings")
        val FooterActions = ElementKey("QuickSettingsFooterActions")
Loading