• 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     /** The communal scene shows the glanceable hub when device is locked and docked. */
28     @JvmField val Communal = SceneKey("communal")
29 
30     /** The dream scene shows up when a dream activity is showing. */
31     @JvmField val Dream = SceneKey("dream")
32 
33     /**
34      * "Gone" is not a real scene but rather the absence of scenes when we want to skip showing any
35      * content from the scene framework.
36      */
37     @JvmField val Gone = SceneKey("gone")
38 
39     /** The lockscreen is the scene that shows when the device is locked. */
40     @JvmField val Lockscreen = SceneKey("lockscreen")
41 
42     /**
43      * The quick settings scene shows the quick setting tiles.
44      *
45      * This scene is used for single/accordion configuration (swipe down once to reveal the shade,
46      * swipe down again the to expand quick settings).
47      *
48      * For the "split" shade configuration (on large screens or unfolded foldables, where
49      * notifications and quick settings are shown side-by-side in their own columns), the [Shade]
50      * scene is used.
51      *
52      * For the dual shade configuration, where there are two separate shades: one for notifications
53      * and one for quick settings, the overlays `NotificationsShade` and `QuickSettingsShade` are
54      * used respectively.
55      */
56     @JvmField val QuickSettings = SceneKey("quick_settings")
57 
58     /**
59      * The shade is the scene that shows a scrollable list of notifications and the minimized
60      * version of quick settings (AKA "quick quick settings" or "QQS").
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) and for the "split" shade configuration (on
64      * large screens or unfolded foldables, where notifications and quick settings are shown
65      * side-by-side in their own columns). For the dual shade configuration, where there are two
66      * separate shades: one for notifications and one for quick settings, the overlays
67      * `NotificationsShade` and `QuickSettingsShade` are used respectively.
68      */
69     @JvmField val Shade = SceneKey("shade")
70 }
71 
72 /**
73  * Keys of all known scene families. A scene family is an alias that is resolved to a specific scene
74  * from [Scenes] dynamically.
75  *
76  * PLEASE KEEP THE KEYS SORTED ALPHABETICALLY.
77  */
78 object SceneFamilies {
79     /**
80      * The "base" scene, from the user's perspective. This is generally Gone or Lockscreen,
81      * depending on whether the device is unlocked and has been entered.
82      */
83     @JvmField val Home = SceneKey(debugName = "scene_family_home")
84 }
85