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