Fix QS RTL
- Reverse order of pages
- Change pivot point on date
- Default to last page position
- Fix animation
Bug: 27345063
Change-Id: I91aa03810fd3c78c63a07d4b0e0a10127792de60
diff --git a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java
index fd43aa0..115c9d0 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java
@@ -1,13 +1,13 @@
package com.android.systemui.qs;
import android.content.Context;
+import android.support.v4.view.PagerAdapter;
+import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import com.android.internal.widget.PagerAdapter;
-import com.android.internal.widget.ViewPager;
import com.android.systemui.R;
import com.android.systemui.qs.QSPanel.QSTileLayout;
import com.android.systemui.qs.QSPanel.TileRecord;
@@ -37,7 +37,8 @@
public void onPageSelected(int position) {
if (mPageIndicator == null) return;
if (mPageListener != null) {
- mPageListener.onPageChanged(position == 0);
+ mPageListener.onPageChanged(isLayoutRtl() ? position == mPages.size() - 1
+ : position == 0);
}
}
@@ -47,7 +48,8 @@
if (mPageIndicator == null) return;
mPageIndicator.setLocation(position + positionOffset);
if (mPageListener != null) {
- mPageListener.onPageChanged(position == 0 && positionOffsetPixels == 0);
+ mPageListener.onPageChanged(positionOffsetPixels == 0 &&
+ (isLayoutRtl() ? position == mPages.size() - 1 : position == 0));
}
}
@@ -59,6 +61,21 @@
}
@Override
+ public void onRtlPropertiesChanged(int layoutDirection) {
+ super.onRtlPropertiesChanged(layoutDirection);
+ setAdapter(mAdapter);
+ setCurrentItem(0, false);
+ }
+
+ @Override
+ public void setCurrentItem(int item, boolean smoothScroll) {
+ if (isLayoutRtl()) {
+ item = mPages.size() - 1 - item;
+ }
+ super.setCurrentItem(item, smoothScroll);
+ }
+
+ @Override
public boolean hasOverlappingRendering() {
return false;
}
@@ -128,6 +145,7 @@
mNumPages = index + 1;
mPageIndicator.setNumPages(mNumPages);
mAdapter.notifyDataSetChanged();
+ setCurrentItem(0, false);
}
}
@@ -206,6 +224,9 @@
public Object instantiateItem(ViewGroup container, int position) {
if (DEBUG) Log.d(TAG, "Instantiating " + position);
+ if (isLayoutRtl()) {
+ position = mPages.size() - 1 - position;
+ }
ViewGroup view = mPages.get(position);
container.addView(view);
return view;