Merge "Fix incorrect dock defender banner icon."
diff --git a/src/com/android/settings/accessibility/TextReadingPreferenceFragment.java b/src/com/android/settings/accessibility/TextReadingPreferenceFragment.java
index 893837c..d1614ca 100644
--- a/src/com/android/settings/accessibility/TextReadingPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/TextReadingPreferenceFragment.java
@@ -64,7 +64,12 @@
static final String RESET_KEY = "reset";
private static final String PREVIEW_KEY = "preview";
private static final String NEED_RESET_SETTINGS = "need_reset_settings";
+ private static final String LAST_PREVIEW_INDEX = "last_preview_index";
+ private static final int UNKNOWN_INDEX = -1;
+
private FontWeightAdjustmentPreferenceController mFontWeightAdjustmentController;
+ private TextReadingPreviewController mPreviewController;
+ private int mLastPreviewIndex = UNKNOWN_INDEX;
private int mEntryPoint = EntryPoint.UNKNOWN_ENTRY;
/**
@@ -95,14 +100,20 @@
boolean mNeedResetSettings;
@Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
mNeedResetSettings = false;
mResetStateListeners = getResetStateListeners();
- if (icicle != null && icicle.getBoolean(NEED_RESET_SETTINGS)) {
- mResetStateListeners.forEach(ResetStateListener::resetState);
+ if (savedInstanceState != null) {
+ if (savedInstanceState.getBoolean(NEED_RESET_SETTINGS)) {
+ mResetStateListeners.forEach(ResetStateListener::resetState);
+ }
+
+ if (savedInstanceState.containsKey(LAST_PREVIEW_INDEX)) {
+ mLastPreviewIndex = savedInstanceState.getInt(LAST_PREVIEW_INDEX);
+ }
}
}
@@ -139,19 +150,19 @@
final FontSizeData fontSizeData = new FontSizeData(context);
final DisplaySizeData displaySizeData = createDisplaySizeData(context);
- final TextReadingPreviewController previewController = new TextReadingPreviewController(
- context, PREVIEW_KEY, fontSizeData, displaySizeData);
- previewController.setEntryPoint(mEntryPoint);
- controllers.add(previewController);
+ mPreviewController = new TextReadingPreviewController(context, PREVIEW_KEY, fontSizeData,
+ displaySizeData);
+ mPreviewController.setEntryPoint(mEntryPoint);
+ controllers.add(mPreviewController);
final PreviewSizeSeekBarController fontSizeController = new PreviewSizeSeekBarController(
context, FONT_SIZE_KEY, fontSizeData);
- fontSizeController.setInteractionListener(previewController);
+ fontSizeController.setInteractionListener(mPreviewController);
controllers.add(fontSizeController);
final PreviewSizeSeekBarController displaySizeController = new PreviewSizeSeekBarController(
context, DISPLAY_SIZE_KEY, displaySizeData);
- displaySizeController.setInteractionListener(previewController);
+ displaySizeController.setInteractionListener(mPreviewController);
controllers.add(displaySizeController);
mFontWeightAdjustmentController =
@@ -206,6 +217,17 @@
if (mNeedResetSettings) {
outState.putBoolean(NEED_RESET_SETTINGS, true);
}
+
+ outState.putInt(LAST_PREVIEW_INDEX, mPreviewController.getCurrentItem());
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+
+ if (mLastPreviewIndex != UNKNOWN_INDEX) {
+ mPreviewController.setCurrentItem(mLastPreviewIndex);
+ }
}
@VisibleForTesting
diff --git a/src/com/android/settings/accessibility/TextReadingPreviewController.java b/src/com/android/settings/accessibility/TextReadingPreviewController.java
index 29faaaa..8fa8dc7 100644
--- a/src/com/android/settings/accessibility/TextReadingPreviewController.java
+++ b/src/com/android/settings/accessibility/TextReadingPreviewController.java
@@ -133,6 +133,14 @@
postCommitDelayed(CHANGE_BY_SEEKBAR_DELAY_MS);
}
+ void setCurrentItem(int index) {
+ mPreviewPreference.setCurrentItem(index);
+ }
+
+ int getCurrentItem() {
+ return mPreviewPreference.getCurrentItem();
+ }
+
/**
* The entry point is used for logging.
*
diff --git a/src/com/android/settings/accessibility/TextReadingPreviewPreference.java b/src/com/android/settings/accessibility/TextReadingPreviewPreference.java
index 4b8ca39..cef6f25 100644
--- a/src/com/android/settings/accessibility/TextReadingPreviewPreference.java
+++ b/src/com/android/settings/accessibility/TextReadingPreviewPreference.java
@@ -37,6 +37,24 @@
private int mLastLayerIndex;
private PreviewPagerAdapter mPreviewAdapter;
+ private final ViewPager.OnPageChangeListener mPageChangeListener =
+ new ViewPager.OnPageChangeListener() {
+ @Override
+ public void onPageScrolled(int i, float v, int i1) {
+ // Do nothing
+ }
+
+ @Override
+ public void onPageSelected(int i) {
+ mCurrentItem = i;
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int i) {
+ // Do nothing
+ }
+ };
+
TextReadingPreviewPreference(Context context) {
super(context);
init();
@@ -63,6 +81,7 @@
super.onBindViewHolder(holder);
final ViewPager viewPager = (ViewPager) holder.findViewById(R.id.preview_pager);
+ viewPager.addOnPageChangeListener(mPageChangeListener);
final DotsPageIndicator pageIndicator =
(DotsPageIndicator) holder.findViewById(R.id.page_indicator);
updateAdapterIfNeeded(viewPager, pageIndicator, mPreviewAdapter);
diff --git a/tests/robotests/src/com/android/settings/accessibility/TextReadingPreviewPreferenceTest.java b/tests/robotests/src/com/android/settings/accessibility/TextReadingPreviewPreferenceTest.java
index 3dc82da..1688142 100644
--- a/tests/robotests/src/com/android/settings/accessibility/TextReadingPreviewPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/TextReadingPreviewPreferenceTest.java
@@ -129,6 +129,17 @@
verify(mPreviewPagerAdapter).setPreviewLayer(eq(index), anyInt(), anyInt(), anyBoolean());
}
+ @Test
+ public void afterPagerChange_updateCurrentItem() {
+ final int currentItem = 2;
+ mTextReadingPreviewPreference.setPreviewAdapter(mPreviewPagerAdapter);
+ mTextReadingPreviewPreference.onBindViewHolder(mHolder);
+
+ mViewPager.setCurrentItem(currentItem);
+
+ assertThat(mTextReadingPreviewPreference.getCurrentItem()).isEqualTo(currentItem);
+ }
+
private static Configuration[] createConfigurations(int count) {
final Configuration[] configurations = new Configuration[count];
for (int i = 0; i < count; i++) {