NavBar: Slippery on the unsecured lock screen.

The NavBar is always non-slippery, except when:
 - the notification shade is showing
 - the 3 buttons (back,home,recents) are disabled

Also fix unrelated bug that ignored the "show panel delay"
before the first config change.

Bug: 6614842
Change-Id: Ib40adaef122b563809398fdebbd8a88d8f0c7ffd
This commit is contained in:
John Spurlock
2012-06-13 11:19:51 -04:00
parent c07dc74374
commit d5ef54658b
2 changed files with 29 additions and 18 deletions

View File

@@ -225,11 +225,28 @@ public class NavigationBarView extends LinearLayout {
final boolean disableRecent = ((disabledFlags & View.STATUS_BAR_DISABLE_RECENT) != 0);
final boolean disableBack = ((disabledFlags & View.STATUS_BAR_DISABLE_BACK) != 0);
setSlippery(disableHome && disableRecent && disableBack);
getBackButton() .setVisibility(disableBack ? View.INVISIBLE : View.VISIBLE);
getHomeButton() .setVisibility(disableHome ? View.INVISIBLE : View.VISIBLE);
getRecentsButton().setVisibility(disableRecent ? View.INVISIBLE : View.VISIBLE);
}
public void setSlippery(boolean newSlippery) {
WindowManager.LayoutParams lp = (WindowManager.LayoutParams) getLayoutParams();
if (lp != null) {
boolean oldSlippery = (lp.flags & WindowManager.LayoutParams.FLAG_SLIPPERY) != 0;
if (!oldSlippery && newSlippery) {
lp.flags |= WindowManager.LayoutParams.FLAG_SLIPPERY;
} else if (oldSlippery && !newSlippery) {
lp.flags &= ~WindowManager.LayoutParams.FLAG_SLIPPERY;
} else {
return;
}
WindowManagerImpl.getDefault().updateViewLayout(this, lp);
}
}
public void setMenuVisibility(final boolean show) {
setMenuVisibility(show, false);
}

View File

@@ -376,6 +376,8 @@ public class PhoneStatusBar extends BaseStatusBar {
mIntruderAlertView.setBar(this);
}
updateShowSearchHoldoff();
mStatusBarView.mService = this;
mChoreographer = Choreographer.getInstance();
@@ -663,7 +665,6 @@ public class PhoneStatusBar extends BaseStatusBar {
lp.setTitle("NavigationBar");
lp.windowAnimations = 0;
return lp;
}
@@ -808,8 +809,12 @@ public class PhoneStatusBar extends BaseStatusBar {
@Override
protected void onConfigurationChanged(Configuration newConfig) {
updateRecentsPanel();
mShowSearchHoldoff = mContext.getResources().getInteger(
R.integer.config_show_search_delay);
updateShowSearchHoldoff();
}
private void updateShowSearchHoldoff() {
mShowSearchHoldoff = mContext.getResources().getInteger(
R.integer.config_show_search_delay);
}
private void loadNotificationShade() {
@@ -1174,7 +1179,8 @@ public class PhoneStatusBar extends BaseStatusBar {
mExpandedVisible = true;
mPile.setLayoutTransitionsEnabled(true);
makeSlippery(mNavigationBarView, true);
if (mNavigationBarView != null)
mNavigationBarView.setSlippery(true);
updateCarrierLabelVisibility(true);
@@ -1198,19 +1204,6 @@ public class PhoneStatusBar extends BaseStatusBar {
visibilityChanged(true);
}
private static void makeSlippery(View view, boolean slippery) {
if (view == null) {
return;
}
WindowManager.LayoutParams lp = (WindowManager.LayoutParams) view.getLayoutParams();
if (slippery) {
lp.flags |= WindowManager.LayoutParams.FLAG_SLIPPERY;
} else {
lp.flags &= ~WindowManager.LayoutParams.FLAG_SLIPPERY;
}
WindowManagerImpl.getDefault().updateViewLayout(view, lp);
}
public void animateExpand() {
if (SPEW) Slog.d(TAG, "Animate expand: expanded=" + mExpanded);
if ((mDisabled & StatusBarManager.DISABLE_EXPAND) != 0) {
@@ -1295,8 +1288,9 @@ public class PhoneStatusBar extends BaseStatusBar {
}
mExpandedVisible = false;
mPile.setLayoutTransitionsEnabled(false);
if (mNavigationBarView != null)
mNavigationBarView.setSlippery(false);
visibilityChanged(false);
makeSlippery(mNavigationBarView, false);
// Shrink the window to the size of the status bar only
WindowManager.LayoutParams lp = (WindowManager.LayoutParams) mStatusBarWindow.getLayoutParams();