• 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.DefaultNotificationStackScrollLayoutSection
31 import com.android.systemui.keyguard.ui.view.layout.sections.DefaultSettingsPopupMenuSection
32 import com.android.systemui.keyguard.ui.view.layout.sections.DefaultShortcutsSection
33 import com.android.systemui.keyguard.ui.view.layout.sections.DefaultStatusBarSection
34 import com.android.systemui.keyguard.ui.view.layout.sections.DefaultUdfpsAccessibilityOverlaySection
35 import com.android.systemui.keyguard.ui.view.layout.sections.KeyguardSectionsModule.Companion.KEYGUARD_AMBIENT_INDICATION_AREA_SECTION
36 import com.android.systemui.keyguard.ui.view.layout.sections.KeyguardSliceViewSection
37 import com.android.systemui.keyguard.ui.view.layout.sections.SmartspaceSection
38 import java.util.Optional
39 import javax.inject.Inject
40 import javax.inject.Named
41 import kotlin.jvm.optionals.getOrNull
42 
43 /**
44  * Positions elements of the lockscreen to the default position.
45  *
46  * This will be the most common use case for phones in portrait mode.
47  */
48 @SysUISingleton
49 @JvmSuppressWildcards
50 class DefaultKeyguardBlueprint
51 @Inject
52 constructor(
53     accessibilityActionsSection: AccessibilityActionsSection,
54     defaultIndicationAreaSection: DefaultIndicationAreaSection,
55     defaultDeviceEntrySection: DefaultDeviceEntrySection,
56     defaultShortcutsSection: DefaultShortcutsSection,
57     @Named(KEYGUARD_AMBIENT_INDICATION_AREA_SECTION)
58     defaultAmbientIndicationAreaSection: Optional<KeyguardSection>,
59     defaultSettingsPopupMenuSection: DefaultSettingsPopupMenuSection,
60     defaultStatusBarSection: DefaultStatusBarSection,
61     defaultNotificationStackScrollLayoutSection: DefaultNotificationStackScrollLayoutSection,
62     aodPromotedNotificationSection: AodPromotedNotificationSection,
63     aodNotificationIconsSection: AodNotificationIconsSection,
64     aodBurnInSection: AodBurnInSection,
65     clockSection: ClockSection,
66     smartspaceSection: SmartspaceSection,
67     keyguardSliceViewSection: KeyguardSliceViewSection,
68     udfpsAccessibilityOverlaySection: DefaultUdfpsAccessibilityOverlaySection,
69 ) : KeyguardBlueprint {
70     override val id: String = DEFAULT
71 
72     override val sections =
73         listOfNotNull(
74             accessibilityActionsSection,
75             defaultIndicationAreaSection,
76             defaultShortcutsSection,
77             defaultAmbientIndicationAreaSection.getOrNull(),
78             defaultSettingsPopupMenuSection,
79             defaultStatusBarSection,
80             defaultNotificationStackScrollLayoutSection,
81             aodNotificationIconsSection,
82             aodPromotedNotificationSection,
83             smartspaceSection,
84             aodBurnInSection,
85             clockSection,
86             keyguardSliceViewSection,
87             defaultDeviceEntrySection,
88             udfpsAccessibilityOverlaySection, // Add LAST: Intentionally has z-order above others
89         )
90 
91     companion object {
92         const val DEFAULT = "default"
93     }
94 }
95