From eb8dce01cedf287d9b1b7b442b4799a40ac291a8 Mon Sep 17 00:00:00 2001 From: Schneider Victor-tulias Date: Wed, 3 May 2023 10:10:21 -0700 Subject: [PATCH] Add handling for toggling keyboard stashing from the keyboard Flag: ENABLE_KEYBOARD_TASKBAR_TOGGLE Bug: 281726846 Fixes: 246660615 Test: toggled the transient taskbar with the meta+t input Change-Id: I315f83850b11d24d8b55061d7111300effb43936 --- .../launcher3/taskbar/TaskbarActivityContext.java | 7 ++++++- .../taskbar/TaskbarLauncherStateController.java | 3 +-- .../launcher3/taskbar/TaskbarStashController.java | 15 +++++++-------- .../quickstep/TouchInteractionService.java | 11 ++++++++++- .../android/launcher3/config/FeatureFlags.java | 4 ++++ 5 files changed, 28 insertions(+), 12 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index d94d8f7fe0..9a3aa6dcba 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -979,11 +979,16 @@ public class TaskbarActivityContext extends BaseTaskbarContext { mControllers.taskbarEduTooltipController.hide(); } - /** Returns {@code true} if taskbar All Apps is open. */ + /** Returns {@code true} if Taskbar All Apps is open. */ public boolean isTaskbarAllAppsOpen() { return mControllers.taskbarAllAppsController.isOpen(); } + /** Toggles the Taskbar's stash state. */ + public void toggleTaskbarStash() { + mControllers.taskbarStashController.toggleTaskbarStash(); + } + /** * Called to start the taskbar translation spring to its settled translation (0). */ diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java index dfbd5bbfd1..008f5f6755 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java @@ -474,8 +474,7 @@ public class TaskbarLauncherStateController { public void onAnimationEnd(Animator animation) { TaskbarStashController stashController = mControllers.taskbarStashController; - stashController.updateAndAnimateTransientTaskbar( - /* stash */ true, /* duration */ 0); + stashController.updateAndAnimateTransientTaskbar(/* stash */ true); } }); } else { diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java index c2175f2444..9eebffa44f 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java @@ -500,17 +500,10 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba return mStashedHeight; } - /** - * Stash or unstashes the transient taskbar, using the default TASKBAR_STASH_DURATION. - */ - public void updateAndAnimateTransientTaskbar(boolean stash) { - updateAndAnimateTransientTaskbar(stash, TASKBAR_STASH_DURATION); - } - /** * Stash or unstashes the transient taskbar. */ - public void updateAndAnimateTransientTaskbar(boolean stash, long duration) { + public void updateAndAnimateTransientTaskbar(boolean stash) { if (!DisplayController.isTransientTaskbar(mActivity)) { return; } @@ -575,6 +568,12 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba return false; } + /** Toggles the Taskbar's stash state. */ + public void toggleTaskbarStash() { + if (!DisplayController.isTransientTaskbar(mActivity) || !hasAnyFlag(FLAGS_IN_APP)) return; + updateAndAnimateTransientTaskbar(!hasAnyFlag(FLAG_STASHED_IN_APP_AUTO)); + } + /** * Adds the Taskbar unstash to Hotseat animator to the animator set. * diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java index 682763f1df..81da7f4efe 100644 --- a/quickstep/src/com/android/quickstep/TouchInteractionService.java +++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java @@ -85,6 +85,7 @@ import com.android.launcher3.LauncherPrefs; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.anim.AnimatedFloat; +import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.provider.RestoreDbTask; import com.android.launcher3.statehandlers.DesktopVisibilityController; import com.android.launcher3.statemanager.StatefulActivity; @@ -207,7 +208,15 @@ public class TouchInteractionService extends Service @BinderThread @Override public void onTaskbarToggled() { - // To be implemented. + if (!FeatureFlags.ENABLE_KEYBOARD_TASKBAR_TOGGLE.get()) return; + MAIN_EXECUTOR.execute(() -> { + TaskbarActivityContext activityContext = + mTaskbarManager.getCurrentActivityContext(); + + if (activityContext != null) { + activityContext.toggleTaskbarStash(); + } + }); } @BinderThread diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java index 8dc120402d..8c4c31f0a8 100644 --- a/src/com/android/launcher3/config/FeatureFlags.java +++ b/src/com/android/launcher3/config/FeatureFlags.java @@ -404,6 +404,10 @@ public final class FeatureFlags { public static final BooleanFlag ENABLE_KEYBOARD_QUICK_SWITCH = getDebugFlag(270396844, "ENABLE_KEYBOARD_QUICK_SWITCH", ENABLED, "Enables keyboard quick switching"); + public static final BooleanFlag ENABLE_KEYBOARD_TASKBAR_TOGGLE = getDebugFlag(281726846, + "ENABLE_KEYBOARD_TASKBAR_TOGGLE", ENABLED, + "Enables keyboard taskbar stash toggling"); + // TODO(Block 30): Clean up flags public static final BooleanFlag USE_SEARCH_REQUEST_TIMEOUT_OVERRIDES = getDebugFlag(270395010, "USE_SEARCH_REQUEST_TIMEOUT_OVERRIDES", DISABLED,