1 /* 2 * Copyright (C) 2023 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.systemui.scene.shared.model 18 19 import com.android.compose.animation.scene.SceneKey 20 21 /** 22 * Keys of all known scenes. 23 * 24 * PLEASE KEEP THE KEYS SORTED ALPHABETICALLY. 25 */ 26 object Scenes { 27 /** 28 * The bouncer is the scene that displays authentication challenges like PIN, password, or 29 * pattern. 30 */ 31 @JvmField val Bouncer = SceneKey("bouncer") 32 33 /** The communal scene shows the glanceable hub when device is locked and docked. */ 34 @JvmField val Communal = SceneKey("communal") 35 36 /** 37 * "Gone" is not a real scene but rather the absence of scenes when we want to skip showing any 38 * content from the scene framework. 39 */ 40 @JvmField val Gone = SceneKey("gone") 41 42 /** The lockscreen is the scene that shows when the device is locked. */ 43 @JvmField val Lockscreen = SceneKey("lockscreen") 44 45 /** 46 * The notifications shade scene primarily shows a scrollable list of notifications as an 47 * overlay UI. 48 * 49 * It's used only in the dual shade configuration, where there are two separate shades: one for 50 * notifications (this scene) and another for [QuickSettingsShade]. 51 * 52 * It's not used in the single/accordion configuration (swipe down once to reveal the shade, 53 * swipe down again the to expand quick settings) or in the "split" shade configuration (on 54 * large screens or unfolded foldables, where notifications and quick settings are shown 55 * side-by-side in their own columns). 56 */ 57 @JvmField val NotificationsShade = SceneKey("notifications_shade") 58 59 /** 60 * The quick settings scene shows the quick setting tiles. 61 * 62 * This scene is used for single/accordion configuration (swipe down once to reveal the shade, 63 * swipe down again the to expand quick settings). 64 * 65 * For the "split" shade configuration (on large screens or unfolded foldables, where 66 * notifications and quick settings are shown side-by-side in their own columns), the [Shade] 67 * scene is used. 68 * 69 * For the dual shade configuration, where there are two separate shades: one for notifications 70 * and one for quick settings, [NotificationsShade] and [QuickSettingsShade] scenes are used 71 * respectively. 72 */ 73 @JvmField val QuickSettings = SceneKey("quick_settings") 74 75 /** 76 * The quick settings shade scene shows the quick setting tiles as an overlay UI. 77 * 78 * It's used only in the dual shade configuration, where there are two separate shades: one for 79 * quick settings (this scene) and another for [NotificationsShade]. 80 * 81 * It's not used in the single/accordion configuration (swipe down once to reveal the shade, 82 * swipe down again the to expand quick settings) or in the "split" shade configuration (on 83 * large screens or unfolded foldables, where notifications and quick settings are shown 84 * side-by-side in their own columns). 85 */ 86 @JvmField val QuickSettingsShade = SceneKey("quick_settings_shade") 87 88 /** 89 * The shade is the scene that shows a scrollable list of notifications and the minimized 90 * version of quick settings (AKA "quick quick settings" or "QQS"). 91 * 92 * This scene is used for single/accordion configuration (swipe down once to reveal the shade, 93 * swipe down again the to expand quick settings) and for the "split" shade configuration (on 94 * large screens or unfolded foldables, where notifications and quick settings are shown 95 * side-by-side in their own columns). For the dual shade configuration, where there are two 96 * separate shades: one for notifications and one for quick settings, other scenes are used. 97 */ 98 @JvmField val Shade = SceneKey("shade") 99 } 100 101 /** 102 * Keys of all known scene families. A scene family is an alias that is resolved to a specific scene 103 * from [Scenes] dynamically. 104 * 105 * PLEASE KEEP THE KEYS SORTED ALPHABETICALLY. 106 */ 107 object SceneFamilies { 108 /** 109 * The "base" scene, from the user's perspective. This is generally Gone or Lockscreen, 110 * depending on whether the device is unlocked and has been entered. 111 */ 112 @JvmField val Home = SceneKey(debugName = "scene_family_home") 113 114 /** 115 * The scene that contains the full, interactive notification shade. The specific scene it 116 * resolves to can depend on dual / split / single shade settings. 117 */ 118 @JvmField val NotifShade = SceneKey(debugName = "scene_family_notif_shade") 119 120 /** 121 * The scene that contains the full QuickSettings (not to be confused with Quick-QuickSettings). 122 * The specific scene it resolves to can depend on dual / split / single shade settings. 123 */ 124 @JvmField val QuickSettings = SceneKey(debugName = "scene_family_quick_settings") 125 } 126