• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.android.systemui.statusbar
2 
3 import android.content.Context
4 import android.util.IndentingPrintWriter
5 import android.util.MathUtils
6 import com.android.systemui.dump.DumpManager
7 import com.android.systemui.media.controls.ui.controller.MediaHierarchyManager
8 import com.android.systemui.res.R
9 import com.android.systemui.shade.ShadeDisplayAware
10 import com.android.systemui.shade.domain.interactor.ShadeLockscreenInteractor
11 import com.android.systemui.statusbar.policy.ConfigurationController
12 import com.android.systemui.statusbar.policy.SplitShadeStateController
13 import dagger.assisted.Assisted
14 import dagger.assisted.AssistedFactory
15 import dagger.assisted.AssistedInject
16 
17 /** Controls the lockscreen to shade transition for the keyguard elements. */
18 class LockscreenShadeKeyguardTransitionController
19 @AssistedInject
20 constructor(
21     private val mediaHierarchyManager: MediaHierarchyManager,
22     @Assisted private val shadeLockscreenInteractor: ShadeLockscreenInteractor,
23     @ShadeDisplayAware context: Context,
24     configurationController: ConfigurationController,
25     dumpManager: DumpManager,
26     splitShadeStateController: SplitShadeStateController,
27 ) :
28     AbstractLockscreenShadeTransitionController(
29         context,
30         configurationController,
31         dumpManager,
32         splitShadeStateController,
33     ) {
34 
35     /**
36      * Distance that the full shade transition takes in order for the keyguard content on
37      * NotificationPanelViewController to fully fade (e.g. Clock & Smartspace).
38      */
39     private var alphaTransitionDistance = 0
40 
41     /** The amount of alpha that was last set on the keyguard elements. */
42     private var alpha = 0f
43 
44     /** The latest progress [0,1] of the alpha transition. */
45     private var alphaProgress = 0f
46 
47     /** The amount of alpha that was last set on the keyguard status bar. */
48     private var statusBarAlpha = 0f
49 
updateResourcesnull50     override fun updateResources() {
51         alphaTransitionDistance =
52             context.resources.getDimensionPixelSize(
53                 R.dimen.lockscreen_shade_npvc_keyguard_content_alpha_transition_distance
54             )
55     }
56 
onDragDownAmountChangednull57     override fun onDragDownAmountChanged(dragDownAmount: Float) {
58         alphaProgress = MathUtils.saturate(dragDownAmount / alphaTransitionDistance)
59         alpha = 1f - alphaProgress
60 
61         statusBarAlpha = if (useSplitShade) alpha else -1f
62         shadeLockscreenInteractor.setKeyguardStatusBarAlpha(statusBarAlpha)
63     }
64 
dumpnull65     override fun dump(indentingPrintWriter: IndentingPrintWriter) {
66         indentingPrintWriter.let {
67             it.println("LockscreenShadeKeyguardTransitionController:")
68             it.increaseIndent()
69             it.println("Resources:")
70             it.increaseIndent()
71             it.println("alphaTransitionDistance: $alphaTransitionDistance")
72             it.decreaseIndent()
73             it.println("State:")
74             it.increaseIndent()
75             it.println("dragDownAmount: $dragDownAmount")
76             it.println("alpha: $alpha")
77             it.println("alphaProgress: $alphaProgress")
78             it.println("statusBarAlpha: $statusBarAlpha")
79         }
80     }
81 
82     @AssistedFactory
interfacenull83     fun interface Factory {
84         fun create(
85             shadeLockscreenInteractor: ShadeLockscreenInteractor
86         ): LockscreenShadeKeyguardTransitionController
87     }
88 }
89