From 01915a1a2b5b4584ece9bfd2e2c3c05d3b8c1088 Mon Sep 17 00:00:00 2001 From: Justin Paupore Date: Wed, 28 Sep 2016 17:41:26 -0700 Subject: [PATCH] SystemUI: Disable alternate nav bar in car mode Change ag/813926 introduced larger navigation buttons when in car mode, and ag/891860 hid the recents button while car mode is active. This change deprecates these behaviors, and puts them behind a flag. A future change will remove this behavior entirely. Bug: 31754884 Bug: 31754537 Change-Id: Iab7ec657105c08d8c45f76646ce0edbf3a5aa017 --- .../statusbar/phone/NavigationBarView.java | 42 ++++++++++++------- .../server/policy/PhoneWindowManager.java | 38 +++++++++-------- 2 files changed, 47 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 45d51b01210e2..0bc70b53ac524 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -59,6 +59,8 @@ public class NavigationBarView extends LinearLayout { // slippery nav bar when everything is disabled, e.g. during setup final static boolean SLIPPERY_WHEN_DISABLED = true; + final static boolean ALTERNATE_CAR_MODE_UI = false; + final Display mDisplay; View mCurrentView = null; View[] mRotatedViews = new View[4]; @@ -94,7 +96,8 @@ public class NavigationBarView extends LinearLayout { private OnVerticalChangedListener mOnVerticalChangedListener; private boolean mLayoutTransitionsEnabled = true; private boolean mWakeAndUnlocking; - private boolean mCarMode = false; + private boolean mUseCarModeUi = false; + private boolean mInCarMode = false; private boolean mDockedStackExists; private final SparseArray mButtonDisatchers = new SparseArray<>(); @@ -290,7 +293,9 @@ public class NavigationBarView extends LinearLayout { mMenuIcon = ctx.getDrawable(R.drawable.ic_sysbar_menu); mImeIcon = ctx.getDrawable(R.drawable.ic_ime_switcher_default); - updateCarModeIcons(ctx); + if (ALTERNATE_CAR_MODE_UI) { + updateCarModeIcons(ctx); + } } } @@ -341,14 +346,14 @@ public class NavigationBarView extends LinearLayout { // carmode, respectively. Recents are not available in CarMode in nav bar so change // to recent icon is not required. Drawable backIcon = (backAlt) - ? getBackIconWithAlt(mCarMode, mVertical) - : getBackIcon(mCarMode, mVertical); + ? getBackIconWithAlt(mUseCarModeUi, mVertical) + : getBackIcon(mUseCarModeUi, mVertical); getBackButton().setImageDrawable(backIcon); updateRecentsIcon(); - if (mCarMode) { + if (mUseCarModeUi) { getHomeButton().setImageDrawable(mHomeCarModeIcon); } else { getHomeButton().setImageDrawable(mHomeDefaultIcon); @@ -376,9 +381,9 @@ public class NavigationBarView extends LinearLayout { final boolean disableHome = ((disabledFlags & View.STATUS_BAR_DISABLE_HOME) != 0); - // Disable recents always in car mode. - boolean disableRecent = ( - mCarMode || (disabledFlags & View.STATUS_BAR_DISABLE_RECENT) != 0); + // Always disable recents when alternate car mode UI is active. + boolean disableRecent = mUseCarModeUi + || ((disabledFlags & View.STATUS_BAR_DISABLE_RECENT) != 0); final boolean disableBack = ((disabledFlags & View.STATUS_BAR_DISABLE_BACK) != 0) && ((mNavigationIconHints & StatusBarManager.NAVIGATION_HINT_BACK_ALT) == 0); final boolean disableSearch = ((disabledFlags & View.STATUS_BAR_DISABLE_SEARCH) != 0); @@ -623,14 +628,19 @@ public class NavigationBarView extends LinearLayout { boolean uiCarModeChanged = false; if (newConfig != null) { int uiMode = newConfig.uiMode & Configuration.UI_MODE_TYPE_MASK; - if (mCarMode && uiMode != Configuration.UI_MODE_TYPE_CAR) { - mCarMode = false; - uiCarModeChanged = true; - getHomeButton().setCarMode(mCarMode); - } else if (uiMode == Configuration.UI_MODE_TYPE_CAR) { - mCarMode = true; - uiCarModeChanged = true; - getHomeButton().setCarMode(mCarMode); + final boolean isCarMode = (uiMode == Configuration.UI_MODE_TYPE_CAR); + + if (isCarMode != mInCarMode) { + mInCarMode = isCarMode; + getHomeButton().setCarMode(isCarMode); + + if (ALTERNATE_CAR_MODE_UI) { + mUseCarModeUi = isCarMode; + uiCarModeChanged = true; + } else { + // Don't use car mode behavior if ALTERNATE_CAR_MODE_UI not set. + mUseCarModeUi = false; + } } } return uiCarModeChanged; diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 7162b9466a566..3ec3ceaf544f1 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -182,6 +182,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { // No longer recommended for desk docks; static final boolean ENABLE_DESK_DOCK_HOME_CAPTURE = false; + static final boolean ALTERNATE_CAR_MODE_NAV_SIZE = false; + static final int SHORT_PRESS_POWER_NOTHING = 0; static final int SHORT_PRESS_POWER_GO_TO_SLEEP = 1; static final int SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP = 2; @@ -2336,22 +2338,24 @@ public class PhoneWindowManager implements WindowManagerPolicy { mNavigationBarWidthForRotationDefault[mSeascapeRotation] = res.getDimensionPixelSize(com.android.internal.R.dimen.navigation_bar_width); - // Height of the navigation bar when presented horizontally at bottom - mNavigationBarHeightForRotationInCarMode[mPortraitRotation] = - mNavigationBarHeightForRotationInCarMode[mUpsideDownRotation] = - res.getDimensionPixelSize( - com.android.internal.R.dimen.navigation_bar_height_car_mode); - mNavigationBarHeightForRotationInCarMode[mLandscapeRotation] = - mNavigationBarHeightForRotationInCarMode[mSeascapeRotation] = res.getDimensionPixelSize( - com.android.internal.R.dimen.navigation_bar_height_landscape_car_mode); + if (ALTERNATE_CAR_MODE_NAV_SIZE) { + // Height of the navigation bar when presented horizontally at bottom + mNavigationBarHeightForRotationInCarMode[mPortraitRotation] = + mNavigationBarHeightForRotationInCarMode[mUpsideDownRotation] = + res.getDimensionPixelSize( + com.android.internal.R.dimen.navigation_bar_height_car_mode); + mNavigationBarHeightForRotationInCarMode[mLandscapeRotation] = + mNavigationBarHeightForRotationInCarMode[mSeascapeRotation] = res.getDimensionPixelSize( + com.android.internal.R.dimen.navigation_bar_height_landscape_car_mode); - // Width of the navigation bar when presented vertically along one side - mNavigationBarWidthForRotationInCarMode[mPortraitRotation] = - mNavigationBarWidthForRotationInCarMode[mUpsideDownRotation] = - mNavigationBarWidthForRotationInCarMode[mLandscapeRotation] = - mNavigationBarWidthForRotationInCarMode[mSeascapeRotation] = - res.getDimensionPixelSize( - com.android.internal.R.dimen.navigation_bar_width_car_mode); + // Width of the navigation bar when presented vertically along one side + mNavigationBarWidthForRotationInCarMode[mPortraitRotation] = + mNavigationBarWidthForRotationInCarMode[mUpsideDownRotation] = + mNavigationBarWidthForRotationInCarMode[mLandscapeRotation] = + mNavigationBarWidthForRotationInCarMode[mSeascapeRotation] = + res.getDimensionPixelSize( + com.android.internal.R.dimen.navigation_bar_width_car_mode); + } } /** {@inheritDoc} */ @@ -2483,7 +2487,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } private int getNavigationBarWidth(int rotation, int uiMode) { - if ((uiMode & UI_MODE_TYPE_MASK) == UI_MODE_TYPE_CAR) { + if (ALTERNATE_CAR_MODE_NAV_SIZE && (uiMode & UI_MODE_TYPE_MASK) == UI_MODE_TYPE_CAR) { return mNavigationBarWidthForRotationInCarMode[rotation]; } else { return mNavigationBarWidthForRotationDefault[rotation]; @@ -2504,7 +2508,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } private int getNavigationBarHeight(int rotation, int uiMode) { - if ((uiMode & UI_MODE_TYPE_MASK) == UI_MODE_TYPE_CAR) { + if (ALTERNATE_CAR_MODE_NAV_SIZE && (uiMode & UI_MODE_TYPE_MASK) == UI_MODE_TYPE_CAR) { return mNavigationBarHeightForRotationInCarMode[rotation]; } else { return mNavigationBarHeightForRotationDefault[rotation];