summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorSceneContainerImpl.kt62
1 files changed, 30 insertions, 32 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorSceneContainerImpl.kt b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorSceneContainerImpl.kt
index 661f2ae5132c..246177e0c46d 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorSceneContainerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorSceneContainerImpl.kt
@@ -35,6 +35,7 @@ import com.android.systemui.shade.shared.model.ShadeMode
import com.android.systemui.utils.coroutines.flow.flatMapLatestConflated
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
@@ -45,6 +46,7 @@ import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn
/** ShadeInteractor implementation for Scene Container. */
+@OptIn(ExperimentalCoroutinesApi::class)
@SysUISingleton
class ShadeInteractorSceneContainerImpl
@Inject
@@ -137,20 +139,18 @@ constructor(
override fun expandNotificationsShade(loggingReason: String, transitionKey: TransitionKey?) {
if (shadeModeInteractor.isDualShade) {
- if (Overlays.QuickSettingsShade in sceneInteractor.currentOverlays.value) {
- sceneInteractor.replaceOverlay(
- from = Overlays.QuickSettingsShade,
- to = Overlays.NotificationsShade,
- loggingReason = loggingReason,
- transitionKey = transitionKey,
- )
- } else {
- sceneInteractor.showOverlay(
- overlay = Overlays.NotificationsShade,
- loggingReason = loggingReason,
- transitionKey = transitionKey,
- )
- }
+ // Collapse the quick settings shade if it's expanded (no-op if it isn't).
+ sceneInteractor.hideOverlay(
+ overlay = Overlays.QuickSettingsShade,
+ loggingReason = loggingReason,
+ transitionKey = transitionKey,
+ )
+ // Expand the notifications shade.
+ sceneInteractor.showOverlay(
+ overlay = Overlays.NotificationsShade,
+ loggingReason = loggingReason,
+ transitionKey = transitionKey,
+ )
} else {
sceneInteractor.changeScene(
toScene = Scenes.Shade,
@@ -163,20 +163,18 @@ constructor(
override fun expandQuickSettingsShade(loggingReason: String, transitionKey: TransitionKey?) {
if (shadeModeInteractor.isDualShade) {
- if (Overlays.NotificationsShade in sceneInteractor.currentOverlays.value) {
- sceneInteractor.replaceOverlay(
- from = Overlays.NotificationsShade,
- to = Overlays.QuickSettingsShade,
- loggingReason = loggingReason,
- transitionKey = transitionKey,
- )
- } else {
- sceneInteractor.showOverlay(
- overlay = Overlays.QuickSettingsShade,
- loggingReason = loggingReason,
- transitionKey = transitionKey,
- )
- }
+ // Collapse the notifications shade if it's expanded (no-op if it isn't).
+ sceneInteractor.hideOverlay(
+ overlay = Overlays.NotificationsShade,
+ loggingReason = loggingReason,
+ transitionKey = transitionKey,
+ )
+ // Expand the quick settings shade.
+ sceneInteractor.showOverlay(
+ overlay = Overlays.QuickSettingsShade,
+ loggingReason = loggingReason,
+ transitionKey = transitionKey,
+ )
} else {
val isSplitShade = shadeModeInteractor.isSplitShade
sceneInteractor.changeScene(
@@ -199,12 +197,12 @@ constructor(
// TODO(b/356596436): Define instant transition instead of snapToScene().
sceneInteractor.snapToScene(
toScene = SceneFamilies.Home,
- loggingReason = loggingReason + " (collapseNotificationsShade)",
+ loggingReason = "$loggingReason (collapseNotificationsShade)",
)
} else {
sceneInteractor.changeScene(
toScene = SceneFamilies.Home,
- loggingReason = loggingReason + " (collapseNotificationsShade)",
+ loggingReason = "$loggingReason (collapseNotificationsShade)",
transitionKey =
transitionKey ?: ToSplitShade.takeIf { shadeModeInteractor.isSplitShade },
)
@@ -233,12 +231,12 @@ constructor(
// TODO(b/356596436): Define instant transition instead of snapToScene().
sceneInteractor.snapToScene(
toScene = targetScene,
- loggingReason = loggingReason + " (collapseQuickSettingsShade)",
+ loggingReason = "$loggingReason (collapseQuickSettingsShade)",
)
} else {
sceneInteractor.changeScene(
toScene = targetScene,
- loggingReason = loggingReason + " (collapseQuickSettingsShade)",
+ loggingReason = "$loggingReason (collapseQuickSettingsShade)",
transitionKey = transitionKey ?: ToSplitShade.takeIf { isSplitShade },
)
}