• 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.res.R
7 import com.android.systemui.dump.DumpManager
8 import com.android.systemui.shade.ShadeDisplayAware
9 import com.android.systemui.statusbar.phone.ScrimController
10 import com.android.systemui.statusbar.policy.ConfigurationController
11 import com.android.systemui.statusbar.policy.SplitShadeStateController
12 import javax.inject.Inject
13 
14 /** Controls the lockscreen to shade transition for scrims. */
15 class LockscreenShadeScrimTransitionController
16 @Inject
17 constructor(
18     private val scrimController: ScrimController,
19     @ShadeDisplayAware context: Context,
20     configurationController: ConfigurationController,
21     dumpManager: DumpManager,
22     splitShadeStateController: SplitShadeStateController
23 ) : AbstractLockscreenShadeTransitionController(context, configurationController, dumpManager,
24     splitShadeStateController) {
25 
26     /**
27      * Distance that the full shade transition takes in order for scrim to fully transition to the
28      * shade (in alpha)
29      */
30     private var scrimTransitionDistance = 0
31 
32     /** Distance it takes in order for the notifications scrim fade in to start. */
33     private var notificationsScrimTransitionDelay = 0
34 
35     /** Distance it takes for the notifications scrim to fully fade if after it started. */
36     private var notificationsScrimTransitionDistance = 0
37 
38     /** The latest progress [0,1] the scrims transition. */
39     var scrimProgress = 0f
40 
41     /** The latest progress [0,1] specifically of the notifications scrim transition. */
42     var notificationsScrimProgress = 0f
43 
44     /**
45      * The last drag amount specifically for the notifications scrim. It is different to the normal
46      * [dragDownAmount] as the notifications scrim transition starts relative to the other scrims'
47      * progress.
48      */
49     var notificationsScrimDragAmount = 0f
50 
updateResourcesnull51     override fun updateResources() {
52         scrimTransitionDistance =
53             context.resources.getDimensionPixelSize(
54                 R.dimen.lockscreen_shade_scrim_transition_distance)
55         notificationsScrimTransitionDelay =
56             context.resources.getDimensionPixelSize(
57                 R.dimen.lockscreen_shade_notifications_scrim_transition_delay)
58         notificationsScrimTransitionDistance =
59             context.resources.getDimensionPixelSize(
60                 R.dimen.lockscreen_shade_notifications_scrim_transition_distance)
61     }
62 
onDragDownAmountChangednull63     override fun onDragDownAmountChanged(dragDownAmount: Float) {
64         scrimProgress = MathUtils.saturate(dragDownAmount / scrimTransitionDistance)
65         notificationsScrimDragAmount = dragDownAmount - notificationsScrimTransitionDelay
66         notificationsScrimProgress =
67             MathUtils.saturate(notificationsScrimDragAmount / notificationsScrimTransitionDistance)
68         scrimController.setTransitionToFullShadeProgress(scrimProgress, notificationsScrimProgress)
69     }
70 
dumpnull71     override fun dump(indentingPrintWriter: IndentingPrintWriter) {
72         indentingPrintWriter.let {
73             it.println("LockscreenShadeScrimTransitionController:")
74             it.increaseIndent()
75             it.println("Resources:")
76             it.increaseIndent()
77             it.println("scrimTransitionDistance: $scrimTransitionDistance")
78             it.println("notificationsScrimTransitionDelay: $notificationsScrimTransitionDelay")
79             it.println(
80                 "notificationsScrimTransitionDistance: $notificationsScrimTransitionDistance")
81             it.decreaseIndent()
82             it.println("State")
83             it.increaseIndent()
84             it.println("dragDownAmount: $dragDownAmount")
85             it.println("scrimProgress: $scrimProgress")
86             it.println("notificationsScrimProgress: $notificationsScrimProgress")
87             it.println("notificationsScrimDragAmount: $notificationsScrimDragAmount")
88         }
89     }
90 }
91