• 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 
18 package com.android.systemui.keyguard.ui.view.layout.blueprints
19 
20 import com.android.systemui.dagger.SysUISingleton
21 import com.android.systemui.keyguard.shared.model.KeyguardBlueprint
22 import com.android.systemui.keyguard.shared.model.KeyguardSection
23 import com.android.systemui.keyguard.ui.view.layout.sections.AccessibilityActionsSection
24 import com.android.systemui.keyguard.ui.view.layout.sections.AodBurnInSection
25 import com.android.systemui.keyguard.ui.view.layout.sections.AodNotificationIconsSection
26 import com.android.systemui.keyguard.ui.view.layout.sections.AodPromotedNotificationSection
27 import com.android.systemui.keyguard.ui.view.layout.sections.ClockSection
28 import com.android.systemui.keyguard.ui.view.layout.sections.DefaultDeviceEntrySection
29 import com.android.systemui.keyguard.ui.view.layout.sections.DefaultIndicationAreaSection
30 import com.android.systemui.keyguard.ui.view.layout.sections.DefaultSettingsPopupMenuSection
31 import com.android.systemui.keyguard.ui.view.layout.sections.DefaultShortcutsSection
32 import com.android.systemui.keyguard.ui.view.layout.sections.DefaultStatusBarSection
33 import com.android.systemui.keyguard.ui.view.layout.sections.KeyguardSectionsModule
34 import com.android.systemui.keyguard.ui.view.layout.sections.SmartspaceSection
35 import com.android.systemui.keyguard.ui.view.layout.sections.SplitShadeGuidelines
36 import com.android.systemui.keyguard.ui.view.layout.sections.SplitShadeMediaSection
37 import com.android.systemui.keyguard.ui.view.layout.sections.SplitShadeNotificationStackScrollLayoutSection
38 import com.android.systemui.util.kotlin.getOrNull
39 import java.util.Optional
40 import javax.inject.Inject
41 import javax.inject.Named
42 
43 /**
44  * Split-shade layout, mostly used for larger devices like foldables and tablets when in landscape
45  * orientation.
46  */
47 @SysUISingleton
48 @JvmSuppressWildcards
49 class SplitShadeKeyguardBlueprint
50 @Inject
51 constructor(
52     accessibilityActionsSection: AccessibilityActionsSection,
53     defaultIndicationAreaSection: DefaultIndicationAreaSection,
54     defaultDeviceEntrySection: DefaultDeviceEntrySection,
55     defaultShortcutsSection: DefaultShortcutsSection,
56     @Named(KeyguardSectionsModule.KEYGUARD_AMBIENT_INDICATION_AREA_SECTION)
57     defaultAmbientIndicationAreaSection: Optional<KeyguardSection>,
58     defaultSettingsPopupMenuSection: DefaultSettingsPopupMenuSection,
59     defaultStatusBarSection: DefaultStatusBarSection,
60     splitShadeNotificationStackScrollLayoutSection: SplitShadeNotificationStackScrollLayoutSection,
61     splitShadeGuidelines: SplitShadeGuidelines,
62     aodPromotedNotificationSection: AodPromotedNotificationSection,
63     aodNotificationIconsSection: AodNotificationIconsSection,
64     aodBurnInSection: AodBurnInSection,
65     clockSection: ClockSection,
66     smartspaceSection: SmartspaceSection,
67     mediaSection: SplitShadeMediaSection,
68 ) : KeyguardBlueprint {
69     override val id: String = ID
70 
71     override val sections =
72         listOfNotNull(
73             accessibilityActionsSection,
74             defaultIndicationAreaSection,
75             defaultShortcutsSection,
76             defaultAmbientIndicationAreaSection.getOrNull(),
77             defaultSettingsPopupMenuSection,
78             defaultStatusBarSection,
79             splitShadeNotificationStackScrollLayoutSection,
80             splitShadeGuidelines,
81             aodPromotedNotificationSection,
82             aodNotificationIconsSection,
83             smartspaceSection,
84             aodBurnInSection,
85             clockSection,
86             mediaSection,
87             defaultDeviceEntrySection, // Add LAST: Intentionally has z-order above other views.
88         )
89 
90     companion object {
91         const val ID = "split-shade"
92     }
93 }
94