• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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