Make hotseat RTL aware

Fix: 217567306
Test: manual, turning on "Force RTL"
Change-Id: I1369cfc6e9afd328a1a6945469064d4cd54f31ea
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index 500244c..5685d3b 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -1013,29 +1013,32 @@
                         mInsets.right + hotseatBarSidePaddingStartPx, paddingBottom);
             }
         } else if (isTaskbarPresent) {
+            boolean isRtl = Utilities.isRtl(context.getResources());
             int hotseatHeight = workspacePadding.bottom;
             int taskbarOffset = getTaskbarOffsetY();
-            int additionalLeftSpace = 0;
+            // Push icons to the side
+            int additionalQsbSpace = isQsbInline ? qsbWidth + hotseatBorderSpace : 0;
 
-            // Center the QSB with hotseat and push icons to the right
-            if (isQsbInline) {
-                additionalLeftSpace = qsbWidth + hotseatBorderSpace;
-            }
-
+            // Center the QSB vertically with hotseat
             int hotseatTopPadding = hotseatHeight - taskbarOffset - hotseatCellHeightPx;
 
             int endOffset = ApiWrapper.getHotseatEndOffset(context);
             int requiredWidth = iconSizePx * numShownHotseatIcons
                     + hotseatBorderSpace * (numShownHotseatIcons - 1)
-                    + additionalLeftSpace;
+                    + additionalQsbSpace;
 
-            int hotseatSize = Math.min(requiredWidth, availableWidthPx - endOffset);
-            int sideSpacing = (availableWidthPx - hotseatSize) / 2;
-            mHotseatPadding.set(sideSpacing + additionalLeftSpace, hotseatTopPadding, sideSpacing,
-                    taskbarOffset);
+            int hotseatWidth = Math.min(requiredWidth, availableWidthPx - endOffset);
+            int sideSpacing = (availableWidthPx - hotseatWidth) / 2;
+            mHotseatPadding.set(sideSpacing, hotseatTopPadding, sideSpacing, taskbarOffset);
+
+            if (isRtl) {
+                mHotseatPadding.right += additionalQsbSpace;
+            } else {
+                mHotseatPadding.left += additionalQsbSpace;
+            }
 
             if (endOffset > sideSpacing) {
-                int diff = Utilities.isRtl(context.getResources())
+                int diff = isRtl
                         ? sideSpacing - endOffset
                         : endOffset - sideSpacing;
                 mHotseatPadding.left -= diff;
@@ -1085,7 +1088,7 @@
      */
     public int getTaskbarOffsetY() {
         if (isQsbInline) {
-            return getQsbOffsetY() + (Math.abs(hotseatQsbHeight - iconSizePx) / 2);
+            return getQsbOffsetY() - (Math.abs(hotseatQsbHeight - hotseatCellHeightPx) / 2);
         } else {
             return (getQsbOffsetY() - taskbarSize) / 2;
         }
diff --git a/src/com/android/launcher3/Hotseat.java b/src/com/android/launcher3/Hotseat.java
index 9c749aa7..66a4da8 100644
--- a/src/com/android/launcher3/Hotseat.java
+++ b/src/com/android/launcher3/Hotseat.java
@@ -195,7 +195,8 @@
         int left;
         if (mActivity.getDeviceProfile().isQsbInline) {
             int qsbSpace = mActivity.getDeviceProfile().hotseatBorderSpace;
-            left = l + getPaddingLeft() - qsbWidth - qsbSpace;
+            left = Utilities.isRtl(getResources()) ? r - getPaddingRight() + qsbSpace
+                    : l + getPaddingLeft() - qsbWidth - qsbSpace;
         } else {
             left = (r - l - qsbWidth) / 2;
         }