Merge "DO NOT MERGE Add support for unprovisioned top nav bar" into qt-qpr1-dev
This commit is contained in:
@@ -0,0 +1,147 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
~ Copyright (C) 2019 The Android Open Source Project
|
||||||
|
~
|
||||||
|
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
~ you may not use this file except in compliance with the License.
|
||||||
|
~ You may obtain a copy of the License at
|
||||||
|
~
|
||||||
|
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
~
|
||||||
|
~ Unless required by applicable law or agreed to in writing, software
|
||||||
|
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
~ See the License for the specific language governing permissions and
|
||||||
|
~ limitations under the License
|
||||||
|
-->
|
||||||
|
|
||||||
|
<com.android.systemui.statusbar.car.CarNavigationBarView
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:systemui="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:id="@+id/car_top_bar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@drawable/system_bar_background"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1">
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/left_hvac_container"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_alignParentStart="true"
|
||||||
|
>
|
||||||
|
|
||||||
|
<com.android.systemui.statusbar.car.CarNavigationButton
|
||||||
|
android:id="@+id/hvacleft"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@null"
|
||||||
|
systemui:broadcast="true"
|
||||||
|
systemui:intent="intent:#Intent;action=android.car.intent.action.TOGGLE_HVAC_CONTROLS;end"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<com.android.systemui.statusbar.hvac.AnimatedTemperatureView
|
||||||
|
android:id="@+id/lefttext"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:paddingStart="@*android:dimen/car_padding_4"
|
||||||
|
android:paddingEnd="16dp"
|
||||||
|
android:gravity="center_vertical|start"
|
||||||
|
android:minEms="4"
|
||||||
|
android:textAppearance="@style/TextAppearance.CarStatus"
|
||||||
|
systemui:hvacAreaId="49"
|
||||||
|
systemui:hvacMaxText="@string/hvac_max_text"
|
||||||
|
systemui:hvacMaxValue="@dimen/hvac_max_value"
|
||||||
|
systemui:hvacMinText="@string/hvac_min_text"
|
||||||
|
systemui:hvacMinValue="@dimen/hvac_min_value"
|
||||||
|
systemui:hvacPivotOffset="60dp"
|
||||||
|
systemui:hvacPropertyId="358614275"
|
||||||
|
systemui:hvacTempFormat="%.0f\u00B0"
|
||||||
|
/>
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/clock_container"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_centerInParent="true">
|
||||||
|
<com.android.systemui.statusbar.car.CarNavigationButton
|
||||||
|
android:id="@+id/qs"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@null"/>
|
||||||
|
<com.android.systemui.statusbar.policy.Clock
|
||||||
|
android:id="@+id/clock"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:elevation="5dp"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:textAppearance="@style/TextAppearance.StatusBar.Clock"/>
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/system_icon_area"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_centerHorizontal="true"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_toEndOf="@+id/clock_container"
|
||||||
|
android:paddingStart="@*android:dimen/car_padding_1"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
>
|
||||||
|
|
||||||
|
<include
|
||||||
|
layout="@layout/system_icons"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:paddingStart="4dp"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
/>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/right_hvac_container"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
>
|
||||||
|
|
||||||
|
<com.android.systemui.statusbar.car.CarNavigationButton
|
||||||
|
android:id="@+id/hvacright"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@null"
|
||||||
|
systemui:broadcast="true"
|
||||||
|
systemui:intent="intent:#Intent;action=android.car.intent.action.TOGGLE_HVAC_CONTROLS;end"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<com.android.systemui.statusbar.hvac.AnimatedTemperatureView
|
||||||
|
android:id="@+id/righttext"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:paddingStart="16dp"
|
||||||
|
android:paddingEnd="@*android:dimen/car_padding_4"
|
||||||
|
android:gravity="center_vertical|end"
|
||||||
|
android:minEms="4"
|
||||||
|
android:textAppearance="@style/TextAppearance.CarStatus"
|
||||||
|
systemui:hvacAreaId="68"
|
||||||
|
systemui:hvacMaxText="@string/hvac_max_text"
|
||||||
|
systemui:hvacMaxValue="@dimen/hvac_max_value"
|
||||||
|
systemui:hvacMinText="@string/hvac_min_text"
|
||||||
|
systemui:hvacMinValue="@dimen/hvac_min_value"
|
||||||
|
systemui:hvacPivotOffset="60dp"
|
||||||
|
systemui:hvacPropertyId="358614275"
|
||||||
|
systemui:hvacTempFormat="%.0f\u00B0"
|
||||||
|
/>
|
||||||
|
</FrameLayout>
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
</com.android.systemui.statusbar.car.CarNavigationBarView>
|
||||||
@@ -69,10 +69,10 @@
|
|||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<include layout="@layout/car_top_navigation_bar"
|
<FrameLayout
|
||||||
|
android:id="@+id/car_top_navigation_bar_container"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"/>
|
||||||
/>
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<include layout="@layout/brightness_mirror"/>
|
<include layout="@layout/brightness_mirror"/>
|
||||||
|
|||||||
@@ -109,9 +109,11 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
|||||||
private BatteryMeterView mBatteryMeterView;
|
private BatteryMeterView mBatteryMeterView;
|
||||||
private Drawable mNotificationPanelBackground;
|
private Drawable mNotificationPanelBackground;
|
||||||
|
|
||||||
|
private ViewGroup mTopNavigationBarContainer;
|
||||||
private ViewGroup mNavigationBarWindow;
|
private ViewGroup mNavigationBarWindow;
|
||||||
private ViewGroup mLeftNavigationBarWindow;
|
private ViewGroup mLeftNavigationBarWindow;
|
||||||
private ViewGroup mRightNavigationBarWindow;
|
private ViewGroup mRightNavigationBarWindow;
|
||||||
|
private CarNavigationBarView mTopNavigationBarView;
|
||||||
private CarNavigationBarView mNavigationBarView;
|
private CarNavigationBarView mNavigationBarView;
|
||||||
private CarNavigationBarView mLeftNavigationBarView;
|
private CarNavigationBarView mLeftNavigationBarView;
|
||||||
private CarNavigationBarView mRightNavigationBarView;
|
private CarNavigationBarView mRightNavigationBarView;
|
||||||
@@ -123,7 +125,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
|||||||
private CarFacetButtonController mCarFacetButtonController;
|
private CarFacetButtonController mCarFacetButtonController;
|
||||||
private ActivityManagerWrapper mActivityManagerWrapper;
|
private ActivityManagerWrapper mActivityManagerWrapper;
|
||||||
private DeviceProvisionedController mDeviceProvisionedController;
|
private DeviceProvisionedController mDeviceProvisionedController;
|
||||||
private boolean mDeviceIsProvisioned = true;
|
private boolean mDeviceIsSetUpForUser = true;
|
||||||
private HvacController mHvacController;
|
private HvacController mHvacController;
|
||||||
private DrivingStateHelper mDrivingStateHelper;
|
private DrivingStateHelper mDrivingStateHelper;
|
||||||
private PowerManagerHelper mPowerManagerHelper;
|
private PowerManagerHelper mPowerManagerHelper;
|
||||||
@@ -144,6 +146,9 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
|||||||
private boolean mNotificationListAtBottom;
|
private boolean mNotificationListAtBottom;
|
||||||
// Was the notification list at the bottom when the user first touched the screen
|
// Was the notification list at the bottom when the user first touched the screen
|
||||||
private boolean mNotificationListAtBottomAtTimeOfTouch;
|
private boolean mNotificationListAtBottomAtTimeOfTouch;
|
||||||
|
// To be attached to the top navigation bar (i.e. status bar) to pull down the notification
|
||||||
|
// panel.
|
||||||
|
private View.OnTouchListener mTopNavBarNotificationTouchListener;
|
||||||
// To be attached to the navigation bars such that they can close the notification panel if
|
// To be attached to the navigation bars such that they can close the notification panel if
|
||||||
// it's open.
|
// it's open.
|
||||||
private View.OnTouchListener mNavBarNotificationTouchListener;
|
private View.OnTouchListener mNavBarNotificationTouchListener;
|
||||||
@@ -193,7 +198,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
|||||||
// get the provisioned state before calling the parent class since it's that flow that
|
// get the provisioned state before calling the parent class since it's that flow that
|
||||||
// builds the nav bar
|
// builds the nav bar
|
||||||
mDeviceProvisionedController = Dependency.get(DeviceProvisionedController.class);
|
mDeviceProvisionedController = Dependency.get(DeviceProvisionedController.class);
|
||||||
mDeviceIsProvisioned = mDeviceProvisionedController.isDeviceProvisioned();
|
mDeviceIsSetUpForUser = mDeviceProvisionedController.isCurrentUserSetup();
|
||||||
|
|
||||||
// Keyboard related setup, before nav bars are created.
|
// Keyboard related setup, before nav bars are created.
|
||||||
mHideNavBarForKeyboard = mContext.getResources().getBoolean(
|
mHideNavBarForKeyboard = mContext.getResources().getBoolean(
|
||||||
@@ -205,6 +210,10 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
|||||||
mScreenLifecycle = Dependency.get(ScreenLifecycle.class);
|
mScreenLifecycle = Dependency.get(ScreenLifecycle.class);
|
||||||
mScreenLifecycle.addObserver(mScreenObserver);
|
mScreenLifecycle.addObserver(mScreenObserver);
|
||||||
|
|
||||||
|
// Need to initialize HVAC controller before calling super.start - before system bars are
|
||||||
|
// created.
|
||||||
|
mHvacController = new HvacController(mContext);
|
||||||
|
|
||||||
super.start();
|
super.start();
|
||||||
mTaskStackListener = new TaskStackListenerImpl();
|
mTaskStackListener = new TaskStackListenerImpl();
|
||||||
mActivityManagerWrapper = ActivityManagerWrapper.getInstance();
|
mActivityManagerWrapper = ActivityManagerWrapper.getInstance();
|
||||||
@@ -223,25 +232,18 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
|||||||
|
|
||||||
mHvacController.connectToCarService();
|
mHvacController.connectToCarService();
|
||||||
|
|
||||||
CarSystemUIFactory factory = SystemUIFactory.getInstance();
|
|
||||||
if (!mDeviceIsProvisioned) {
|
|
||||||
mDeviceProvisionedController.addCallback(
|
mDeviceProvisionedController.addCallback(
|
||||||
new DeviceProvisionedController.DeviceProvisionedListener() {
|
new DeviceProvisionedController.DeviceProvisionedListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onDeviceProvisionedChanged() {
|
public void onUserSetupChanged() {
|
||||||
mHandler.post(() -> {
|
mHandler.post(() -> restartNavBarsIfNecessary());
|
||||||
// on initial boot we are getting a call even though the value
|
}
|
||||||
// is the same so we are confirming the reset is needed
|
|
||||||
boolean deviceProvisioned =
|
@Override
|
||||||
mDeviceProvisionedController.isDeviceProvisioned();
|
public void onUserSwitched() {
|
||||||
if (mDeviceIsProvisioned != deviceProvisioned) {
|
mHandler.post(() -> restartNavBarsIfNecessary());
|
||||||
mDeviceIsProvisioned = deviceProvisioned;
|
|
||||||
restartNavBars();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Register a listener for driving state changes.
|
// Register a listener for driving state changes.
|
||||||
mDrivingStateHelper = new DrivingStateHelper(mContext, this::onDrivingStateChanged);
|
mDrivingStateHelper = new DrivingStateHelper(mContext, this::onDrivingStateChanged);
|
||||||
@@ -253,6 +255,14 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
|||||||
mSwitchToGuestTimer = new SwitchToGuestTimer(mContext);
|
mSwitchToGuestTimer = new SwitchToGuestTimer(mContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void restartNavBarsIfNecessary() {
|
||||||
|
boolean currentUserSetup = mDeviceProvisionedController.isCurrentUserSetup();
|
||||||
|
if (mDeviceIsSetUpForUser != currentUserSetup) {
|
||||||
|
mDeviceIsSetUpForUser = currentUserSetup;
|
||||||
|
restartNavBars();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove all content from navbars and rebuild them. Used to allow for different nav bars
|
* Remove all content from navbars and rebuild them. Used to allow for different nav bars
|
||||||
* before and after the device is provisioned. . Also for change of density and font size.
|
* before and after the device is provisioned. . Also for change of density and font size.
|
||||||
@@ -261,8 +271,8 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
|||||||
// remove and reattach all hvac components such that we don't keep a reference to unused
|
// remove and reattach all hvac components such that we don't keep a reference to unused
|
||||||
// ui elements
|
// ui elements
|
||||||
mHvacController.removeAllComponents();
|
mHvacController.removeAllComponents();
|
||||||
addTemperatureViewToController(mStatusBarWindow);
|
|
||||||
mCarFacetButtonController.removeAll();
|
mCarFacetButtonController.removeAll();
|
||||||
|
|
||||||
if (mNavigationBarWindow != null) {
|
if (mNavigationBarWindow != null) {
|
||||||
mNavigationBarWindow.removeAllViews();
|
mNavigationBarWindow.removeAllViews();
|
||||||
mNavigationBarView = null;
|
mNavigationBarView = null;
|
||||||
@@ -356,7 +366,6 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
|||||||
@Override
|
@Override
|
||||||
protected void makeStatusBarView(@Nullable RegisterStatusBarResult result) {
|
protected void makeStatusBarView(@Nullable RegisterStatusBarResult result) {
|
||||||
super.makeStatusBarView(result);
|
super.makeStatusBarView(result);
|
||||||
mHvacController = new HvacController(mContext);
|
|
||||||
|
|
||||||
CarSystemUIFactory factory = SystemUIFactory.getInstance();
|
CarSystemUIFactory factory = SystemUIFactory.getInstance();
|
||||||
mCarFacetButtonController = factory.getCarDependencyComponent()
|
mCarFacetButtonController = factory.getCarDependencyComponent()
|
||||||
@@ -381,7 +390,8 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
|||||||
* touch listeners needed for opening and closing the notification panel
|
* touch listeners needed for opening and closing the notification panel
|
||||||
*/
|
*/
|
||||||
private void connectNotificationsUI() {
|
private void connectNotificationsUI() {
|
||||||
// Attached to the status bar to detect pull down of the notification shade.
|
// Attached to the top navigation bar (i.e. status bar) to detect pull down of the
|
||||||
|
// notification shade.
|
||||||
GestureDetector openGestureDetector = new GestureDetector(mContext,
|
GestureDetector openGestureDetector = new GestureDetector(mContext,
|
||||||
new OpenNotificationGestureListener() {
|
new OpenNotificationGestureListener() {
|
||||||
@Override
|
@Override
|
||||||
@@ -414,6 +424,18 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
|||||||
GestureDetector handleBarCloseNotificationGestureDetector = new GestureDetector(mContext,
|
GestureDetector handleBarCloseNotificationGestureDetector = new GestureDetector(mContext,
|
||||||
new HandleBarCloseNotificationGestureListener());
|
new HandleBarCloseNotificationGestureListener());
|
||||||
|
|
||||||
|
mTopNavBarNotificationTouchListener = (v, event) -> {
|
||||||
|
if (!mDeviceIsSetUpForUser) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
boolean consumed = openGestureDetector.onTouchEvent(event);
|
||||||
|
if (consumed) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
maybeCompleteAnimation(event);
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
mNavBarNotificationTouchListener =
|
mNavBarNotificationTouchListener =
|
||||||
(v, event) -> {
|
(v, event) -> {
|
||||||
boolean consumed = navBarCloseNotificationGestureDetector.onTouchEvent(event);
|
boolean consumed = navBarCloseNotificationGestureDetector.onTouchEvent(event);
|
||||||
@@ -424,21 +446,6 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
|||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
// The following are the ui elements that the user would call the status bar.
|
|
||||||
// This will set the status bar so it they can make call backs.
|
|
||||||
CarNavigationBarView topBar = mStatusBarWindow.findViewById(R.id.car_top_bar);
|
|
||||||
topBar.setStatusBar(this);
|
|
||||||
topBar.setStatusBarWindowTouchListener((v1, event1) -> {
|
|
||||||
|
|
||||||
boolean consumed = openGestureDetector.onTouchEvent(event1);
|
|
||||||
if (consumed) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
maybeCompleteAnimation(event1);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
mNotificationClickHandlerFactory = new NotificationClickHandlerFactory(
|
mNotificationClickHandlerFactory = new NotificationClickHandlerFactory(
|
||||||
mBarService,
|
mBarService,
|
||||||
launchResult -> {
|
launchResult -> {
|
||||||
@@ -745,23 +752,30 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void buildNavBarContent() {
|
private void buildNavBarContent() {
|
||||||
|
// Always build top bar.
|
||||||
|
buildTopBar((mDeviceIsSetUpForUser) ? R.layout.car_top_navigation_bar :
|
||||||
|
R.layout.car_top_navigation_bar_unprovisioned);
|
||||||
|
|
||||||
if (mShowBottom) {
|
if (mShowBottom) {
|
||||||
buildBottomBar((mDeviceIsProvisioned) ? R.layout.car_navigation_bar :
|
buildBottomBar((mDeviceIsSetUpForUser) ? R.layout.car_navigation_bar :
|
||||||
R.layout.car_navigation_bar_unprovisioned);
|
R.layout.car_navigation_bar_unprovisioned);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mShowLeft) {
|
if (mShowLeft) {
|
||||||
buildLeft((mDeviceIsProvisioned) ? R.layout.car_left_navigation_bar :
|
buildLeft((mDeviceIsSetUpForUser) ? R.layout.car_left_navigation_bar :
|
||||||
R.layout.car_left_navigation_bar_unprovisioned);
|
R.layout.car_left_navigation_bar_unprovisioned);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mShowRight) {
|
if (mShowRight) {
|
||||||
buildRight((mDeviceIsProvisioned) ? R.layout.car_right_navigation_bar :
|
buildRight((mDeviceIsSetUpForUser) ? R.layout.car_right_navigation_bar :
|
||||||
R.layout.car_right_navigation_bar_unprovisioned);
|
R.layout.car_right_navigation_bar_unprovisioned);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buildNavBarWindows() {
|
private void buildNavBarWindows() {
|
||||||
|
mTopNavigationBarContainer = mStatusBarWindow
|
||||||
|
.findViewById(R.id.car_top_navigation_bar_container);
|
||||||
|
|
||||||
if (mShowBottom) {
|
if (mShowBottom) {
|
||||||
mNavigationBarWindow = (ViewGroup) View.inflate(mContext,
|
mNavigationBarWindow = (ViewGroup) View.inflate(mContext,
|
||||||
R.layout.navigation_bar_window, null);
|
R.layout.navigation_bar_window, null);
|
||||||
@@ -883,6 +897,19 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
|||||||
mWindowManager.removeView(mNavigationBarWindow);
|
mWindowManager.removeView(mNavigationBarWindow);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void buildTopBar(int layout) {
|
||||||
|
mTopNavigationBarContainer.removeAllViews();
|
||||||
|
View.inflate(mContext, layout, mTopNavigationBarContainer);
|
||||||
|
mTopNavigationBarView = (CarNavigationBarView) mTopNavigationBarContainer.getChildAt(0);
|
||||||
|
if (mTopNavigationBarView == null) {
|
||||||
|
Log.e(TAG, "CarStatusBar failed inflate for R.layout.car_top_navigation_bar");
|
||||||
|
throw new RuntimeException("Unable to build top nav bar due to missing layout");
|
||||||
|
}
|
||||||
|
mTopNavigationBarView.setStatusBar(this);
|
||||||
|
addTemperatureViewToController(mTopNavigationBarView);
|
||||||
|
mTopNavigationBarView.setStatusBarWindowTouchListener(mTopNavBarNotificationTouchListener);
|
||||||
|
}
|
||||||
|
|
||||||
private void buildBottomBar(int layout) {
|
private void buildBottomBar(int layout) {
|
||||||
// SystemUI requires that the navigation bar view have a parent. Since the regular
|
// SystemUI requires that the navigation bar view have a parent. Since the regular
|
||||||
// StatusBar inflates navigation_bar_window as this parent view, use the same view for the
|
// StatusBar inflates navigation_bar_window as this parent view, use the same view for the
|
||||||
@@ -891,7 +918,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
|||||||
mNavigationBarView = (CarNavigationBarView) mNavigationBarWindow.getChildAt(0);
|
mNavigationBarView = (CarNavigationBarView) mNavigationBarWindow.getChildAt(0);
|
||||||
if (mNavigationBarView == null) {
|
if (mNavigationBarView == null) {
|
||||||
Log.e(TAG, "CarStatusBar failed inflate for R.layout.car_navigation_bar");
|
Log.e(TAG, "CarStatusBar failed inflate for R.layout.car_navigation_bar");
|
||||||
throw new RuntimeException("Unable to build botom nav bar due to missing layout");
|
throw new RuntimeException("Unable to build bottom nav bar due to missing layout");
|
||||||
}
|
}
|
||||||
mNavigationBarView.setStatusBar(this);
|
mNavigationBarView.setStatusBar(this);
|
||||||
addTemperatureViewToController(mNavigationBarView);
|
addTemperatureViewToController(mNavigationBarView);
|
||||||
@@ -902,7 +929,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
|||||||
View.inflate(mContext, layout, mLeftNavigationBarWindow);
|
View.inflate(mContext, layout, mLeftNavigationBarWindow);
|
||||||
mLeftNavigationBarView = (CarNavigationBarView) mLeftNavigationBarWindow.getChildAt(0);
|
mLeftNavigationBarView = (CarNavigationBarView) mLeftNavigationBarWindow.getChildAt(0);
|
||||||
if (mLeftNavigationBarView == null) {
|
if (mLeftNavigationBarView == null) {
|
||||||
Log.e(TAG, "CarStatusBar failed inflate for R.layout.car_navigation_bar");
|
Log.e(TAG, "CarStatusBar failed inflate for R.layout.car_left_navigation_bar");
|
||||||
throw new RuntimeException("Unable to build left nav bar due to missing layout");
|
throw new RuntimeException("Unable to build left nav bar due to missing layout");
|
||||||
}
|
}
|
||||||
mLeftNavigationBarView.setStatusBar(this);
|
mLeftNavigationBarView.setStatusBar(this);
|
||||||
@@ -915,7 +942,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
|||||||
View.inflate(mContext, layout, mRightNavigationBarWindow);
|
View.inflate(mContext, layout, mRightNavigationBarWindow);
|
||||||
mRightNavigationBarView = (CarNavigationBarView) mRightNavigationBarWindow.getChildAt(0);
|
mRightNavigationBarView = (CarNavigationBarView) mRightNavigationBarWindow.getChildAt(0);
|
||||||
if (mRightNavigationBarView == null) {
|
if (mRightNavigationBarView == null) {
|
||||||
Log.e(TAG, "CarStatusBar failed inflate for R.layout.car_navigation_bar");
|
Log.e(TAG, "CarStatusBar failed inflate for R.layout.car_right_navigation_bar");
|
||||||
throw new RuntimeException("Unable to build right nav bar due to missing layout");
|
throw new RuntimeException("Unable to build right nav bar due to missing layout");
|
||||||
}
|
}
|
||||||
mRightNavigationBarView.setStatusBar(this);
|
mRightNavigationBarView.setStatusBar(this);
|
||||||
|
|||||||
Reference in New Issue
Block a user