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,