summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Vinit Nayak <peanutbutter@google.com> 2021-12-01 04:34:06 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-12-01 04:34:06 +0000
commita5f83144a308b4bd0b276bf62605d87682b7adaa (patch)
tree6fde2d182357c312c0d1f3a0443d38a29e6af33b
parent8528d07450b5d55948889bdffb9541629d2b89e0 (diff)
parente7ecea63ad2bc134762ec5977a3501aa39c4c1fb (diff)
Merge "Support to show lock task toast on taskbar" into sc-v2-dev
-rw-r--r--packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java18
-rw-r--r--packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java39
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarCommandQueueCallbacks.java8
4 files changed, 67 insertions, 6 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java
index 0429c022234d..bfabf716803b 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java
@@ -395,6 +395,24 @@ public class NavigationBarController implements
return (navBar == null) ? null : navBar.getView();
}
+ public void showPinningEnterExitToast(int displayId, boolean entering) {
+ final NavigationBarView navBarView = getNavigationBarView(displayId);
+ if (navBarView != null) {
+ navBarView.showPinningEnterExitToast(entering);
+ } else if (displayId == DEFAULT_DISPLAY && mTaskbarDelegate.isInitialized()) {
+ mTaskbarDelegate.showPinningEnterExitToast(entering);
+ }
+ }
+
+ public void showPinningEscapeToast(int displayId) {
+ final NavigationBarView navBarView = getNavigationBarView(displayId);
+ if (navBarView != null) {
+ navBarView.showPinningEscapeToast();
+ } else if (displayId == DEFAULT_DISPLAY && mTaskbarDelegate.isInitialized()) {
+ mTaskbarDelegate.showPinningEscapeToast();
+ }
+ }
+
/** @return {@link NavigationBar} on the default display. */
@Nullable
public NavigationBar getDefaultNavigationBar() {
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java
index 8fb394c06ba1..29067747f8e0 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java
@@ -60,6 +60,7 @@ import com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler;
import com.android.systemui.recents.OverviewProxyService;
import com.android.systemui.shared.recents.utilities.Utilities;
import com.android.systemui.shared.system.ActivityManagerWrapper;
+import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.statusbar.AutoHideUiElement;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.AutoHideController;
@@ -109,6 +110,9 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
private final Context mContext;
private final DisplayManager mDisplayManager;
private Context mWindowContext;
+ private ScreenPinningNotify mScreenPinningNotify;
+ private int mNavigationMode;
+
/**
* Tracks the system calls for when taskbar should transiently show or hide so we can return
* this value in {@link AutoHideUiElement#isVisible()} below.
@@ -197,6 +201,7 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
Display display = mDisplayManager.getDisplay(displayId);
mWindowContext = mContext.createWindowContext(display, TYPE_APPLICATION, null);
mWindowContext.registerComponentCallbacks(this);
+ mScreenPinningNotify = new ScreenPinningNotify(mWindowContext);
// Set initial state for any listeners
updateSysuiFlags();
mAutoHideController.setNavigationBar(mAutoHideUiElement);
@@ -214,6 +219,7 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
mNavBarHelper.removeNavTaskStateUpdater(mNavbarTaskbarStateUpdater);
mNavBarHelper.destroy();
mEdgeBackGestureHandler.onNavBarDetached();
+ mScreenPinningNotify = null;
if (mWindowContext != null) {
mWindowContext.unregisterComponentCallbacks(this);
mWindowContext = null;
@@ -224,6 +230,14 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
mInitialized = false;
}
+ /**
+ * Returns {@code true} if this taskBar is {@link #init(int)}. Returns {@code false} if this
+ * taskbar has not yet been {@link #init(int)} or has been {@link #destroy()}.
+ */
+ public boolean isInitialized() {
+ return mInitialized;
+ }
+
private void updateSysuiFlags() {
int a11yFlags = mNavBarHelper.getA11yButtonState();
boolean clickable = (a11yFlags & SYSUI_STATE_A11Y_BUTTON_CLICKABLE) != 0;
@@ -345,6 +359,7 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
@Override
public void onNavigationModeChanged(int mode) {
+ mNavigationMode = mode;
mEdgeBackGestureHandler.onNavigationModeChanged(mode);
}
@@ -365,9 +380,33 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
public void onLowMemory() {}
@Override
+ public void showPinningEnterExitToast(boolean entering) {
+ updateSysuiFlags();
+ if (mScreenPinningNotify == null) {
+ return;
+ }
+ if (entering) {
+ mScreenPinningNotify.showPinningStartToast();
+ } else {
+ mScreenPinningNotify.showPinningExitToast();
+ }
+ }
+
+ @Override
+ public void showPinningEscapeToast() {
+ updateSysuiFlags();
+ if (mScreenPinningNotify == null) {
+ return;
+ }
+ mScreenPinningNotify.showEscapeToast(QuickStepContract.isGesturalMode(mNavigationMode),
+ !QuickStepContract.isGesturalMode(mNavigationMode));
+ }
+
+ @Override
public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
pw.println("TaskbarDelegate (displayId=" + mDisplayId + "):");
pw.println(" mNavigationIconHints=" + mNavigationIconHints);
+ pw.println(" mNavigationMode=" + mNavigationMode);
pw.println(" mDisabledFlags=" + mDisabledFlags);
pw.println(" mTaskBarWindowState=" + mTaskBarWindowState);
pw.println(" mBehavior=" + mBehavior);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index 7f3961d614bb..6e94e6bbc5f5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -3433,6 +3433,14 @@ public class StatusBar extends SystemUI implements
return mNavigationBarController.getNavigationBarView(mDisplayId);
}
+ public void showPinningEnterExitToast(boolean entering) {
+ mNavigationBarController.showPinningEnterExitToast(mDisplayId, entering);
+ }
+
+ public void showPinningEscapeToast() {
+ mNavigationBarController.showPinningEscapeToast(mDisplayId);
+ }
+
/**
* TODO: Remove this method. Views should not be passed forward. Will cause theme issues.
* @return bottom area view
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarCommandQueueCallbacks.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarCommandQueueCallbacks.java
index a77a097f0453..3ce4472014c8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarCommandQueueCallbacks.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarCommandQueueCallbacks.java
@@ -549,16 +549,12 @@ public class StatusBarCommandQueueCallbacks implements CommandQueue.Callbacks {
@Override
public void showPinningEnterExitToast(boolean entering) {
- if (mStatusBar.getNavigationBarView() != null) {
- mStatusBar.getNavigationBarView().showPinningEnterExitToast(entering);
- }
+ mStatusBar.showPinningEnterExitToast(entering);
}
@Override
public void showPinningEscapeToast() {
- if (mStatusBar.getNavigationBarView() != null) {
- mStatusBar.getNavigationBarView().showPinningEscapeToast();
- }
+ mStatusBar.showPinningEscapeToast();
}
@Override