blob: 07b35502478f5770a32682b9bc1e550bc559a2bc [file] [log] [blame]
Beverly8fdb5332019-02-04 14:29:49 -05001/*
2 * Copyright (C) 2019 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
17package com.android.systemui.statusbar;
18
19import static java.lang.annotation.RetentionPolicy.SOURCE;
20
21import android.annotation.IntDef;
22
23import com.android.systemui.plugins.statusbar.StatusBarStateController;
24import com.android.systemui.statusbar.phone.StatusBar;
25
26import java.lang.annotation.Retention;
27
28/**
29 * Sends updates to {@link StateListener}s about changes to the status bar state and dozing state
30 */
31public interface SysuiStatusBarStateController extends StatusBarStateController {
32
33 // TODO: b/115739177 (remove this explicit ordering if we can)
34 @Retention(SOURCE)
35 @IntDef({RANK_STATUS_BAR, RANK_STATUS_BAR_WINDOW_CONTROLLER, RANK_STACK_SCROLLER, RANK_SHELF})
36 @interface SbStateListenerRank {}
37 // This is the set of known dependencies when updating StatusBarState
38 int RANK_STATUS_BAR = 0;
39 int RANK_STATUS_BAR_WINDOW_CONTROLLER = 1;
40 int RANK_STACK_SCROLLER = 2;
41 int RANK_SHELF = 3;
42
43 /**
44 * Add a listener and a rank based on the priority of this message
45 * @param listener the listener
46 * @param rank the order in which you'd like to be called. Ranked listeners will be
47 * notified before unranked, and we will sort ranked listeners from low to high
48 *
49 * @deprecated This method exists only to solve latent inter-dependencies from refactoring
50 * StatusBarState out of StatusBar.java. Any new listeners should be built not to need ranking
51 * (i.e., they are non-dependent on the order of operations of StatusBarState listeners).
52 */
53 @Deprecated
54 void addCallback(StateListener listener, int rank);
55
56 /**
57 * Update the status bar state
58 * @param state see {@link StatusBarState} for valid options
59 * @return {@code true} if the state changed, else {@code false}
60 */
61 boolean setState(int state);
62
63 /**
64 * Update the dozing state from {@link StatusBar}'s perspective
65 * @param isDozing well, are we dozing?
66 * @return {@code true} if the state changed, else {@code false}
67 */
68 boolean setIsDozing(boolean isDozing);
69
70 /**
71 * Changes the current doze amount.
72 *
73 * @param dozeAmount New doze/dark amount.
74 * @param animated If change should be animated or not. This will cancel current animations.
75 */
76 void setDozeAmount(float dozeAmount, boolean animated);
77
78 /**
79 * Sets whether to leave status bar open when hiding keyguard
80 */
81 void setLeaveOpenOnKeyguardHide(boolean leaveOpen);
82
83 /**
84 * Whether to leave status bar open when hiding keyguard
85 */
86 boolean leaveOpenOnKeyguardHide();
87
88 /**
89 * Interpolated doze amount
90 */
91 float getInterpolatedDozeAmount();
92
93 /**
94 * Whether status bar is going to full shade
95 */
96 boolean goingToFullShade();
97
98 /**
99 * Whether the previous state of the status bar was the shade locked
100 */
101 boolean fromShadeLocked();
102
103 /**
104 * Set keyguard requested
105 */
106 void setKeyguardRequested(boolean keyguardRequested);
107
108 /**
109 * Is keyguard requested
110 */
111 boolean isKeyguardRequested();
112
113 /**
Jorim Jaggi956ca412019-01-07 14:49:14 +0100114 * Set the fullscreen state
Ioannis Ilkos8cca1412019-10-17 09:38:00 +0000115 */
Jorim Jaggi956ca412019-01-07 14:49:14 +0100116 void setFullscreenState(boolean isFullscreen, boolean isImmersive);
Ioannis Ilkos8cca1412019-10-17 09:38:00 +0000117
118 /**
Beverlye14f08e2019-06-06 15:33:10 -0400119 * Set pulsing
120 */
121 void setPulsing(boolean visibility);
122
123 /**
Beverly8fdb5332019-02-04 14:29:49 -0500124 * Listener with rankings SbStateListenerRank that have dependencies so must be updated
125 * in a certain order
126 */
127 class RankedListener {
128 final StateListener mListener;
129 final int mRank;
130
131 RankedListener(StateListener l, int r) {
132 mListener = l;
133 mRank = r;
134 }
135 }
136}