From 1d4e75c777c050679b0d1866fb3a5b6aea9c377d Mon Sep 17 00:00:00 2001 From: mpodolian Date: Wed, 16 Oct 2024 16:26:30 -0700 Subject: [PATCH] Refactored hotseat translation X logic Made retrieval of the hotseat translation X easier to use. Test: Manual. Set the navigation mode to 3-button. Moved the bubble bar from one side to the other. Switched the navigation mode to gestures. Moved the bubble bar from one side to the other again. Bug: 373422448 Flag: EXEMPT refactoring Change-Id: Ie69f1ecf178244008e5c752882c4b91a30928756 --- .../taskbar/TaskbarInsetsController.kt | 18 +++++++----------- .../TaskbarLauncherStateController.java | 9 ++++----- .../taskbar/TaskbarViewController.java | 9 ++++----- .../uioverrides/QuickstepLauncher.java | 5 ++--- src/com/android/launcher3/DeviceProfile.java | 15 ++++++++++----- 5 files changed, 27 insertions(+), 29 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt index 1141a01726..55722a9b62 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt @@ -151,30 +151,26 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas DisplayController.showLockedTaskbarOnHome(context) ) { // adding the taskbar touch region - val touchableHeight: Int var left = 0 var right = context.deviceProfile.widthPx - var bubbleBarAdjustment = 0 + val touchableHeight: Int if (uiController.isAnimatingToLauncher) { val dp = controllers.taskbarActivityContext.deviceProfile touchableHeight = windowLayoutParams.height if (dp.isQsbInline) { // if Qsb is inline need to exclude search icon from touch region val isRtl = Utilities.isRtl(context.resources) - bubbleControllers?.bubbleBarViewController?.let { - if (dp.shouldAdjustHotseatOnBubblesLocationUpdate(context)) { + val navBarOffset = + bubbleControllers?.bubbleBarViewController?.let { val isBubblesOnLeft = it.bubbleBarLocation.isOnLeft(isRtl) - bubbleBarAdjustment = - dp.getHotseatTranslationXForBubbleBar(isBubblesOnLeft, isRtl) - } - } + dp.getHotseatTranslationXForNavBar(context, isBubblesOnLeft) + } ?: 0 val hotseatPadding: Rect = dp.getHotseatLayoutPadding(context) val borderSpacing: Int = dp.hotseatBorderSpace if (isRtl) { - right = - dp.widthPx - hotseatPadding.right + borderSpacing + bubbleBarAdjustment + right = dp.widthPx - hotseatPadding.right + borderSpacing + navBarOffset } else { - left = hotseatPadding.left - borderSpacing + bubbleBarAdjustment + left = hotseatPadding.left - borderSpacing + navBarOffset } } } else { diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java index 39aef28d45..6e7cf9e1f1 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java @@ -893,19 +893,18 @@ public class TaskbarLauncherStateController { mBubbleBarLocation = location; if (location == null) { // bubble bar is not present, hence no location, resetting the hotseat - updateHotseatAndQsbTranslationX(0, animate); + updateHotseatAndQsbTranslationX(/* targetValue = */ 0, animate); mBubbleBarLocation = null; return; } DeviceProfile deviceProfile = mLauncher.getDeviceProfile(); - if (!deviceProfile.shouldAdjustHotseatOnBubblesLocationUpdate( + if (!deviceProfile.shouldAdjustHotseatOnNavBarLocationUpdate( mControllers.taskbarActivityContext)) { return; } - boolean isRtl = isRtl(mLauncher.getResources()); - boolean isBubblesOnLeft = location.isOnLeft(isRtl); + boolean isBubblesOnLeft = location.isOnLeft(isRtl(mLauncher.getResources())); int targetX = deviceProfile - .getHotseatTranslationXForBubbleBar(isBubblesOnLeft, isRtl); + .getHotseatTranslationXForNavBar(mLauncher, isBubblesOnLeft); updateHotseatAndQsbTranslationX(targetX, animate); } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java index c275536b47..e9458ff5a5 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java @@ -837,12 +837,11 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar int firstRecentTaskIndex = -1; int hotseatNavBarTranslationX = 0; - if (mCurrentBubbleBarLocation != null - && taskbarDp.shouldAdjustHotseatOnBubblesLocationUpdate(mActivity)) { - boolean isRtl = mTaskbarView.isLayoutRtl(); - boolean isBubblesOnLeft = mCurrentBubbleBarLocation.isOnLeft(isRtl); + if (mCurrentBubbleBarLocation != null) { + boolean isBubblesOnLeft = mCurrentBubbleBarLocation + .isOnLeft(mTaskbarView.isLayoutRtl()); hotseatNavBarTranslationX = taskbarDp - .getHotseatTranslationXForBubbleBar(isBubblesOnLeft, isRtl); + .getHotseatTranslationXForNavBar(mActivity, isBubblesOnLeft); } for (int i = 0; i < mTaskbarView.getChildCount(); i++) { View child = mTaskbarView.getChildAt(i); diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java index acdff71e61..4ad65e1be8 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java @@ -1101,10 +1101,9 @@ public class QuickstepLauncher extends Launcher implements RecentsViewContainer, if (isBubbleBarEnabled() && enableBubbleBarInPersistentTaskBar() && mBubbleBarLocation != null) { - boolean isRtl = isRtl(getResources()); - boolean isBubblesOnLeft = mBubbleBarLocation.isOnLeft(isRtl); + boolean isBubblesOnLeft = mBubbleBarLocation.isOnLeft(isRtl(getResources())); translationX += mDeviceProfile - .getHotseatTranslationXForBubbleBar(isBubblesOnLeft, isRtl); + .getHotseatTranslationXForNavBar(this, isBubblesOnLeft); } if (isBubbleBarEnabled() && mDeviceProfile.shouldAdjustHotseatForBubbleBar(getContext(), hasBubbles())) { diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java index afe0ee1967..886255094f 100644 --- a/src/com/android/launcher3/DeviceProfile.java +++ b/src/com/android/launcher3/DeviceProfile.java @@ -2355,18 +2355,23 @@ public class DeviceProfile { /** * Returns whether Taskbar and Hotseat should adjust horizontally on bubble bar location update. */ - public boolean shouldAdjustHotseatOnBubblesLocationUpdate(Context context) { + public boolean shouldAdjustHotseatOnNavBarLocationUpdate(Context context) { return enableBubbleBar() && enableBubbleBarInPersistentTaskBar() && !DisplayController.getNavigationMode(context).hasGestures; } /** Returns hotseat translation X for the bubble bar position. */ - public int getHotseatTranslationXForBubbleBar(boolean isNavbarOnRight, boolean isRtl) { - if (isNavbarOnRight) { - return isRtl ? -navButtonsLayoutWidthPx : 0; + public int getHotseatTranslationXForNavBar(Context context, boolean isBubblesOnLeft) { + if (shouldAdjustHotseatOnNavBarLocationUpdate(context)) { + boolean isRtl = Utilities.isRtl(context.getResources()); + if (isBubblesOnLeft) { + return isRtl ? -navButtonsLayoutWidthPx : 0; + } else { + return isRtl ? 0 : navButtonsLayoutWidthPx; + } } else { - return isRtl ? 0 : navButtonsLayoutWidthPx; + return 0; } }