2 * Copyright (C) 2012 The Android Open Source Project
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package com.android.systemui.statusbar.tv;
19 import android.content.ComponentName;
20 import android.graphics.Rect;
21 import android.os.IBinder;
22 import android.os.RemoteException;
23 import android.service.notification.NotificationListenerService.RankingMap;
24 import android.service.notification.StatusBarNotification;
25 import android.view.View;
27 import com.android.internal.statusbar.StatusBarIcon;
28 import com.android.systemui.statusbar.ActivatableNotificationView;
29 import com.android.systemui.statusbar.BaseStatusBar;
30 import com.android.systemui.statusbar.NotificationData;
31 import com.android.systemui.tv.pip.PipManager;
34 * Status bar implementation for "large screen" products that mostly present no on-screen nav
37 public class TvStatusBar extends BaseStatusBar {
40 * Tracking calls to View.setSystemUiVisibility().
42 int mSystemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE;
45 * Last value sent to window manager.
47 private int mLastDispatchedSystemUiVisibility = ~View.SYSTEM_UI_FLAG_VISIBLE;
50 public void setIcon(String slot, StatusBarIcon icon) {
54 public void removeIcon(String slot) {
58 public void addNotification(StatusBarNotification notification, RankingMap ranking,
59 NotificationData.Entry entry) {
63 protected void updateNotificationRanking(RankingMap ranking) {
67 public void removeNotification(String key, RankingMap ranking) {
71 public void disable(int state1, int state2, boolean animate) {
75 public void animateExpandNotificationsPanel() {
79 public void animateCollapsePanels(int flags) {
83 public void setSystemUiVisibility(int vis, int fullscreenStackVis, int dockedStackVis,
84 int mask, Rect fullscreenStackBounds, Rect dockedStackBounds) {
88 public void topAppWindowChanged(boolean visible) {
92 public void setImeWindowStatus(IBinder token, int vis, int backDisposition,
93 boolean showImeSwitcher) {
96 @Override // CommandQueue
97 public void setWindowState(int window, int state) {
100 @Override // CommandQueue
101 public void buzzBeepBlinked() {
104 @Override // CommandQueue
105 public void notificationLightOff() {
108 @Override // CommandQueue
109 public void notificationLightPulse(int argb, int onMillis, int offMillis) {
113 protected void setAreThereNotifications() {
117 protected void updateNotifications() {
121 public boolean shouldDisableNavbarGestures() {
125 public View getStatusBarView() {
130 protected void toggleSplitScreenMode(int metricsDockAction, int metricsUndockAction) {
134 public void maybeEscalateHeadsUp() {
138 public boolean isPanelFullyCollapsed() {
143 protected int getMaxKeyguardNotifications(boolean recompute) {
148 public void animateExpandSettingsPanel(String subPanel) {
152 protected void createAndAddWindows() {
156 protected void refreshLayout(int layoutDirection) {
160 public void onActivated(ActivatableNotificationView view) {
164 public void onActivationReset(ActivatableNotificationView view) {
168 public void showScreenPinningRequest(int taskId) {
172 public void appTransitionPending() {
176 public void appTransitionCancelled() {
180 public void appTransitionStarting(long startTime, long duration) {
184 public void appTransitionFinished() {
188 public void onCameraLaunchGestureDetected(int source) {
192 public void showTvPictureInPictureMenu() {
193 PipManager.getInstance().showTvPictureInPictureMenu();
197 protected void updateHeadsUp(String key, NotificationData.Entry entry, boolean shouldPeek,
198 boolean alertAgain) {
202 protected void setHeadsUpUser(int newUserId) {
205 protected boolean isSnoozedPackage(StatusBarNotification sbn) {
210 public void addQsTile(ComponentName tile) {
214 public void remQsTile(ComponentName tile) {
218 public void clickTile(ComponentName tile) {
222 public void start() {
224 putComponent(TvStatusBar.class, this);
228 * Updates the visibility of the picture-in-picture.
230 public void updatePipVisibility(boolean visible) {
232 mSystemUiVisibility |= View.TV_PICTURE_IN_PICTURE_VISIBLE;
234 mSystemUiVisibility &= ~View.TV_PICTURE_IN_PICTURE_VISIBLE;
236 notifyUiVisibilityChanged(mSystemUiVisibility);
240 * Updates the visibility of the Recents
242 public void updateRecentsVisibility(boolean visible) {
244 mSystemUiVisibility |= View.RECENT_APPS_VISIBLE;
246 mSystemUiVisibility &= ~View.RECENT_APPS_VISIBLE;
248 notifyUiVisibilityChanged(mSystemUiVisibility);
251 private void notifyUiVisibilityChanged(int vis) {
253 if (mLastDispatchedSystemUiVisibility != vis) {
254 mWindowManagerService.statusBarVisibilityChanged(vis);
255 mLastDispatchedSystemUiVisibility = vis;
257 } catch (RemoteException ex) {