Merge "Support game dashboard on tablets"
This commit is contained in:
@@ -19,7 +19,7 @@ package com.android.systemui.navigationbar;
|
||||
import static android.app.StatusBarManager.NAVIGATION_HINT_BACK_ALT;
|
||||
import static android.app.StatusBarManager.NAVIGATION_HINT_IME_SHOWN;
|
||||
import static android.app.StatusBarManager.WINDOW_STATE_SHOWING;
|
||||
import static android.view.InsetsState.ITYPE_NAVIGATION_BAR;
|
||||
import static android.view.InsetsState.ITYPE_EXTRA_NAVIGATION_BAR;
|
||||
import static android.view.InsetsState.containsType;
|
||||
import static android.view.WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
|
||||
@@ -86,6 +86,7 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
|
||||
private static final String TAG = TaskbarDelegate.class.getSimpleName();
|
||||
|
||||
private final EdgeBackGestureHandler mEdgeBackGestureHandler;
|
||||
private final NavigationBarOverlayController mNavBarOverlayController;
|
||||
private boolean mInitialized;
|
||||
private CommandQueue mCommandQueue;
|
||||
private OverviewProxyService mOverviewProxyService;
|
||||
@@ -140,6 +141,13 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
|
||||
|
||||
@Override
|
||||
public void hide() {
|
||||
clearTransient();
|
||||
}
|
||||
};
|
||||
|
||||
private final Consumer<Boolean> mNavbarOverlayVisibilityChangeCallback = (visible) -> {
|
||||
if (visible) {
|
||||
mAutoHideController.touchAutoHide();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -147,6 +155,11 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
|
||||
public TaskbarDelegate(Context context) {
|
||||
mEdgeBackGestureHandler = Dependency.get(EdgeBackGestureHandler.Factory.class)
|
||||
.create(context);
|
||||
mNavBarOverlayController = Dependency.get(NavigationBarOverlayController.class);
|
||||
if (mNavBarOverlayController.isNavigationBarOverlayEnabled()) {
|
||||
mNavBarOverlayController.init(mNavbarOverlayVisibilityChangeCallback,
|
||||
mEdgeBackGestureHandler::updateNavigationBarOverlayExcludeRegion);
|
||||
}
|
||||
mContext = context;
|
||||
mDisplayManager = mContext.getSystemService(DisplayManager.class);
|
||||
mPipListener = mEdgeBackGestureHandler::setPipStashExclusionBounds;
|
||||
@@ -206,6 +219,9 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
|
||||
mNavigationModeController.addListener(this));
|
||||
mNavBarHelper.registerNavTaskStateUpdater(mNavbarTaskbarStateUpdater);
|
||||
mNavBarHelper.init();
|
||||
if (mNavBarOverlayController.isNavigationBarOverlayEnabled()) {
|
||||
mNavBarOverlayController.registerListeners();
|
||||
}
|
||||
mEdgeBackGestureHandler.onNavBarAttached();
|
||||
// Initialize component callback
|
||||
Display display = mDisplayManager.getDisplay(displayId);
|
||||
@@ -229,6 +245,9 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
|
||||
mNavigationModeController.removeListener(this);
|
||||
mNavBarHelper.removeNavTaskStateUpdater(mNavbarTaskbarStateUpdater);
|
||||
mNavBarHelper.destroy();
|
||||
if (mNavBarOverlayController.isNavigationBarOverlayEnabled()) {
|
||||
mNavBarOverlayController.unregisterListeners();
|
||||
}
|
||||
mEdgeBackGestureHandler.onNavBarDetached();
|
||||
mScreenPinningNotify = null;
|
||||
if (mWindowContext != null) {
|
||||
@@ -354,10 +373,13 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
|
||||
if (displayId != mDisplayId) {
|
||||
return;
|
||||
}
|
||||
if (!containsType(types, ITYPE_NAVIGATION_BAR)) {
|
||||
if (!containsType(types, ITYPE_EXTRA_NAVIGATION_BAR)) {
|
||||
return;
|
||||
}
|
||||
mTaskbarTransientShowing = true;
|
||||
if (!mTaskbarTransientShowing) {
|
||||
mTaskbarTransientShowing = true;
|
||||
onTransientStateChanged();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -365,15 +387,14 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
|
||||
if (displayId != mDisplayId) {
|
||||
return;
|
||||
}
|
||||
if (!containsType(types, ITYPE_NAVIGATION_BAR)) {
|
||||
if (!containsType(types, ITYPE_EXTRA_NAVIGATION_BAR)) {
|
||||
return;
|
||||
}
|
||||
mTaskbarTransientShowing = false;
|
||||
clearTransient();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTaskbarAutohideSuspend(boolean suspend) {
|
||||
mTaskbarTransientShowing = suspend;
|
||||
if (suspend) {
|
||||
mAutoHideController.suspendAutoHide();
|
||||
} else {
|
||||
@@ -381,6 +402,30 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
|
||||
}
|
||||
}
|
||||
|
||||
private void clearTransient() {
|
||||
if (mTaskbarTransientShowing) {
|
||||
mTaskbarTransientShowing = false;
|
||||
onTransientStateChanged();
|
||||
}
|
||||
}
|
||||
|
||||
private void onTransientStateChanged() {
|
||||
mEdgeBackGestureHandler.onNavBarTransientStateChanged(mTaskbarTransientShowing);
|
||||
|
||||
// The visibility of the navigation bar buttons is dependent on the transient state of
|
||||
// the navigation bar.
|
||||
if (mNavBarOverlayController.isNavigationBarOverlayEnabled()) {
|
||||
mNavBarOverlayController.setButtonState(mTaskbarTransientShowing, /* force */ false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRecentsAnimationStateChanged(boolean running) {
|
||||
if (running) {
|
||||
mNavBarOverlayController.setButtonState(/* visible */false, /* force */true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNavigationModeChanged(int mode) {
|
||||
mNavigationMode = mode;
|
||||
|
||||
Reference in New Issue
Block a user