| /* |
| * Copyright (C) 2018 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.phone; |
| |
| import android.view.View; |
| |
| import com.android.systemui.statusbar.StatusBarState; |
| |
| /** |
| * {@link ShadeController} is an abstraction of the work that used to be hard-coded in |
| * {@link StatusBar}. The shade itself represents the concept of the status bar window state, and |
| * can be in multiple states: dozing, locked, showing the bouncer, occluded, etc. All/some of these |
| * are coordinated with {@link StatusBarKeyguardViewManager} via |
| * {@link com.android.systemui.keyguard.KeyguardViewMediator} and others. |
| */ |
| public interface ShadeController { |
| |
| /** |
| * Make our window larger and the panel expanded |
| */ |
| void instantExpandNotificationsPanel(); |
| |
| /** See {@link #animateCollapsePanels(int, boolean)}. */ |
| void animateCollapsePanels(); |
| |
| /** See {@link #animateCollapsePanels(int, boolean)}. */ |
| void animateCollapsePanels(int flags); |
| |
| /** |
| * Collapse the shade animated, showing the bouncer when on {@link StatusBarState#KEYGUARD} or |
| * dismissing {@link StatusBar} when on {@link StatusBarState#SHADE}. |
| */ |
| void animateCollapsePanels(int flags, boolean force); |
| |
| /** See {@link #animateCollapsePanels(int, boolean)}. */ |
| void animateCollapsePanels(int flags, boolean force, boolean delayed); |
| |
| /** See {@link #animateCollapsePanels(int, boolean)}. */ |
| void animateCollapsePanels(int flags, boolean force, boolean delayed, float speedUpFactor); |
| |
| /** |
| * If the notifications panel is not fully expanded, collapse it animated. |
| * |
| * @return Seems to always return false |
| */ |
| boolean closeShadeIfOpen(); |
| |
| /** |
| * Add a runnable for NotificationPanelView to post when the panel is expanded. |
| * |
| * @param action the action to post |
| */ |
| void postOnShadeExpanded(Runnable action); |
| |
| /** |
| * Add a runnable to be executed after the shade collapses. Post-collapse runnables are |
| * aggregated and run serially. |
| * |
| * @param action the action to execute |
| */ |
| void addPostCollapseAction(Runnable action); |
| |
| /** |
| * Run all of the runnables added by {@link #addPostCollapseAction}. |
| */ |
| void runPostCollapseRunnables(); |
| |
| /** |
| * If secure with redaction: Show bouncer, go to unlocked shade. |
| * |
| * <p>If secure without redaction or no security: Go to {@link StatusBarState#SHADE_LOCKED}.</p> |
| * |
| * @param startingChild The view to expand after going to the shade. |
| */ |
| void goToLockedShade(View startingChild); |
| |
| /** |
| * Close the shade if it was open |
| * |
| * @return true if the shade was open, else false |
| */ |
| boolean collapsePanel(); |
| |
| /** |
| * If {@param animate}, does the same as {@link #collapsePanel()}. Otherwise, instantly collapse |
| * the panel. Post collapse runnables will be executed |
| * |
| * @param animate |
| */ |
| void collapsePanel(boolean animate); |
| } |