diff options
7 files changed, 59 insertions, 0 deletions
diff --git a/core/java/com/android/internal/statusbar/IStatusBar.aidl b/core/java/com/android/internal/statusbar/IStatusBar.aidl index b529a1016464..f7c03cd42a99 100644 --- a/core/java/com/android/internal/statusbar/IStatusBar.aidl +++ b/core/java/com/android/internal/statusbar/IStatusBar.aidl @@ -56,6 +56,7 @@ oneway interface IStatusBar void showRecentApps(boolean triggeredFromAltTab); void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey); void toggleRecentApps(); + void toggleTaskbar(); void toggleSplitScreen(); void preloadRecentApps(); void cancelPreloadRecentApps(); diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl index a71fb5611bd9..4bc949116807 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl @@ -104,4 +104,9 @@ oneway interface IOverviewProxy { * Sent when the surface for navigation bar is created or changed */ void onNavigationBarSurface(in SurfaceControl surface) = 26; + + /** + * Sent when the task bar stash state is toggled. + */ + void onTaskbarToggled() = 27; } diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java index f1a5c3e8ef43..27e99f7d9176 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java @@ -436,6 +436,19 @@ public class TaskbarDelegate implements CommandQueue.Callbacks, } } + @Override + public void toggleTaskbar() { + if (mOverviewProxyService.getProxy() == null) { + return; + } + + try { + mOverviewProxyService.getProxy().onTaskbarToggled(); + } catch (RemoteException e) { + Log.e(TAG, "onTaskbarToggled() failed", e); + } + } + private void clearTransient() { if (mTaskbarTransientShowing) { mTaskbarTransientShowing = false; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java index 2cf1f53b4499..c435799748ee 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java @@ -168,6 +168,7 @@ public class CommandQueue extends IStatusBar.Stub implements private static final int MSG_GO_TO_FULLSCREEN_FROM_SPLIT = 70 << MSG_SHIFT; private static final int MSG_ENTER_STAGE_SPLIT_FROM_RUNNING_APP = 71 << MSG_SHIFT; private static final int MSG_SHOW_MEDIA_OUTPUT_SWITCHER = 72 << MSG_SHIFT; + private static final int MSG_TOGGLE_TASKBAR = 73 << MSG_SHIFT; public static final int FLAG_EXCLUDE_NONE = 0; public static final int FLAG_EXCLUDE_SEARCH_PANEL = 1 << 0; @@ -229,6 +230,7 @@ public class CommandQueue extends IStatusBar.Stub implements @BackDispositionMode int backDisposition, boolean showImeSwitcher) { } default void showRecentApps(boolean triggeredFromAltTab) { } default void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) { } + default void toggleTaskbar() { } default void toggleRecentApps() { } default void toggleSplitScreen() { } default void preloadRecentApps() { } @@ -715,6 +717,13 @@ public class CommandQueue extends IStatusBar.Stub implements } } + public void toggleTaskbar() { + synchronized (mLock) { + mHandler.removeMessages(MSG_TOGGLE_TASKBAR); + mHandler.obtainMessage(MSG_TOGGLE_TASKBAR, 0, 0, null).sendToTarget(); + } + } + public void toggleRecentApps() { synchronized (mLock) { mHandler.removeMessages(MSG_TOGGLE_RECENT_APPS); @@ -1416,6 +1425,11 @@ public class CommandQueue extends IStatusBar.Stub implements mCallbacks.get(i).hideRecentApps(msg.arg1 != 0, msg.arg2 != 0); } break; + case MSG_TOGGLE_TASKBAR: + for (int i = 0; i < mCallbacks.size(); i++) { + mCallbacks.get(i).toggleTaskbar(); + } + break; case MSG_TOGGLE_RECENT_APPS: for (int i = 0; i < mCallbacks.size(); i++) { mCallbacks.get(i).toggleRecentApps(); diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 336ad75c5b2c..bbd9418c1411 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -2993,6 +2993,12 @@ public class PhoneWindowManager implements WindowManagerPolicy { return key_consumed; } break; + case KeyEvent.KEYCODE_T: + if (down && event.isMetaPressed()) { + toggleTaskbar(); + return key_consumed; + } + break; case KeyEvent.KEYCODE_DPAD_UP: if (down && event.isMetaPressed() && event.isCtrlPressed() && repeatCount == 0) { StatusBarManagerInternal statusbar = getStatusBarManagerInternal(); @@ -3664,6 +3670,13 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } + private void toggleTaskbar() { + StatusBarManagerInternal statusbar = getStatusBarManagerInternal(); + if (statusbar != null) { + statusbar.toggleTaskbar(); + } + } + private void toggleRecentApps() { mPreloadedRecentApps = false; // preloading no longer needs to be canceled StatusBarManagerInternal statusbar = getStatusBarManagerInternal(); diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java index ec052ecd20f2..efd8b6d9a943 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java +++ b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java @@ -122,6 +122,10 @@ public interface StatusBarManagerInternal { */ void onEmergencyActionLaunchGestureDetected(); + /** Toggle the task bar stash state. */ + void toggleTaskbar(); + + /** Toggle recents. */ void toggleRecentApps(); void setCurrentUser(int newUserId); diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java index 4489ba94235c..5bace0ebe13a 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java +++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java @@ -418,6 +418,15 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D } @Override + public void toggleTaskbar() { + if (mBar != null) { + try { + mBar.toggleTaskbar(); + } catch (RemoteException ex) {} + } + } + + @Override public void toggleRecentApps() { if (mBar != null) { try { |