Fix RTL issue in work tab

To simplify the code, we assume work tab widget == personal tab width.

FIX: 73782774

Change-Id: I534c97b1e0de0c8a1f5108bb9fa13da989bc73b0
diff --git a/src/com/android/launcher3/allapps/PersonalWorkSlidingTabStrip.java b/src/com/android/launcher3/allapps/PersonalWorkSlidingTabStrip.java
index b42d4cd..a069d5d 100644
--- a/src/com/android/launcher3/allapps/PersonalWorkSlidingTabStrip.java
+++ b/src/com/android/launcher3/allapps/PersonalWorkSlidingTabStrip.java
@@ -25,9 +25,9 @@
 import android.view.View;
 import android.widget.Button;
 import android.widget.LinearLayout;
-
 import com.android.launcher3.Launcher;
 import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
 import com.android.launcher3.pageindicators.PageIndicator;
 import com.android.launcher3.util.Themes;
 
@@ -47,12 +47,12 @@
     private int mSelectedIndicatorHeight;
     private int mIndicatorLeft = -1;
     private int mIndicatorRight = -1;
-    private int mIndicatorPosition = 0;
-    private float mIndicatorOffset;
+    private float mScrollOffset;
     private int mSelectedPosition = 0;
 
     private AllAppsContainerView mContainerView;
     private int mLastActivePage = 0;
+    private boolean mIsRtl;
 
     public PersonalWorkSlidingTabStrip(@NonNull Context context, @Nullable AttributeSet attrs) {
         super(context, attrs);
@@ -72,11 +72,11 @@
                 getResources().getDimensionPixelSize(R.dimen.all_apps_divider_height));
 
         mSharedPreferences = Launcher.getLauncher(getContext()).getSharedPrefs();
+        mIsRtl = Utilities.isRtl(getResources());
     }
 
-    private void updateIndicatorPosition(int position, float positionOffset) {
-        mIndicatorPosition = position;
-        mIndicatorOffset = positionOffset;
+    private void updateIndicatorPosition(float scrollOffset) {
+        mScrollOffset = scrollOffset;
         updateIndicatorPosition();
     }
 
@@ -92,32 +92,23 @@
     protected void onLayout(boolean changed, int l, int t, int r, int b) {
         super.onLayout(changed, l, t, r, b);
         updateTabTextColor(mSelectedPosition);
-        updateIndicatorPosition(mIndicatorPosition, mIndicatorOffset);
+        updateIndicatorPosition(mScrollOffset);
     }
 
     private void updateIndicatorPosition() {
-        final View tab = getChildAt(mIndicatorPosition);
-        int left, right;
-
-        if (tab != null && tab.getWidth() > 0) {
-            left = tab.getLeft();
-            right = tab.getRight();
-
-            if (mIndicatorOffset > 0f && mIndicatorPosition < getChildCount() - 1) {
-                // Draw the selection partway between the tabs
-                View nextTitle = getChildAt(mIndicatorPosition + 1);
-                left = (int) (mIndicatorOffset * nextTitle.getLeft() +
-                        (1.0f - mIndicatorOffset) * left);
-                right = (int) (mIndicatorOffset * nextTitle.getRight() +
-                        (1.0f - mIndicatorOffset) * right);
-            }
-        } else {
-            left = right = -1;
+        int left = -1, right = -1;
+        final View leftTab = getLeftTab();
+        if (leftTab != null) {
+            left = (int) (leftTab.getLeft() + leftTab.getWidth() * mScrollOffset);
+            right = left + leftTab.getWidth();
         }
-
         setIndicatorPosition(left, right);
     }
 
+    private View getLeftTab() {
+        return mIsRtl ? getChildAt(1) : getChildAt(0);
+    }
+
     private void setIndicatorPosition(int left, int right) {
         if (left != mIndicatorLeft || right != mIndicatorRight) {
             mIndicatorLeft = left;
@@ -140,7 +131,7 @@
         if (mSharedPreferences.getBoolean(KEY_SHOWED_PEEK_WORK_TAB, false)) {
             return;
         }
-        if (mIndicatorPosition != POSITION_PERSONAL) {
+        if (mLastActivePage != POSITION_PERSONAL) {
             return;
         }
         highlightWorkTab();
@@ -157,11 +148,8 @@
 
     @Override
     public void setScroll(int currentScroll, int totalScroll) {
-        if (currentScroll == totalScroll) {
-            updateIndicatorPosition(1, 0);
-        } else if (totalScroll > 0) {
-            updateIndicatorPosition(0, ((float) currentScroll) / totalScroll);
-        }
+        float scrollOffset = ((float) currentScroll) / totalScroll;
+        updateIndicatorPosition(scrollOffset);
     }
 
     @Override