StatusBarWindowManager.java revision ea56251d92050e9a672d1f66d0d4621e4dd4136e
15cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi/* 25cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * Copyright (C) 2014 The Android Open Source Project 35cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * 45cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * Licensed under the Apache License, Version 2.0 (the "License"); 55cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * you may not use this file except in compliance with the License. 65cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * You may obtain a copy of the License at 75cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * 85cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * http://www.apache.org/licenses/LICENSE-2.0 95cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * 105cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * Unless required by applicable law or agreed to in writing, software 115cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * distributed under the License is distributed on an "AS IS" BASIS, 125cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * See the License for the specific language governing permissions and 145cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * limitations under the License 155cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi */ 165cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 175cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggipackage com.android.systemui.statusbar.phone; 185cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 195cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggiimport android.content.Context; 205cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggiimport android.content.pm.ActivityInfo; 215cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggiimport android.content.res.Resources; 225cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggiimport android.graphics.PixelFormat; 235cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggiimport android.os.SystemProperties; 245cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggiimport android.view.Gravity; 255cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggiimport android.view.View; 265cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggiimport android.view.ViewGroup; 275cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggiimport android.view.WindowManager; 285cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 295cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggiimport com.android.keyguard.R; 30ecbab3662d4474bbb45477939aaa167eb883212bJorim Jaggiimport com.android.systemui.statusbar.BaseStatusBar; 31ecbab3662d4474bbb45477939aaa167eb883212bJorim Jaggiimport com.android.systemui.statusbar.StatusBarState; 325cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 335cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi/** 345cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * Encapsulates all logic for the status bar window state management. 355cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi */ 365cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggipublic class StatusBarWindowManager { 375cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 385cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private final Context mContext; 395cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private final WindowManager mWindowManager; 405cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private View mStatusBarView; 415cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private WindowManager.LayoutParams mLp; 425cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private int mBarHeight; 435cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private final boolean mKeyguardScreenRotation; 445cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 455cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private final State mCurrentState = new State(); 465cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 475cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public StatusBarWindowManager(Context context) { 485cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mContext = context; 495cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 505cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mKeyguardScreenRotation = shouldEnableKeyguardScreenRotation(); 515cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 525cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 535cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private boolean shouldEnableKeyguardScreenRotation() { 545cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi Resources res = mContext.getResources(); 555cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi return SystemProperties.getBoolean("lockscreen.rot_override", false) 565cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi || res.getBoolean(R.bool.config_enableLockScreenRotation); 575cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 585cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 595cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi /** 605cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * Adds the status bar view to the window manager. 615cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * 625cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * @param statusBarView The view to add. 635cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * @param barHeight The height of the status bar in collapsed state. 645cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi */ 655cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void add(View statusBarView, int barHeight) { 665cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 675cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi // Now that the status bar window encompasses the sliding panel and its 685cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi // translucent backdrop, the entire thing is made TRANSLUCENT and is 695cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi // hardware-accelerated. 705cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp = new WindowManager.LayoutParams( 715cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi ViewGroup.LayoutParams.MATCH_PARENT, 725cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi barHeight, 735cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi WindowManager.LayoutParams.TYPE_STATUS_BAR, 745cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE 755cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi | WindowManager.LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING 765cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH 775cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH 78ea56251d92050e9a672d1f66d0d4621e4dd4136eAdrian Roos | WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS, 795cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi PixelFormat.TRANSLUCENT); 805cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; 8176aaef537a83486134a8118331b70854fbdecc3eJorim Jaggi mLp.gravity = Gravity.TOP; 825cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; 835cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.setTitle("StatusBar"); 845cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.packageName = mContext.getPackageName(); 855cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mStatusBarView = statusBarView; 865cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mBarHeight = barHeight; 875cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mWindowManager.addView(mStatusBarView, mLp); 885cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 895cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 905cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private void applyKeyguardFlags(State state) { 915cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi if (state.keyguardShowing) { 925cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.flags |= WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; 935cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD; 945cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } else { 955cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.flags &= ~WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; 965cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.privateFlags &= ~WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD; 975cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 985cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 995cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 1005cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private void adjustScreenOrientation(State state) { 101ca36cf7bcaa8785a13b1e1a6038d94a9dd963c49Jorim Jaggi if (state.isKeyguardShowingAndNotOccluded()) { 102ca36cf7bcaa8785a13b1e1a6038d94a9dd963c49Jorim Jaggi if (mKeyguardScreenRotation) { 103ca36cf7bcaa8785a13b1e1a6038d94a9dd963c49Jorim Jaggi mLp.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_USER; 104ca36cf7bcaa8785a13b1e1a6038d94a9dd963c49Jorim Jaggi } else { 105ca36cf7bcaa8785a13b1e1a6038d94a9dd963c49Jorim Jaggi mLp.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_NOSENSOR; 106ca36cf7bcaa8785a13b1e1a6038d94a9dd963c49Jorim Jaggi } 1075cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } else { 108ca36cf7bcaa8785a13b1e1a6038d94a9dd963c49Jorim Jaggi mLp.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; 1095cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1105cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1115cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 1125cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private void applyFocusableFlag(State state) { 1135fd4d05aae4b8b0dc1d1b21a206e218f47b0ea3aJorim Jaggi if (state.isKeyguardShowingAndNotOccluded() && state.keyguardNeedsInput 1145fd4d05aae4b8b0dc1d1b21a206e218f47b0ea3aJorim Jaggi && state.bouncerShowing) { 1155cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.flags &= ~WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; 1165cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.flags &= ~WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM; 1175cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } else if (state.isKeyguardShowingAndNotOccluded() || state.statusBarFocusable) { 1185cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.flags &= ~WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; 1195cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.flags |= WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM; 1205cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } else { 1215cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.flags |= WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; 1225cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.flags &= ~WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM; 1235cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1245cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1255cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 1265cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private void applyHeight(State state) { 1275cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi boolean expanded = state.isKeyguardShowingAndNotOccluded() || state.statusBarExpanded; 1285cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi if (expanded) { 1295cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.height = ViewGroup.LayoutParams.MATCH_PARENT; 1305cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } else { 1315cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.height = mBarHeight; 1325cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1335cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1345cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 135a005f1b6853e8852c328f4fdc02fb8f9c9ae1cd6Jorim Jaggi private void applyFitsSystemWindows(State state) { 136a005f1b6853e8852c328f4fdc02fb8f9c9ae1cd6Jorim Jaggi mStatusBarView.setFitsSystemWindows(!state.isKeyguardShowingAndNotOccluded()); 137a005f1b6853e8852c328f4fdc02fb8f9c9ae1cd6Jorim Jaggi } 138a005f1b6853e8852c328f4fdc02fb8f9c9ae1cd6Jorim Jaggi 1395cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private void applyUserActivityTimeout(State state) { 140ecbab3662d4474bbb45477939aaa167eb883212bJorim Jaggi if (state.isKeyguardShowingAndNotOccluded() 141ecbab3662d4474bbb45477939aaa167eb883212bJorim Jaggi && state.statusBarState == StatusBarState.KEYGUARD) { 1425cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.userActivityTimeout = state.keyguardUserActivityTimeout; 1435cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } else { 1445cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.userActivityTimeout = -1; 1455cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1465cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1475cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 14803c701ec58ff6de3cc3c53b05342a475a63a11cfJorim Jaggi private void applyInputFeatures(State state) { 1494222d9a7fb87d73e1443ec1a2de9782b05741af6Jorim Jaggi if (state.isKeyguardShowingAndNotOccluded() 1504222d9a7fb87d73e1443ec1a2de9782b05741af6Jorim Jaggi && state.statusBarState == StatusBarState.KEYGUARD) { 15103c701ec58ff6de3cc3c53b05342a475a63a11cfJorim Jaggi mLp.inputFeatures |= WindowManager.LayoutParams.INPUT_FEATURE_DISABLE_USER_ACTIVITY; 15203c701ec58ff6de3cc3c53b05342a475a63a11cfJorim Jaggi } else { 15303c701ec58ff6de3cc3c53b05342a475a63a11cfJorim Jaggi mLp.inputFeatures &= ~WindowManager.LayoutParams.INPUT_FEATURE_DISABLE_USER_ACTIVITY; 15403c701ec58ff6de3cc3c53b05342a475a63a11cfJorim Jaggi } 15503c701ec58ff6de3cc3c53b05342a475a63a11cfJorim Jaggi } 15603c701ec58ff6de3cc3c53b05342a475a63a11cfJorim Jaggi 1575cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private void apply(State state) { 1585cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi applyKeyguardFlags(state); 1595cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi applyFocusableFlag(state); 1605cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi adjustScreenOrientation(state); 1615cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi applyHeight(state); 1625cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi applyUserActivityTimeout(state); 16303c701ec58ff6de3cc3c53b05342a475a63a11cfJorim Jaggi applyInputFeatures(state); 164a005f1b6853e8852c328f4fdc02fb8f9c9ae1cd6Jorim Jaggi applyFitsSystemWindows(state); 1655cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mWindowManager.updateViewLayout(mStatusBarView, mLp); 1665cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1675cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 1685cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void setKeyguardShowing(boolean showing) { 1695cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mCurrentState.keyguardShowing = showing; 1705cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi apply(mCurrentState); 1715cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1725cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 1735cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void setKeyguardOccluded(boolean occluded) { 1745cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mCurrentState.keyguardOccluded = occluded; 1755cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi apply(mCurrentState); 1765cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1775cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 1785cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void setKeyguardNeedsInput(boolean needsInput) { 1795cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mCurrentState.keyguardNeedsInput = needsInput; 1805cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi apply(mCurrentState); 1815cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1825cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 1835cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void setStatusBarExpanded(boolean expanded) { 1845cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mCurrentState.statusBarExpanded = expanded; 1855cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mCurrentState.statusBarFocusable = expanded; 1865cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi apply(mCurrentState); 1875cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1885cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 1895cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void setStatusBarFocusable(boolean focusable) { 1905cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mCurrentState.statusBarFocusable = focusable; 1915cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi apply(mCurrentState); 1925cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1935cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 1945cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void setKeyguardUserActivityTimeout(long timeout) { 1955cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mCurrentState.keyguardUserActivityTimeout = timeout; 1965cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi apply(mCurrentState); 1975cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1985cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 1995fd4d05aae4b8b0dc1d1b21a206e218f47b0ea3aJorim Jaggi public void setBouncerShowing(boolean showing) { 2005fd4d05aae4b8b0dc1d1b21a206e218f47b0ea3aJorim Jaggi mCurrentState.bouncerShowing = showing; 2015fd4d05aae4b8b0dc1d1b21a206e218f47b0ea3aJorim Jaggi apply(mCurrentState); 2025fd4d05aae4b8b0dc1d1b21a206e218f47b0ea3aJorim Jaggi } 2035fd4d05aae4b8b0dc1d1b21a206e218f47b0ea3aJorim Jaggi 204ecbab3662d4474bbb45477939aaa167eb883212bJorim Jaggi /** 205ecbab3662d4474bbb45477939aaa167eb883212bJorim Jaggi * @param state The {@link StatusBarState} of the status bar. 206ecbab3662d4474bbb45477939aaa167eb883212bJorim Jaggi */ 207ecbab3662d4474bbb45477939aaa167eb883212bJorim Jaggi public void setStatusBarState(int state) { 208ecbab3662d4474bbb45477939aaa167eb883212bJorim Jaggi mCurrentState.statusBarState = state; 209ecbab3662d4474bbb45477939aaa167eb883212bJorim Jaggi apply(mCurrentState); 210ecbab3662d4474bbb45477939aaa167eb883212bJorim Jaggi } 211ecbab3662d4474bbb45477939aaa167eb883212bJorim Jaggi 2125cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private static class State { 2135cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi boolean keyguardShowing; 2145cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi boolean keyguardOccluded; 2155cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi boolean keyguardNeedsInput; 2165cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi boolean statusBarExpanded; 2175cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi boolean statusBarFocusable; 2185cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi long keyguardUserActivityTimeout; 2195fd4d05aae4b8b0dc1d1b21a206e218f47b0ea3aJorim Jaggi boolean bouncerShowing; 2205cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 221ecbab3662d4474bbb45477939aaa167eb883212bJorim Jaggi /** 222ecbab3662d4474bbb45477939aaa167eb883212bJorim Jaggi * The {@link BaseStatusBar} state from the status bar. 223ecbab3662d4474bbb45477939aaa167eb883212bJorim Jaggi */ 224ecbab3662d4474bbb45477939aaa167eb883212bJorim Jaggi int statusBarState; 225ecbab3662d4474bbb45477939aaa167eb883212bJorim Jaggi 2265cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private boolean isKeyguardShowingAndNotOccluded() { 2275cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi return keyguardShowing && !keyguardOccluded; 2285cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 2295cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 2305cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi} 231