Merge "Fix the preview should keep the same layer after font or display size change."
This commit is contained in:
@@ -64,7 +64,12 @@ public class TextReadingPreferenceFragment extends DashboardFragment {
|
||||
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 @@ public class TextReadingPreferenceFragment extends DashboardFragment {
|
||||
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 @@ public class TextReadingPreferenceFragment extends DashboardFragment {
|
||||
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 @@ public class TextReadingPreferenceFragment extends DashboardFragment {
|
||||
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
|
||||
|
@@ -133,6 +133,14 @@ class TextReadingPreviewController extends BasePreferenceController implements
|
||||
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.
|
||||
*
|
||||
|
@@ -37,6 +37,24 @@ public class TextReadingPreviewPreference extends Preference {
|
||||
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 @@ public class TextReadingPreviewPreference extends Preference {
|
||||
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);
|
||||
|
@@ -129,6 +129,17 @@ public class TextReadingPreviewPreferenceTest {
|
||||
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++) {
|
||||
|
Reference in New Issue
Block a user