/*
|
* Copyright (C) 2019 The Android Open Source Project
|
*
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
* you may not use this file except in compliance with the License.
|
* You may obtain a copy of the License at
|
*
|
* http://www.apache.org/licenses/LICENSE-2.0
|
*
|
* Unless required by applicable law or agreed to in writing, software
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the License for the specific language governing permissions and
|
* limitations under the License.
|
*/
|
|
package com.android.systemui.statusbar;
|
|
import static java.lang.annotation.RetentionPolicy.SOURCE;
|
|
import android.annotation.IntDef;
|
|
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
import com.android.systemui.statusbar.phone.StatusBar;
|
|
import java.lang.annotation.Retention;
|
|
/**
|
* Sends updates to {@link StateListener}s about changes to the status bar state and dozing state
|
*/
|
public interface SysuiStatusBarStateController extends StatusBarStateController {
|
|
// TODO: b/115739177 (remove this explicit ordering if we can)
|
@Retention(SOURCE)
|
@IntDef({RANK_STATUS_BAR, RANK_STATUS_BAR_WINDOW_CONTROLLER, RANK_STACK_SCROLLER, RANK_SHELF})
|
@interface SbStateListenerRank {}
|
// This is the set of known dependencies when updating StatusBarState
|
int RANK_STATUS_BAR = 0;
|
int RANK_STATUS_BAR_WINDOW_CONTROLLER = 1;
|
int RANK_STACK_SCROLLER = 2;
|
int RANK_SHELF = 3;
|
|
/**
|
* Add a listener and a rank based on the priority of this message
|
* @param listener the listener
|
* @param rank the order in which you'd like to be called. Ranked listeners will be
|
* notified before unranked, and we will sort ranked listeners from low to high
|
*
|
* @deprecated This method exists only to solve latent inter-dependencies from refactoring
|
* StatusBarState out of StatusBar.java. Any new listeners should be built not to need ranking
|
* (i.e., they are non-dependent on the order of operations of StatusBarState listeners).
|
*/
|
@Deprecated
|
void addCallback(StateListener listener, int rank);
|
|
/**
|
* Update the status bar state
|
* @param state see {@link StatusBarState} for valid options
|
* @return {@code true} if the state changed, else {@code false}
|
*/
|
boolean setState(int state);
|
|
/**
|
* Update the dozing state from {@link StatusBar}'s perspective
|
* @param isDozing well, are we dozing?
|
* @return {@code true} if the state changed, else {@code false}
|
*/
|
boolean setIsDozing(boolean isDozing);
|
|
/**
|
* Changes the current doze amount.
|
*
|
* @param dozeAmount New doze/dark amount.
|
* @param animated If change should be animated or not. This will cancel current animations.
|
*/
|
void setDozeAmount(float dozeAmount, boolean animated);
|
|
/**
|
* Sets whether to leave status bar open when hiding keyguard
|
*/
|
void setLeaveOpenOnKeyguardHide(boolean leaveOpen);
|
|
/**
|
* Whether to leave status bar open when hiding keyguard
|
*/
|
boolean leaveOpenOnKeyguardHide();
|
|
/**
|
* Interpolated doze amount
|
*/
|
float getInterpolatedDozeAmount();
|
|
/**
|
* Whether status bar is going to full shade
|
*/
|
boolean goingToFullShade();
|
|
/**
|
* Whether the previous state of the status bar was the shade locked
|
*/
|
boolean fromShadeLocked();
|
|
/**
|
* Set keyguard requested
|
*/
|
void setKeyguardRequested(boolean keyguardRequested);
|
|
/**
|
* Is keyguard requested
|
*/
|
boolean isKeyguardRequested();
|
|
/**
|
* Listener with rankings SbStateListenerRank that have dependencies so must be updated
|
* in a certain order
|
*/
|
class RankedListener {
|
final StateListener mListener;
|
final int mRank;
|
|
RankedListener(StateListener l, int r) {
|
mListener = l;
|
mRank = r;
|
}
|
}
|
}
|