Loading packages/CarSystemUI/res/layout/sysui_primary_window.xml +7 −0 Original line number Original line Diff line number Diff line Loading @@ -15,9 +15,16 @@ ~ limitations under the License. ~ limitations under the License. --> --> <!-- Fullscreen views in sysui should be listed here in increasing Z order. --> <FrameLayout <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android" android:background="@android:color/transparent" android:background="@android:color/transparent" android:layout_width="match_parent" android:layout_width="match_parent" android:layout_height="match_parent"> android:layout_height="match_parent"> <ViewStub android:id="@+id/fullscreen_user_switcher_stub" android:layout_width="match_parent" android:layout_height="match_parent" android:layout="@layout/car_fullscreen_user_switcher"/> </FrameLayout> </FrameLayout> No newline at end of file packages/CarSystemUI/src/com/android/systemui/car/SystemUIPrimaryWindowController.java +19 −3 Original line number Original line Diff line number Diff line Loading @@ -54,6 +54,7 @@ public class SystemUIPrimaryWindowController implements private ViewGroup mBaseLayout; private ViewGroup mBaseLayout; private WindowManager.LayoutParams mLp; private WindowManager.LayoutParams mLp; private WindowManager.LayoutParams mLpChanged; private WindowManager.LayoutParams mLpChanged; private boolean mIsAttached = false; @Inject @Inject public SystemUIPrimaryWindowController( public SystemUIPrimaryWindowController( Loading Loading @@ -86,8 +87,17 @@ public class SystemUIPrimaryWindowController implements return mBaseLayout; return mBaseLayout; } } /** Returns {@code true} if the window is already attached. */ public boolean isAttached() { return mIsAttached; } /** Attaches the window to the window manager. */ /** Attaches the window to the window manager. */ public void attach() { public void attach() { if (mIsAttached) { return; } mIsAttached = true; // Now that the status bar window encompasses the sliding panel and its // Now that the status bar window encompasses the sliding panel and its // translucent backdrop, the entire thing is made TRANSLUCENT and is // translucent backdrop, the entire thing is made TRANSLUCENT and is // hardware-accelerated. // hardware-accelerated. Loading @@ -98,13 +108,14 @@ public class SystemUIPrimaryWindowController implements WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN, | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, PixelFormat.TRANSLUCENT); PixelFormat.TRANSLUCENT); mLp.token = new Binder(); mLp.token = new Binder(); mLp.gravity = Gravity.TOP; mLp.gravity = Gravity.TOP; mLp.setFitWindowInsetsTypes(/* types= */ 0); mLp.setFitWindowInsetsTypes(/* types= */ 0); mLp.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; mLp.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; mLp.setTitle("NotificationShade"); mLp.setTitle("SystemUIPrimaryWindow"); mLp.packageName = mContext.getPackageName(); mLp.packageName = mContext.getPackageName(); mLp.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; mLp.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; Loading @@ -118,8 +129,11 @@ public class SystemUIPrimaryWindowController implements // TODO: Update this so that the windowing type gets the full height of the display // TODO: Update this so that the windowing type gets the full height of the display // when we use MATCH_PARENT. // when we use MATCH_PARENT. mLpChanged.height = mDisplayHeight + mNavBarHeight; mLpChanged.height = mDisplayHeight + mNavBarHeight; mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; } else { } else { mLpChanged.height = mStatusBarHeight; mLpChanged.height = mStatusBarHeight; // TODO: Allow touches to go through to the status bar to handle notification panel. mLpChanged.flags |= WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; } } updateWindow(); updateWindow(); } } Loading @@ -131,7 +145,9 @@ public class SystemUIPrimaryWindowController implements private void updateWindow() { private void updateWindow() { if (mLp != null && mLp.copyFrom(mLpChanged) != 0) { if (mLp != null && mLp.copyFrom(mLpChanged) != 0) { if (isAttached()) { mWindowManager.updateViewLayout(mBaseLayout, mLp); mWindowManager.updateViewLayout(mBaseLayout, mLp); } } } } } } } packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java +19 −41 Original line number Original line Diff line number Diff line Loading @@ -68,6 +68,7 @@ import com.android.systemui.bubbles.BubbleController; import com.android.systemui.car.CarDeviceProvisionedController; import com.android.systemui.car.CarDeviceProvisionedController; import com.android.systemui.car.CarDeviceProvisionedListener; import com.android.systemui.car.CarDeviceProvisionedListener; import com.android.systemui.car.CarServiceProvider; import com.android.systemui.car.CarServiceProvider; import com.android.systemui.car.SystemUIPrimaryWindowController; import com.android.systemui.classifier.FalsingLog; import com.android.systemui.classifier.FalsingLog; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.dagger.qualifiers.UiBackground; import com.android.systemui.dagger.qualifiers.UiBackground; Loading Loading @@ -168,6 +169,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt // acceleration rate for the fling animation // acceleration rate for the fling animation private static final float FLING_SPEED_UP_FACTOR = 0.6f; private static final float FLING_SPEED_UP_FACTOR = 0.6f; private final UserSwitcherController mUserSwitcherController; private final ScrimController mScrimController; private final ScrimController mScrimController; private final LockscreenLockIconController mLockscreenLockIconController; private final LockscreenLockIconController mLockscreenLockIconController; Loading @@ -177,17 +179,16 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt private float mBackgroundAlphaDiff; private float mBackgroundAlphaDiff; private float mInitialBackgroundAlpha; private float mInitialBackgroundAlpha; private final Lazy<FullscreenUserSwitcher> mFullscreenUserSwitcherLazy; private FullscreenUserSwitcher mFullscreenUserSwitcher; private CarBatteryController mCarBatteryController; private CarBatteryController mCarBatteryController; private BatteryMeterView mBatteryMeterView; private BatteryMeterView mBatteryMeterView; private Drawable mNotificationPanelBackground; private Drawable mNotificationPanelBackground; private final Object mQueueLock = new Object(); private final Object mQueueLock = new Object(); private final SystemUIPrimaryWindowController mSystemUIPrimaryWindowController; private final CarNavigationBarController mCarNavigationBarController; private final CarNavigationBarController mCarNavigationBarController; private final FlingAnimationUtils.Builder mFlingAnimationUtilsBuilder; private final FlingAnimationUtils.Builder mFlingAnimationUtilsBuilder; private final Lazy<PowerManagerHelper> mPowerManagerHelperLazy; private final Lazy<PowerManagerHelper> mPowerManagerHelperLazy; private final FullscreenUserSwitcher mFullscreenUserSwitcher; private final ShadeController mShadeController; private final ShadeController mShadeController; private final CarServiceProvider mCarServiceProvider; private final CarServiceProvider mCarServiceProvider; private final CarDeviceProvisionedController mCarDeviceProvisionedController; private final CarDeviceProvisionedController mCarDeviceProvisionedController; Loading Loading @@ -338,7 +339,8 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt /* Car Settings injected components. */ /* Car Settings injected components. */ CarServiceProvider carServiceProvider, CarServiceProvider carServiceProvider, Lazy<PowerManagerHelper> powerManagerHelperLazy, Lazy<PowerManagerHelper> powerManagerHelperLazy, Lazy<FullscreenUserSwitcher> fullscreenUserSwitcherLazy, FullscreenUserSwitcher fullscreenUserSwitcher, SystemUIPrimaryWindowController systemUIPrimaryWindowController, CarNavigationBarController carNavigationBarController, CarNavigationBarController carNavigationBarController, FlingAnimationUtils.Builder flingAnimationUtilsBuilder) { FlingAnimationUtils.Builder flingAnimationUtilsBuilder) { super( super( Loading Loading @@ -422,6 +424,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt extensionController, extensionController, userInfoControllerImpl, userInfoControllerImpl, dismissCallbackRegistry); dismissCallbackRegistry); mUserSwitcherController = userSwitcherController; mScrimController = scrimController; mScrimController = scrimController; mLockscreenLockIconController = lockscreenLockIconController; mLockscreenLockIconController = lockscreenLockIconController; mCarDeviceProvisionedController = mCarDeviceProvisionedController = Loading @@ -429,7 +432,8 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt mShadeController = shadeController; mShadeController = shadeController; mCarServiceProvider = carServiceProvider; mCarServiceProvider = carServiceProvider; mPowerManagerHelperLazy = powerManagerHelperLazy; mPowerManagerHelperLazy = powerManagerHelperLazy; mFullscreenUserSwitcherLazy = fullscreenUserSwitcherLazy; mFullscreenUserSwitcher = fullscreenUserSwitcher; mSystemUIPrimaryWindowController = systemUIPrimaryWindowController; mCarNavigationBarController = carNavigationBarController; mCarNavigationBarController = carNavigationBarController; mFlingAnimationUtilsBuilder = flingAnimationUtilsBuilder; mFlingAnimationUtilsBuilder = flingAnimationUtilsBuilder; } } Loading @@ -444,6 +448,13 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt mScreenLifecycle = Dependency.get(ScreenLifecycle.class); mScreenLifecycle = Dependency.get(ScreenLifecycle.class); mScreenLifecycle.addObserver(mScreenObserver); mScreenLifecycle.addObserver(mScreenObserver); // TODO: Remove the setup of user switcher from Car Status Bar. mSystemUIPrimaryWindowController.attach(); mFullscreenUserSwitcher.setStatusBar(this); mFullscreenUserSwitcher.setContainer( mSystemUIPrimaryWindowController.getBaseLayout().findViewById( R.id.fullscreen_user_switcher_stub)); // Notification bar related setup. // Notification bar related setup. mInitialBackgroundAlpha = (float) mContext.getResources().getInteger( mInitialBackgroundAlpha = (float) mContext.getResources().getInteger( R.integer.config_initialNotificationBackgroundAlpha) / 100; R.integer.config_initialNotificationBackgroundAlpha) / 100; Loading Loading @@ -510,16 +521,6 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt }); }); } } /** * Allows for showing or hiding just the navigation bars. This is indented to be used when * the full screen user selector is shown. */ void setNavBarVisibility(@View.Visibility int visibility) { mCarNavigationBarController.setBottomWindowVisibility(visibility); mCarNavigationBarController.setLeftWindowVisibility(visibility); mCarNavigationBarController.setRightWindowVisibility(visibility); } @Override @Override public boolean hideKeyguard() { public boolean hideKeyguard() { boolean result = super.hideKeyguard(); boolean result = super.hideKeyguard(); Loading Loading @@ -924,9 +925,6 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt + " scroll " + mStackScroller.getScrollX() + " scroll " + mStackScroller.getScrollX() + "," + mStackScroller.getScrollY()); + "," + mStackScroller.getScrollY()); } } pw.print(" mFullscreenUserSwitcher="); pw.println(mFullscreenUserSwitcher); pw.print(" mCarBatteryController="); pw.print(" mCarBatteryController="); pw.println(mCarBatteryController); pw.println(mCarBatteryController); pw.print(" mBatteryMeterView="); pw.print(" mBatteryMeterView="); Loading Loading @@ -972,14 +970,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt @Override @Override protected void createUserSwitcher() { protected void createUserSwitcher() { UserSwitcherController userSwitcherController = if (!mUserSwitcherController.useFullscreenUserSwitcher()) { Dependency.get(UserSwitcherController.class); if (userSwitcherController.useFullscreenUserSwitcher()) { mFullscreenUserSwitcher = mFullscreenUserSwitcherLazy.get(); mFullscreenUserSwitcher.setStatusBar(this); mFullscreenUserSwitcher.setContainer( mStatusBarWindow.findViewById(R.id.fullscreen_user_switcher_stub)); } else { super.createUserSwitcher(); super.createUserSwitcher(); } } } } Loading @@ -996,25 +987,12 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt super.onStateChanged(newState); super.onStateChanged(newState); if (newState != StatusBarState.FULLSCREEN_USER_SWITCHER) { if (newState != StatusBarState.FULLSCREEN_USER_SWITCHER) { hideUserSwitcher(); mFullscreenUserSwitcher.hide(); } else { } else { dismissKeyguardWhenUserSwitcherNotDisplayed(); dismissKeyguardWhenUserSwitcherNotDisplayed(); } } } } /** Makes the full screen user switcher visible, if applicable. */ public void showUserSwitcher() { if (mFullscreenUserSwitcher != null && mState == StatusBarState.FULLSCREEN_USER_SWITCHER) { mFullscreenUserSwitcher.show(); // Makes the switcher visible. } } private void hideUserSwitcher() { if (mFullscreenUserSwitcher != null) { mFullscreenUserSwitcher.hide(); } } final ScreenLifecycle.Observer mScreenObserver = new ScreenLifecycle.Observer() { final ScreenLifecycle.Observer mScreenObserver = new ScreenLifecycle.Observer() { @Override @Override public void onScreenTurnedOn() { public void onScreenTurnedOn() { Loading @@ -1024,7 +1002,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt // We automatically dismiss keyguard unless user switcher is being shown on the keyguard. // We automatically dismiss keyguard unless user switcher is being shown on the keyguard. private void dismissKeyguardWhenUserSwitcherNotDisplayed() { private void dismissKeyguardWhenUserSwitcherNotDisplayed() { if (mFullscreenUserSwitcher == null) { if (!mUserSwitcherController.useFullscreenUserSwitcher()) { return; // Not using the full screen user switcher. return; // Not using the full screen user switcher. } } Loading packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarKeyguardViewManager.java +13 −5 Original line number Original line Diff line number Diff line Loading @@ -24,6 +24,7 @@ import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.ViewMediatorCallback; import com.android.keyguard.ViewMediatorCallback; import com.android.systemui.R; import com.android.systemui.R; import com.android.systemui.dock.DockManager; import com.android.systemui.dock.DockManager; import com.android.systemui.navigationbar.car.CarNavigationBarController; import com.android.systemui.statusbar.NotificationMediaManager; import com.android.systemui.statusbar.NotificationMediaManager; import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.phone.NavigationModeController; import com.android.systemui.statusbar.phone.NavigationModeController; Loading @@ -40,6 +41,8 @@ import javax.inject.Singleton; public class CarStatusBarKeyguardViewManager extends StatusBarKeyguardViewManager { public class CarStatusBarKeyguardViewManager extends StatusBarKeyguardViewManager { protected boolean mShouldHideNavBar; protected boolean mShouldHideNavBar; private final CarNavigationBarController mCarNavigationBarController; private final FullscreenUserSwitcher mFullscreenUserSwitcher; @Inject @Inject public CarStatusBarKeyguardViewManager(Context context, public CarStatusBarKeyguardViewManager(Context context, Loading @@ -52,13 +55,17 @@ public class CarStatusBarKeyguardViewManager extends StatusBarKeyguardViewManage DockManager dockManager, DockManager dockManager, StatusBarWindowController statusBarWindowController, StatusBarWindowController statusBarWindowController, KeyguardStateController keyguardStateController, KeyguardStateController keyguardStateController, NotificationMediaManager notificationMediaManager) { NotificationMediaManager notificationMediaManager, CarNavigationBarController carNavigationBarController, FullscreenUserSwitcher fullscreenUserSwitcher) { super(context, callback, lockPatternUtils, sysuiStatusBarStateController, super(context, callback, lockPatternUtils, sysuiStatusBarStateController, configurationController, keyguardUpdateMonitor, navigationModeController, configurationController, keyguardUpdateMonitor, navigationModeController, dockManager, statusBarWindowController, keyguardStateController, dockManager, statusBarWindowController, keyguardStateController, notificationMediaManager); notificationMediaManager); mShouldHideNavBar = context.getResources() mShouldHideNavBar = context.getResources() .getBoolean(R.bool.config_hideNavWhenKeyguardBouncerShown); .getBoolean(R.bool.config_hideNavWhenKeyguardBouncerShown); mCarNavigationBarController = carNavigationBarController; mFullscreenUserSwitcher = fullscreenUserSwitcher; } } @Override @Override Loading @@ -66,8 +73,10 @@ public class CarStatusBarKeyguardViewManager extends StatusBarKeyguardViewManage if (!mShouldHideNavBar) { if (!mShouldHideNavBar) { return; return; } } CarStatusBar statusBar = (CarStatusBar) mStatusBar; int visibility = navBarVisible ? View.VISIBLE : View.GONE; statusBar.setNavBarVisibility(navBarVisible ? View.VISIBLE : View.GONE); mCarNavigationBarController.setBottomWindowVisibility(visibility); mCarNavigationBarController.setLeftWindowVisibility(visibility); mCarNavigationBarController.setRightWindowVisibility(visibility); } } /** /** Loading @@ -86,8 +95,7 @@ public class CarStatusBarKeyguardViewManager extends StatusBarKeyguardViewManage */ */ @Override @Override public void onCancelClicked() { public void onCancelClicked() { CarStatusBar statusBar = (CarStatusBar) mStatusBar; mFullscreenUserSwitcher.show(); statusBar.showUserSwitcher(); } } /** /** Loading packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java +5 −2 Original line number Original line Diff line number Diff line Loading @@ -32,6 +32,7 @@ import com.android.systemui.assist.AssistManager; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.bubbles.BubbleController; import com.android.systemui.bubbles.BubbleController; import com.android.systemui.car.CarServiceProvider; import com.android.systemui.car.CarServiceProvider; import com.android.systemui.car.SystemUIPrimaryWindowController; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.dagger.qualifiers.UiBackground; import com.android.systemui.dagger.qualifiers.UiBackground; import com.android.systemui.keyguard.DismissCallbackRegistry; import com.android.systemui.keyguard.DismissCallbackRegistry; Loading Loading @@ -207,7 +208,8 @@ public class CarStatusBarModule { DismissCallbackRegistry dismissCallbackRegistry, DismissCallbackRegistry dismissCallbackRegistry, CarServiceProvider carServiceProvider, CarServiceProvider carServiceProvider, Lazy<PowerManagerHelper> powerManagerHelperLazy, Lazy<PowerManagerHelper> powerManagerHelperLazy, Lazy<FullscreenUserSwitcher> fullscreenUserSwitcherLazy, FullscreenUserSwitcher fullscreenUserSwitcher, SystemUIPrimaryWindowController systemUIPrimaryWindowController, CarNavigationBarController carNavigationBarController, CarNavigationBarController carNavigationBarController, FlingAnimationUtils.Builder flingAnimationUtilsBuilder) { FlingAnimationUtils.Builder flingAnimationUtilsBuilder) { return new CarStatusBar( return new CarStatusBar( Loading Loading @@ -292,7 +294,8 @@ public class CarStatusBarModule { dismissCallbackRegistry, dismissCallbackRegistry, carServiceProvider, carServiceProvider, powerManagerHelperLazy, powerManagerHelperLazy, fullscreenUserSwitcherLazy, fullscreenUserSwitcher, systemUIPrimaryWindowController, carNavigationBarController, carNavigationBarController, flingAnimationUtilsBuilder); flingAnimationUtilsBuilder); } } Loading Loading
packages/CarSystemUI/res/layout/sysui_primary_window.xml +7 −0 Original line number Original line Diff line number Diff line Loading @@ -15,9 +15,16 @@ ~ limitations under the License. ~ limitations under the License. --> --> <!-- Fullscreen views in sysui should be listed here in increasing Z order. --> <FrameLayout <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android" android:background="@android:color/transparent" android:background="@android:color/transparent" android:layout_width="match_parent" android:layout_width="match_parent" android:layout_height="match_parent"> android:layout_height="match_parent"> <ViewStub android:id="@+id/fullscreen_user_switcher_stub" android:layout_width="match_parent" android:layout_height="match_parent" android:layout="@layout/car_fullscreen_user_switcher"/> </FrameLayout> </FrameLayout> No newline at end of file
packages/CarSystemUI/src/com/android/systemui/car/SystemUIPrimaryWindowController.java +19 −3 Original line number Original line Diff line number Diff line Loading @@ -54,6 +54,7 @@ public class SystemUIPrimaryWindowController implements private ViewGroup mBaseLayout; private ViewGroup mBaseLayout; private WindowManager.LayoutParams mLp; private WindowManager.LayoutParams mLp; private WindowManager.LayoutParams mLpChanged; private WindowManager.LayoutParams mLpChanged; private boolean mIsAttached = false; @Inject @Inject public SystemUIPrimaryWindowController( public SystemUIPrimaryWindowController( Loading Loading @@ -86,8 +87,17 @@ public class SystemUIPrimaryWindowController implements return mBaseLayout; return mBaseLayout; } } /** Returns {@code true} if the window is already attached. */ public boolean isAttached() { return mIsAttached; } /** Attaches the window to the window manager. */ /** Attaches the window to the window manager. */ public void attach() { public void attach() { if (mIsAttached) { return; } mIsAttached = true; // Now that the status bar window encompasses the sliding panel and its // Now that the status bar window encompasses the sliding panel and its // translucent backdrop, the entire thing is made TRANSLUCENT and is // translucent backdrop, the entire thing is made TRANSLUCENT and is // hardware-accelerated. // hardware-accelerated. Loading @@ -98,13 +108,14 @@ public class SystemUIPrimaryWindowController implements WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN, | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, PixelFormat.TRANSLUCENT); PixelFormat.TRANSLUCENT); mLp.token = new Binder(); mLp.token = new Binder(); mLp.gravity = Gravity.TOP; mLp.gravity = Gravity.TOP; mLp.setFitWindowInsetsTypes(/* types= */ 0); mLp.setFitWindowInsetsTypes(/* types= */ 0); mLp.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; mLp.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; mLp.setTitle("NotificationShade"); mLp.setTitle("SystemUIPrimaryWindow"); mLp.packageName = mContext.getPackageName(); mLp.packageName = mContext.getPackageName(); mLp.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; mLp.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; Loading @@ -118,8 +129,11 @@ public class SystemUIPrimaryWindowController implements // TODO: Update this so that the windowing type gets the full height of the display // TODO: Update this so that the windowing type gets the full height of the display // when we use MATCH_PARENT. // when we use MATCH_PARENT. mLpChanged.height = mDisplayHeight + mNavBarHeight; mLpChanged.height = mDisplayHeight + mNavBarHeight; mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; } else { } else { mLpChanged.height = mStatusBarHeight; mLpChanged.height = mStatusBarHeight; // TODO: Allow touches to go through to the status bar to handle notification panel. mLpChanged.flags |= WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; } } updateWindow(); updateWindow(); } } Loading @@ -131,7 +145,9 @@ public class SystemUIPrimaryWindowController implements private void updateWindow() { private void updateWindow() { if (mLp != null && mLp.copyFrom(mLpChanged) != 0) { if (mLp != null && mLp.copyFrom(mLpChanged) != 0) { if (isAttached()) { mWindowManager.updateViewLayout(mBaseLayout, mLp); mWindowManager.updateViewLayout(mBaseLayout, mLp); } } } } } } }
packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java +19 −41 Original line number Original line Diff line number Diff line Loading @@ -68,6 +68,7 @@ import com.android.systemui.bubbles.BubbleController; import com.android.systemui.car.CarDeviceProvisionedController; import com.android.systemui.car.CarDeviceProvisionedController; import com.android.systemui.car.CarDeviceProvisionedListener; import com.android.systemui.car.CarDeviceProvisionedListener; import com.android.systemui.car.CarServiceProvider; import com.android.systemui.car.CarServiceProvider; import com.android.systemui.car.SystemUIPrimaryWindowController; import com.android.systemui.classifier.FalsingLog; import com.android.systemui.classifier.FalsingLog; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.dagger.qualifiers.UiBackground; import com.android.systemui.dagger.qualifiers.UiBackground; Loading Loading @@ -168,6 +169,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt // acceleration rate for the fling animation // acceleration rate for the fling animation private static final float FLING_SPEED_UP_FACTOR = 0.6f; private static final float FLING_SPEED_UP_FACTOR = 0.6f; private final UserSwitcherController mUserSwitcherController; private final ScrimController mScrimController; private final ScrimController mScrimController; private final LockscreenLockIconController mLockscreenLockIconController; private final LockscreenLockIconController mLockscreenLockIconController; Loading @@ -177,17 +179,16 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt private float mBackgroundAlphaDiff; private float mBackgroundAlphaDiff; private float mInitialBackgroundAlpha; private float mInitialBackgroundAlpha; private final Lazy<FullscreenUserSwitcher> mFullscreenUserSwitcherLazy; private FullscreenUserSwitcher mFullscreenUserSwitcher; private CarBatteryController mCarBatteryController; private CarBatteryController mCarBatteryController; private BatteryMeterView mBatteryMeterView; private BatteryMeterView mBatteryMeterView; private Drawable mNotificationPanelBackground; private Drawable mNotificationPanelBackground; private final Object mQueueLock = new Object(); private final Object mQueueLock = new Object(); private final SystemUIPrimaryWindowController mSystemUIPrimaryWindowController; private final CarNavigationBarController mCarNavigationBarController; private final CarNavigationBarController mCarNavigationBarController; private final FlingAnimationUtils.Builder mFlingAnimationUtilsBuilder; private final FlingAnimationUtils.Builder mFlingAnimationUtilsBuilder; private final Lazy<PowerManagerHelper> mPowerManagerHelperLazy; private final Lazy<PowerManagerHelper> mPowerManagerHelperLazy; private final FullscreenUserSwitcher mFullscreenUserSwitcher; private final ShadeController mShadeController; private final ShadeController mShadeController; private final CarServiceProvider mCarServiceProvider; private final CarServiceProvider mCarServiceProvider; private final CarDeviceProvisionedController mCarDeviceProvisionedController; private final CarDeviceProvisionedController mCarDeviceProvisionedController; Loading Loading @@ -338,7 +339,8 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt /* Car Settings injected components. */ /* Car Settings injected components. */ CarServiceProvider carServiceProvider, CarServiceProvider carServiceProvider, Lazy<PowerManagerHelper> powerManagerHelperLazy, Lazy<PowerManagerHelper> powerManagerHelperLazy, Lazy<FullscreenUserSwitcher> fullscreenUserSwitcherLazy, FullscreenUserSwitcher fullscreenUserSwitcher, SystemUIPrimaryWindowController systemUIPrimaryWindowController, CarNavigationBarController carNavigationBarController, CarNavigationBarController carNavigationBarController, FlingAnimationUtils.Builder flingAnimationUtilsBuilder) { FlingAnimationUtils.Builder flingAnimationUtilsBuilder) { super( super( Loading Loading @@ -422,6 +424,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt extensionController, extensionController, userInfoControllerImpl, userInfoControllerImpl, dismissCallbackRegistry); dismissCallbackRegistry); mUserSwitcherController = userSwitcherController; mScrimController = scrimController; mScrimController = scrimController; mLockscreenLockIconController = lockscreenLockIconController; mLockscreenLockIconController = lockscreenLockIconController; mCarDeviceProvisionedController = mCarDeviceProvisionedController = Loading @@ -429,7 +432,8 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt mShadeController = shadeController; mShadeController = shadeController; mCarServiceProvider = carServiceProvider; mCarServiceProvider = carServiceProvider; mPowerManagerHelperLazy = powerManagerHelperLazy; mPowerManagerHelperLazy = powerManagerHelperLazy; mFullscreenUserSwitcherLazy = fullscreenUserSwitcherLazy; mFullscreenUserSwitcher = fullscreenUserSwitcher; mSystemUIPrimaryWindowController = systemUIPrimaryWindowController; mCarNavigationBarController = carNavigationBarController; mCarNavigationBarController = carNavigationBarController; mFlingAnimationUtilsBuilder = flingAnimationUtilsBuilder; mFlingAnimationUtilsBuilder = flingAnimationUtilsBuilder; } } Loading @@ -444,6 +448,13 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt mScreenLifecycle = Dependency.get(ScreenLifecycle.class); mScreenLifecycle = Dependency.get(ScreenLifecycle.class); mScreenLifecycle.addObserver(mScreenObserver); mScreenLifecycle.addObserver(mScreenObserver); // TODO: Remove the setup of user switcher from Car Status Bar. mSystemUIPrimaryWindowController.attach(); mFullscreenUserSwitcher.setStatusBar(this); mFullscreenUserSwitcher.setContainer( mSystemUIPrimaryWindowController.getBaseLayout().findViewById( R.id.fullscreen_user_switcher_stub)); // Notification bar related setup. // Notification bar related setup. mInitialBackgroundAlpha = (float) mContext.getResources().getInteger( mInitialBackgroundAlpha = (float) mContext.getResources().getInteger( R.integer.config_initialNotificationBackgroundAlpha) / 100; R.integer.config_initialNotificationBackgroundAlpha) / 100; Loading Loading @@ -510,16 +521,6 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt }); }); } } /** * Allows for showing or hiding just the navigation bars. This is indented to be used when * the full screen user selector is shown. */ void setNavBarVisibility(@View.Visibility int visibility) { mCarNavigationBarController.setBottomWindowVisibility(visibility); mCarNavigationBarController.setLeftWindowVisibility(visibility); mCarNavigationBarController.setRightWindowVisibility(visibility); } @Override @Override public boolean hideKeyguard() { public boolean hideKeyguard() { boolean result = super.hideKeyguard(); boolean result = super.hideKeyguard(); Loading Loading @@ -924,9 +925,6 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt + " scroll " + mStackScroller.getScrollX() + " scroll " + mStackScroller.getScrollX() + "," + mStackScroller.getScrollY()); + "," + mStackScroller.getScrollY()); } } pw.print(" mFullscreenUserSwitcher="); pw.println(mFullscreenUserSwitcher); pw.print(" mCarBatteryController="); pw.print(" mCarBatteryController="); pw.println(mCarBatteryController); pw.println(mCarBatteryController); pw.print(" mBatteryMeterView="); pw.print(" mBatteryMeterView="); Loading Loading @@ -972,14 +970,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt @Override @Override protected void createUserSwitcher() { protected void createUserSwitcher() { UserSwitcherController userSwitcherController = if (!mUserSwitcherController.useFullscreenUserSwitcher()) { Dependency.get(UserSwitcherController.class); if (userSwitcherController.useFullscreenUserSwitcher()) { mFullscreenUserSwitcher = mFullscreenUserSwitcherLazy.get(); mFullscreenUserSwitcher.setStatusBar(this); mFullscreenUserSwitcher.setContainer( mStatusBarWindow.findViewById(R.id.fullscreen_user_switcher_stub)); } else { super.createUserSwitcher(); super.createUserSwitcher(); } } } } Loading @@ -996,25 +987,12 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt super.onStateChanged(newState); super.onStateChanged(newState); if (newState != StatusBarState.FULLSCREEN_USER_SWITCHER) { if (newState != StatusBarState.FULLSCREEN_USER_SWITCHER) { hideUserSwitcher(); mFullscreenUserSwitcher.hide(); } else { } else { dismissKeyguardWhenUserSwitcherNotDisplayed(); dismissKeyguardWhenUserSwitcherNotDisplayed(); } } } } /** Makes the full screen user switcher visible, if applicable. */ public void showUserSwitcher() { if (mFullscreenUserSwitcher != null && mState == StatusBarState.FULLSCREEN_USER_SWITCHER) { mFullscreenUserSwitcher.show(); // Makes the switcher visible. } } private void hideUserSwitcher() { if (mFullscreenUserSwitcher != null) { mFullscreenUserSwitcher.hide(); } } final ScreenLifecycle.Observer mScreenObserver = new ScreenLifecycle.Observer() { final ScreenLifecycle.Observer mScreenObserver = new ScreenLifecycle.Observer() { @Override @Override public void onScreenTurnedOn() { public void onScreenTurnedOn() { Loading @@ -1024,7 +1002,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt // We automatically dismiss keyguard unless user switcher is being shown on the keyguard. // We automatically dismiss keyguard unless user switcher is being shown on the keyguard. private void dismissKeyguardWhenUserSwitcherNotDisplayed() { private void dismissKeyguardWhenUserSwitcherNotDisplayed() { if (mFullscreenUserSwitcher == null) { if (!mUserSwitcherController.useFullscreenUserSwitcher()) { return; // Not using the full screen user switcher. return; // Not using the full screen user switcher. } } Loading
packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarKeyguardViewManager.java +13 −5 Original line number Original line Diff line number Diff line Loading @@ -24,6 +24,7 @@ import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.ViewMediatorCallback; import com.android.keyguard.ViewMediatorCallback; import com.android.systemui.R; import com.android.systemui.R; import com.android.systemui.dock.DockManager; import com.android.systemui.dock.DockManager; import com.android.systemui.navigationbar.car.CarNavigationBarController; import com.android.systemui.statusbar.NotificationMediaManager; import com.android.systemui.statusbar.NotificationMediaManager; import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.phone.NavigationModeController; import com.android.systemui.statusbar.phone.NavigationModeController; Loading @@ -40,6 +41,8 @@ import javax.inject.Singleton; public class CarStatusBarKeyguardViewManager extends StatusBarKeyguardViewManager { public class CarStatusBarKeyguardViewManager extends StatusBarKeyguardViewManager { protected boolean mShouldHideNavBar; protected boolean mShouldHideNavBar; private final CarNavigationBarController mCarNavigationBarController; private final FullscreenUserSwitcher mFullscreenUserSwitcher; @Inject @Inject public CarStatusBarKeyguardViewManager(Context context, public CarStatusBarKeyguardViewManager(Context context, Loading @@ -52,13 +55,17 @@ public class CarStatusBarKeyguardViewManager extends StatusBarKeyguardViewManage DockManager dockManager, DockManager dockManager, StatusBarWindowController statusBarWindowController, StatusBarWindowController statusBarWindowController, KeyguardStateController keyguardStateController, KeyguardStateController keyguardStateController, NotificationMediaManager notificationMediaManager) { NotificationMediaManager notificationMediaManager, CarNavigationBarController carNavigationBarController, FullscreenUserSwitcher fullscreenUserSwitcher) { super(context, callback, lockPatternUtils, sysuiStatusBarStateController, super(context, callback, lockPatternUtils, sysuiStatusBarStateController, configurationController, keyguardUpdateMonitor, navigationModeController, configurationController, keyguardUpdateMonitor, navigationModeController, dockManager, statusBarWindowController, keyguardStateController, dockManager, statusBarWindowController, keyguardStateController, notificationMediaManager); notificationMediaManager); mShouldHideNavBar = context.getResources() mShouldHideNavBar = context.getResources() .getBoolean(R.bool.config_hideNavWhenKeyguardBouncerShown); .getBoolean(R.bool.config_hideNavWhenKeyguardBouncerShown); mCarNavigationBarController = carNavigationBarController; mFullscreenUserSwitcher = fullscreenUserSwitcher; } } @Override @Override Loading @@ -66,8 +73,10 @@ public class CarStatusBarKeyguardViewManager extends StatusBarKeyguardViewManage if (!mShouldHideNavBar) { if (!mShouldHideNavBar) { return; return; } } CarStatusBar statusBar = (CarStatusBar) mStatusBar; int visibility = navBarVisible ? View.VISIBLE : View.GONE; statusBar.setNavBarVisibility(navBarVisible ? View.VISIBLE : View.GONE); mCarNavigationBarController.setBottomWindowVisibility(visibility); mCarNavigationBarController.setLeftWindowVisibility(visibility); mCarNavigationBarController.setRightWindowVisibility(visibility); } } /** /** Loading @@ -86,8 +95,7 @@ public class CarStatusBarKeyguardViewManager extends StatusBarKeyguardViewManage */ */ @Override @Override public void onCancelClicked() { public void onCancelClicked() { CarStatusBar statusBar = (CarStatusBar) mStatusBar; mFullscreenUserSwitcher.show(); statusBar.showUserSwitcher(); } } /** /** Loading
packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java +5 −2 Original line number Original line Diff line number Diff line Loading @@ -32,6 +32,7 @@ import com.android.systemui.assist.AssistManager; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.bubbles.BubbleController; import com.android.systemui.bubbles.BubbleController; import com.android.systemui.car.CarServiceProvider; import com.android.systemui.car.CarServiceProvider; import com.android.systemui.car.SystemUIPrimaryWindowController; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.dagger.qualifiers.UiBackground; import com.android.systemui.dagger.qualifiers.UiBackground; import com.android.systemui.keyguard.DismissCallbackRegistry; import com.android.systemui.keyguard.DismissCallbackRegistry; Loading Loading @@ -207,7 +208,8 @@ public class CarStatusBarModule { DismissCallbackRegistry dismissCallbackRegistry, DismissCallbackRegistry dismissCallbackRegistry, CarServiceProvider carServiceProvider, CarServiceProvider carServiceProvider, Lazy<PowerManagerHelper> powerManagerHelperLazy, Lazy<PowerManagerHelper> powerManagerHelperLazy, Lazy<FullscreenUserSwitcher> fullscreenUserSwitcherLazy, FullscreenUserSwitcher fullscreenUserSwitcher, SystemUIPrimaryWindowController systemUIPrimaryWindowController, CarNavigationBarController carNavigationBarController, CarNavigationBarController carNavigationBarController, FlingAnimationUtils.Builder flingAnimationUtilsBuilder) { FlingAnimationUtils.Builder flingAnimationUtilsBuilder) { return new CarStatusBar( return new CarStatusBar( Loading Loading @@ -292,7 +294,8 @@ public class CarStatusBarModule { dismissCallbackRegistry, dismissCallbackRegistry, carServiceProvider, carServiceProvider, powerManagerHelperLazy, powerManagerHelperLazy, fullscreenUserSwitcherLazy, fullscreenUserSwitcher, systemUIPrimaryWindowController, carNavigationBarController, carNavigationBarController, flingAnimationUtilsBuilder); flingAnimationUtilsBuilder); } } Loading