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

Commit 50ba2435 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "[Dual Shade] Hide the other shade when showing the QS/notification shade" into main

parents f80569fd 8e32c80d
Loading
Loading
Loading
Loading
+0 −8
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@ import com.android.systemui.scene.ui.composable.transitions.lockscreenToGoneTran
import com.android.systemui.scene.ui.composable.transitions.lockscreenToQuickSettingsTransition
import com.android.systemui.scene.ui.composable.transitions.lockscreenToShadeTransition
import com.android.systemui.scene.ui.composable.transitions.lockscreenToSplitShadeTransition
import com.android.systemui.scene.ui.composable.transitions.notificationsShadeToQuickSettingsShadeTransition
import com.android.systemui.scene.ui.composable.transitions.shadeToQuickSettingsTransition
import com.android.systemui.scene.ui.composable.transitions.toNotificationsShadeTransition
import com.android.systemui.scene.ui.composable.transitions.toQuickSettingsShadeTransition
@@ -171,13 +170,6 @@ val SceneContainerTransitions = transitions {
    to(Overlays.QuickSettingsShade, cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE) {
        toQuickSettingsShadeTransition()
    }
    from(
        Overlays.NotificationsShade,
        to = Overlays.QuickSettingsShade,
        cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE,
    ) {
        notificationsShadeToQuickSettingsShadeTransition()
    }
    from(
        Scenes.Gone,
        to = Overlays.NotificationsShade,
+0 −29
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.scene.ui.composable.transitions

import androidx.compose.animation.core.tween
import com.android.compose.animation.scene.TransitionBuilder
import kotlin.time.Duration.Companion.milliseconds

fun TransitionBuilder.notificationsShadeToQuickSettingsShadeTransition(
    durationScale: Double = 1.0
) {
    spec = tween(durationMillis = (DefaultDuration * durationScale).inWholeMilliseconds.toInt())
}

private val DefaultDuration = 300.milliseconds
+11 −9
Original line number Diff line number Diff line
@@ -21,7 +21,9 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.compose.animation.scene.Back
import com.android.compose.animation.scene.Swipe
import com.android.compose.animation.scene.UserActionResult
import com.android.compose.animation.scene.UserActionResult.HideOverlay
import com.android.compose.animation.scene.UserActionResult.ShowOverlay
import com.android.compose.animation.scene.UserActionResult.ShowOverlay.HideCurrentOverlays
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.flags.EnableSceneContainer
@@ -53,7 +55,7 @@ class NotificationsShadeOverlayActionsViewModelTest : SysuiTestCase() {
            val actions by collectLastValue(underTest.actions)
            underTest.activateIn(this)

            assertThat((actions?.get(Swipe.Up) as? UserActionResult.HideOverlay)?.overlay)
            assertThat((actions?.get(Swipe.Up) as? HideOverlay)?.overlay)
                .isEqualTo(Overlays.NotificationsShade)
            assertThat(actions?.get(Swipe.Down)).isNull()
        }
@@ -64,7 +66,7 @@ class NotificationsShadeOverlayActionsViewModelTest : SysuiTestCase() {
            val actions by collectLastValue(underTest.actions)
            underTest.activateIn(this)

            assertThat((actions?.get(Back) as? UserActionResult.HideOverlay)?.overlay)
            assertThat((actions?.get(Back) as? HideOverlay)?.overlay)
                .isEqualTo(Overlays.NotificationsShade)
        }

@@ -74,11 +76,11 @@ class NotificationsShadeOverlayActionsViewModelTest : SysuiTestCase() {
            val actions by collectLastValue(underTest.actions)
            underTest.activateIn(this)

            assertThat(
                    (actions?.get(Swipe.Down(fromSource = SceneContainerEdge.TopRight))
                            as? UserActionResult.ReplaceByOverlay)
                        ?.overlay
                )
                .isEqualTo(Overlays.QuickSettingsShade)
            val action =
                (actions?.get(Swipe.Down(fromSource = SceneContainerEdge.TopRight)) as? ShowOverlay)
            assertThat(action?.overlay).isEqualTo(Overlays.QuickSettingsShade)
            val overlaysToHide = action?.hideCurrentOverlays as? HideCurrentOverlays.Some
            assertThat(overlaysToHide).isNotNull()
            assertThat(overlaysToHide?.overlays).containsExactly(Overlays.NotificationsShade)
        }
}
+11 −9
Original line number Diff line number Diff line
@@ -21,7 +21,9 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.compose.animation.scene.Back
import com.android.compose.animation.scene.Swipe
import com.android.compose.animation.scene.UserActionResult
import com.android.compose.animation.scene.UserActionResult.HideOverlay
import com.android.compose.animation.scene.UserActionResult.ShowOverlay
import com.android.compose.animation.scene.UserActionResult.ShowOverlay.HideCurrentOverlays
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.flags.EnableSceneContainer
@@ -53,7 +55,7 @@ class QuickSettingsShadeOverlayActionsViewModelTest : SysuiTestCase() {
            val actions by collectLastValue(underTest.actions)
            underTest.activateIn(this)

            assertThat((actions?.get(Swipe.Up) as? UserActionResult.HideOverlay)?.overlay)
            assertThat((actions?.get(Swipe.Up) as? HideOverlay)?.overlay)
                .isEqualTo(Overlays.QuickSettingsShade)
            assertThat(actions?.get(Swipe.Down)).isNull()
        }
@@ -66,7 +68,7 @@ class QuickSettingsShadeOverlayActionsViewModelTest : SysuiTestCase() {
            underTest.activateIn(this)
            assertThat(isEditing).isFalse()

            assertThat((actions?.get(Back) as? UserActionResult.HideOverlay)?.overlay)
            assertThat((actions?.get(Back) as? HideOverlay)?.overlay)
                .isEqualTo(Overlays.QuickSettingsShade)
        }

@@ -87,11 +89,11 @@ class QuickSettingsShadeOverlayActionsViewModelTest : SysuiTestCase() {
            val actions by collectLastValue(underTest.actions)
            underTest.activateIn(this)

            assertThat(
                    (actions?.get(Swipe.Down(fromSource = SceneContainerEdge.TopLeft))
                            as? UserActionResult.ReplaceByOverlay)
                        ?.overlay
                )
                .isEqualTo(Overlays.NotificationsShade)
            val action =
                (actions?.get(Swipe.Down(fromSource = SceneContainerEdge.TopLeft)) as? ShowOverlay)
            assertThat(action?.overlay).isEqualTo(Overlays.NotificationsShade)
            val overlaysToHide = action?.hideCurrentOverlays as? HideCurrentOverlays.Some
            assertThat(overlaysToHide).isNotNull()
            assertThat(overlaysToHide?.overlays).containsExactly(Overlays.QuickSettingsShade)
        }
}
+6 −2
Original line number Diff line number Diff line
@@ -21,7 +21,8 @@ import com.android.compose.animation.scene.Swipe
import com.android.compose.animation.scene.UserAction
import com.android.compose.animation.scene.UserActionResult
import com.android.compose.animation.scene.UserActionResult.HideOverlay
import com.android.compose.animation.scene.UserActionResult.ReplaceByOverlay
import com.android.compose.animation.scene.UserActionResult.ShowOverlay
import com.android.compose.animation.scene.UserActionResult.ShowOverlay.HideCurrentOverlays
import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.ui.viewmodel.SceneContainerEdge
import com.android.systemui.scene.ui.viewmodel.UserActionsViewModel
@@ -38,7 +39,10 @@ class NotificationsShadeOverlayActionsViewModel @AssistedInject constructor() :
                Swipe.Up to HideOverlay(Overlays.NotificationsShade),
                Back to HideOverlay(Overlays.NotificationsShade),
                Swipe.Down(fromSource = SceneContainerEdge.TopRight) to
                    ReplaceByOverlay(Overlays.QuickSettingsShade),
                    ShowOverlay(
                        Overlays.QuickSettingsShade,
                        hideCurrentOverlays = HideCurrentOverlays.Some(Overlays.NotificationsShade),
                    ),
            )
        )
    }
Loading