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";
|
static final String RESET_KEY = "reset";
|
||||||
private static final String PREVIEW_KEY = "preview";
|
private static final String PREVIEW_KEY = "preview";
|
||||||
private static final String NEED_RESET_SETTINGS = "need_reset_settings";
|
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 FontWeightAdjustmentPreferenceController mFontWeightAdjustmentController;
|
||||||
|
private TextReadingPreviewController mPreviewController;
|
||||||
|
private int mLastPreviewIndex = UNKNOWN_INDEX;
|
||||||
private int mEntryPoint = EntryPoint.UNKNOWN_ENTRY;
|
private int mEntryPoint = EntryPoint.UNKNOWN_ENTRY;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -95,14 +100,20 @@ public class TextReadingPreferenceFragment extends DashboardFragment {
|
|||||||
boolean mNeedResetSettings;
|
boolean mNeedResetSettings;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle icicle) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(icicle);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
mNeedResetSettings = false;
|
mNeedResetSettings = false;
|
||||||
mResetStateListeners = getResetStateListeners();
|
mResetStateListeners = getResetStateListeners();
|
||||||
|
|
||||||
if (icicle != null && icicle.getBoolean(NEED_RESET_SETTINGS)) {
|
if (savedInstanceState != null) {
|
||||||
mResetStateListeners.forEach(ResetStateListener::resetState);
|
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 FontSizeData fontSizeData = new FontSizeData(context);
|
||||||
final DisplaySizeData displaySizeData = createDisplaySizeData(context);
|
final DisplaySizeData displaySizeData = createDisplaySizeData(context);
|
||||||
|
|
||||||
final TextReadingPreviewController previewController = new TextReadingPreviewController(
|
mPreviewController = new TextReadingPreviewController(context, PREVIEW_KEY, fontSizeData,
|
||||||
context, PREVIEW_KEY, fontSizeData, displaySizeData);
|
displaySizeData);
|
||||||
previewController.setEntryPoint(mEntryPoint);
|
mPreviewController.setEntryPoint(mEntryPoint);
|
||||||
controllers.add(previewController);
|
controllers.add(mPreviewController);
|
||||||
|
|
||||||
final PreviewSizeSeekBarController fontSizeController = new PreviewSizeSeekBarController(
|
final PreviewSizeSeekBarController fontSizeController = new PreviewSizeSeekBarController(
|
||||||
context, FONT_SIZE_KEY, fontSizeData);
|
context, FONT_SIZE_KEY, fontSizeData);
|
||||||
fontSizeController.setInteractionListener(previewController);
|
fontSizeController.setInteractionListener(mPreviewController);
|
||||||
controllers.add(fontSizeController);
|
controllers.add(fontSizeController);
|
||||||
|
|
||||||
final PreviewSizeSeekBarController displaySizeController = new PreviewSizeSeekBarController(
|
final PreviewSizeSeekBarController displaySizeController = new PreviewSizeSeekBarController(
|
||||||
context, DISPLAY_SIZE_KEY, displaySizeData);
|
context, DISPLAY_SIZE_KEY, displaySizeData);
|
||||||
displaySizeController.setInteractionListener(previewController);
|
displaySizeController.setInteractionListener(mPreviewController);
|
||||||
controllers.add(displaySizeController);
|
controllers.add(displaySizeController);
|
||||||
|
|
||||||
mFontWeightAdjustmentController =
|
mFontWeightAdjustmentController =
|
||||||
@@ -206,6 +217,17 @@ public class TextReadingPreferenceFragment extends DashboardFragment {
|
|||||||
if (mNeedResetSettings) {
|
if (mNeedResetSettings) {
|
||||||
outState.putBoolean(NEED_RESET_SETTINGS, true);
|
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
|
@VisibleForTesting
|
||||||
|
@@ -133,6 +133,14 @@ class TextReadingPreviewController extends BasePreferenceController implements
|
|||||||
postCommitDelayed(CHANGE_BY_SEEKBAR_DELAY_MS);
|
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.
|
* The entry point is used for logging.
|
||||||
*
|
*
|
||||||
|
@@ -37,6 +37,24 @@ public class TextReadingPreviewPreference extends Preference {
|
|||||||
private int mLastLayerIndex;
|
private int mLastLayerIndex;
|
||||||
private PreviewPagerAdapter mPreviewAdapter;
|
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) {
|
TextReadingPreviewPreference(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
init();
|
init();
|
||||||
@@ -63,6 +81,7 @@ public class TextReadingPreviewPreference extends Preference {
|
|||||||
super.onBindViewHolder(holder);
|
super.onBindViewHolder(holder);
|
||||||
|
|
||||||
final ViewPager viewPager = (ViewPager) holder.findViewById(R.id.preview_pager);
|
final ViewPager viewPager = (ViewPager) holder.findViewById(R.id.preview_pager);
|
||||||
|
viewPager.addOnPageChangeListener(mPageChangeListener);
|
||||||
final DotsPageIndicator pageIndicator =
|
final DotsPageIndicator pageIndicator =
|
||||||
(DotsPageIndicator) holder.findViewById(R.id.page_indicator);
|
(DotsPageIndicator) holder.findViewById(R.id.page_indicator);
|
||||||
updateAdapterIfNeeded(viewPager, pageIndicator, mPreviewAdapter);
|
updateAdapterIfNeeded(viewPager, pageIndicator, mPreviewAdapter);
|
||||||
|
@@ -129,6 +129,17 @@ public class TextReadingPreviewPreferenceTest {
|
|||||||
verify(mPreviewPagerAdapter).setPreviewLayer(eq(index), anyInt(), anyInt(), anyBoolean());
|
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) {
|
private static Configuration[] createConfigurations(int count) {
|
||||||
final Configuration[] configurations = new Configuration[count];
|
final Configuration[] configurations = new Configuration[count];
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
|
Reference in New Issue
Block a user