diff options
| author | 2011-09-14 16:26:22 -0700 | |
|---|---|---|
| committer | 2011-09-14 16:26:22 -0700 | |
| commit | 192b98c08edb6e6d1fd634454c9b4b4a2b546bfd (patch) | |
| tree | 50dbc3a0cd490839858edf202db98a8767a03c81 | |
| parent | 4e2134b76e64b6c4bab599b2f069624e0556a858 (diff) | |
| parent | 6da2b76ea496129da5370bfafd667ee94907a356 (diff) | |
Merge "Fix disappearing BACK button."
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java | 30 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java | 55 |
2 files changed, 52 insertions, 33 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java index cd361add099d..0448da732a11 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -42,7 +42,7 @@ import com.android.systemui.R; public class NavigationBarView extends LinearLayout { final static boolean DEBUG = false; - final static String TAG = "NavigationBarView"; + final static String TAG = "PhoneStatusBar/NavigationBarView"; final static boolean DEBUG_DEADZONE = false; @@ -60,6 +60,7 @@ public class NavigationBarView extends LinearLayout { boolean mVertical; boolean mHidden, mLowProfile; + int mDisabledFlags = 0; public View getRecentsButton() { return mCurrentView.findViewById(R.id.recent_apps); @@ -99,7 +100,7 @@ public class NavigationBarView extends LinearLayout { // even though setting the systemUI visibility below will turn these views // on, we need them to come up faster so that they can catch this motion // event - setLowProfile(false, false); + setLowProfile(false, false, false); try { mBarService.setSystemUiVisibility(0); @@ -110,9 +111,18 @@ public class NavigationBarView extends LinearLayout { } }; - public void setNavigationVisibility(int disabledFlags) { - boolean disableNavigation = ((disabledFlags & View.STATUS_BAR_DISABLE_NAVIGATION) != 0); - boolean disableBack = ((disabledFlags & View.STATUS_BAR_DISABLE_BACK) != 0); + public void setDisabledFlags(int disabledFlags) { + Slog.d(TAG, "setDisabledFlags: " + disabledFlags); + setDisabledFlags(disabledFlags, false); + } + + public void setDisabledFlags(int disabledFlags, boolean force) { + if (!force && mDisabledFlags == disabledFlags) return; + + mDisabledFlags = disabledFlags; + + final boolean disableNavigation = ((disabledFlags & View.STATUS_BAR_DISABLE_NAVIGATION) != 0); + final boolean disableBack = ((disabledFlags & View.STATUS_BAR_DISABLE_BACK) != 0); getBackButton() .setVisibility(disableBack ? View.INVISIBLE : View.VISIBLE); getHomeButton() .setVisibility(disableNavigation ? View.INVISIBLE : View.VISIBLE); @@ -121,11 +131,11 @@ public class NavigationBarView extends LinearLayout { } public void setLowProfile(final boolean lightsOut) { - setLowProfile(lightsOut, true); + setLowProfile(lightsOut, true, false); } - public void setLowProfile(final boolean lightsOut, final boolean animate) { - if (lightsOut == mLowProfile) return; + public void setLowProfile(final boolean lightsOut, final boolean animate, final boolean force) { + if (!force && lightsOut == mLowProfile) return; mLowProfile = lightsOut; @@ -245,6 +255,10 @@ public class NavigationBarView extends LinearLayout { mCurrentView.setVisibility(View.VISIBLE); mVertical = (rot == Surface.ROTATION_90 || rot == Surface.ROTATION_270); + // force the low profile & disabled states into compliance + setLowProfile(mLowProfile, false, true /* force */); + setDisabledFlags(mDisabledFlags, true /* force */); + if (DEBUG_DEADZONE) { mCurrentView.findViewById(R.id.deadzone).setBackgroundColor(0x808080FF); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 0b65d012bf3e..590bd3c7908a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -297,7 +297,7 @@ public class PhoneStatusBar extends StatusBar { mNavigationBarView = (NavigationBarView) View.inflate(context, R.layout.navigation_bar, null); - setNavigationVisibility(mDisabled); + mNavigationBarView.setDisabledFlags(mDisabled); sb.setOnSystemUiVisibilityChangeListener( new View.OnSystemUiVisibilityChangeListener() { @@ -1083,62 +1083,67 @@ public class PhoneStatusBar extends StatusBar { old, state, diff)); } + StringBuilder flagdbg = new StringBuilder(); + flagdbg.append("disable: < "); + flagdbg.append(((state & StatusBarManager.DISABLE_EXPAND) != 0) ? "EXPAND" : "expand"); + flagdbg.append(((diff & StatusBarManager.DISABLE_EXPAND) != 0) ? "* " : " "); + flagdbg.append(((state & StatusBarManager.DISABLE_NOTIFICATION_ICONS) != 0) ? "ICONS" : "icons"); + flagdbg.append(((diff & StatusBarManager.DISABLE_NOTIFICATION_ICONS) != 0) ? "* " : " "); + flagdbg.append(((state & StatusBarManager.DISABLE_NOTIFICATION_ALERTS) != 0) ? "ALERTS" : "alerts"); + flagdbg.append(((diff & StatusBarManager.DISABLE_NOTIFICATION_ALERTS) != 0) ? "* " : " "); + flagdbg.append(((state & StatusBarManager.DISABLE_NOTIFICATION_TICKER) != 0) ? "TICKER" : "ticker"); + flagdbg.append(((diff & StatusBarManager.DISABLE_NOTIFICATION_TICKER) != 0) ? "* " : " "); + flagdbg.append(((state & StatusBarManager.DISABLE_SYSTEM_INFO) != 0) ? "SYSTEM_INFO" : "system_info"); + flagdbg.append(((diff & StatusBarManager.DISABLE_SYSTEM_INFO) != 0) ? "* " : " "); + flagdbg.append(((state & StatusBarManager.DISABLE_NAVIGATION) != 0) ? "NAVIGATION" : "navigation"); + flagdbg.append(((diff & StatusBarManager.DISABLE_NAVIGATION) != 0) ? "* " : " "); + flagdbg.append(((state & StatusBarManager.DISABLE_BACK) != 0) ? "BACK" : "back"); + flagdbg.append(((diff & StatusBarManager.DISABLE_BACK) != 0) ? "* " : " "); + flagdbg.append(((state & StatusBarManager.DISABLE_CLOCK) != 0) ? "CLOCK" : "clock"); + flagdbg.append(((diff & StatusBarManager.DISABLE_CLOCK) != 0) ? "* " : " "); + flagdbg.append(">"); + Slog.d(TAG, flagdbg.toString()); + if ((diff & StatusBarManager.DISABLE_CLOCK) != 0) { boolean show = (state & StatusBarManager.DISABLE_CLOCK) == 0; showClock(show); } if ((diff & StatusBarManager.DISABLE_EXPAND) != 0) { if ((state & StatusBarManager.DISABLE_EXPAND) != 0) { - Slog.d(TAG, "DISABLE_EXPAND: yes"); animateCollapse(); } } if ((diff & (StatusBarManager.DISABLE_NAVIGATION | StatusBarManager.DISABLE_BACK)) != 0) { - setNavigationVisibility(state & - (StatusBarManager.DISABLE_NAVIGATION | StatusBarManager.DISABLE_BACK)); + // the nav bar will take care of DISABLE_NAVIGATION and DISABLE_BACK + mNavigationBarView.setDisabledFlags(state); + + if ((state & StatusBarManager.DISABLE_NAVIGATION) != 0) { + // close recents if it's visible + mHandler.removeMessages(MSG_CLOSE_RECENTS_PANEL); + mHandler.sendEmptyMessage(MSG_CLOSE_RECENTS_PANEL); + } } if ((diff & StatusBarManager.DISABLE_NOTIFICATION_ICONS) != 0) { if ((state & StatusBarManager.DISABLE_NOTIFICATION_ICONS) != 0) { - Slog.d(TAG, "DISABLE_NOTIFICATION_ICONS: yes"); if (mTicking) { mTicker.halt(); } else { setNotificationIconVisibility(false, com.android.internal.R.anim.fade_out); } } else { - Slog.d(TAG, "DISABLE_NOTIFICATION_ICONS: no"); if (!mExpandedVisible) { setNotificationIconVisibility(true, com.android.internal.R.anim.fade_in); } } } else if ((diff & StatusBarManager.DISABLE_NOTIFICATION_TICKER) != 0) { if (mTicking && (state & StatusBarManager.DISABLE_NOTIFICATION_TICKER) != 0) { - Slog.d(TAG, "DISABLE_NOTIFICATION_TICKER: yes"); mTicker.halt(); } } } - private void setNavigationVisibility(int visibility) { - boolean disableNavigation = ((visibility & StatusBarManager.DISABLE_NAVIGATION) != 0); - boolean disableBack = ((visibility & StatusBarManager.DISABLE_BACK) != 0); - - Slog.i(TAG, "DISABLE_BACK: " + (disableBack ? "yes" : "no")); - Slog.i(TAG, "DISABLE_NAVIGATION: " + (disableNavigation ? "yes" : "no")); - - if (mNavigationBarView != null) { - mNavigationBarView.setNavigationVisibility(visibility); - } - - if (disableNavigation) { - // close recents if it's visible - mHandler.removeMessages(MSG_CLOSE_RECENTS_PANEL); - mHandler.sendEmptyMessage(MSG_CLOSE_RECENTS_PANEL); - } - } - /** * All changes to the status bar and notifications funnel through here and are batched. */ |