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
This commit is contained in:
Justin Paupore
2016-09-28 17:41:26 -07:00
parent e422b0b29f
commit 01915a1a2b
2 changed files with 47 additions and 33 deletions

View File

@@ -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<ButtonDispatcher> 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;

View File

@@ -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];