Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/DistilledPagePrefsView.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/DistilledPagePrefsView.java b/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/DistilledPagePrefsView.java |
| index fc20132be0fd00abde1a8d2b602ee2f1df10a7df..29394f98cae1e70376dd074e01738e10fda7f627 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/DistilledPagePrefsView.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/DistilledPagePrefsView.java |
| @@ -9,14 +9,19 @@ import android.util.AttributeSet; |
| import android.view.LayoutInflater; |
| import android.view.View; |
| import android.view.ViewGroup; |
| +import android.widget.LinearLayout; |
| import android.widget.RadioButton; |
| import android.widget.RadioGroup; |
| +import android.widget.SeekBar; |
| +import android.widget.TextView; |
| import org.chromium.chrome.R; |
| +import org.chromium.chrome.browser.accessibility.FontSizePrefs; |
| import org.chromium.chrome.browser.profiles.Profile; |
| import org.chromium.components.dom_distiller.core.DistilledPagePrefs; |
| import org.chromium.components.dom_distiller.core.Theme; |
| +import java.text.DecimalFormat; |
| import java.util.EnumMap; |
| import java.util.Map; |
| @@ -24,15 +29,26 @@ import java.util.Map; |
| * A view which displays preferences for distilled pages. This allows users |
| * to change the theme, font size, etc. of distilled pages. |
| */ |
| -public class DistilledPagePrefsView extends RadioGroup |
| - implements DistilledPagePrefs.Observer { |
| +public class DistilledPagePrefsView extends LinearLayout |
| + implements DistilledPagePrefs.Observer, SeekBar.OnSeekBarChangeListener, |
| + FontSizePrefs.Observer { |
| // XML layout for View. |
| private static final int VIEW_LAYOUT = R.layout.distilled_page_prefs_view; |
| + // RadioGroup for color mode buttons. |
| + private RadioGroup mRadioGroup; |
| + |
| // Buttons for color mode. |
| private final Map<Theme, RadioButton> mColorModeButtons; |
| private final DistilledPagePrefs mDistilledPagePrefs; |
| + private final FontSizePrefs mFontSizePrefs; |
| + |
| + // Text field showing font zoom percentage. |
|
newt (away)
2014/08/11 17:15:30
s/zoom/size/g
I'd say "font size" or "font scale"
smaslo
2014/08/12 02:25:44
Done.
|
| + private TextView mFontZoomPercentage; |
|
newt (away)
2014/08/11 17:15:30
These two views (mFontZoomPercentage and mFontZoom
smaslo
2014/08/12 02:25:44
Done.
|
| + |
| + // SeekBar for font zoom. |
| + private SeekBar mFontZoom; |
| /** |
| * Creates a DistilledPagePrefsView. |
| @@ -44,6 +60,7 @@ public class DistilledPagePrefsView extends RadioGroup |
| super(context, attrs); |
| mDistilledPagePrefs = DomDistillerServiceFactory.getForProfile( |
| Profile.getLastUsedProfile()).getDistilledPagePrefs(); |
| + mFontSizePrefs = FontSizePrefs.getInstance(getContext()); |
| mColorModeButtons = new EnumMap<Theme, RadioButton>(Theme.class); |
| } |
| @@ -55,6 +72,7 @@ public class DistilledPagePrefsView extends RadioGroup |
| @Override |
| public void onFinishInflate() { |
| super.onFinishInflate(); |
| + mRadioGroup = (RadioGroup) findViewById(R.id.radio_button_group); |
| mColorModeButtons.put(Theme.LIGHT, |
| initializeAndGetButton(R.id.light_mode, Theme.LIGHT)); |
| mColorModeButtons.put(Theme.DARK, |
| @@ -62,11 +80,20 @@ public class DistilledPagePrefsView extends RadioGroup |
| mColorModeButtons.put(Theme.SEPIA, |
| initializeAndGetButton(R.id.sepia_mode, Theme.SEPIA)); |
| mColorModeButtons.get(mDistilledPagePrefs.getTheme()).setChecked(true); |
| + |
| + mFontZoom = (SeekBar) findViewById(R.id.font_size); |
| + mFontZoomPercentage = (TextView) findViewById(R.id.font_size_percentage); |
| + |
| + // Setting initial progress on font zoom seekbar. |
| + float initialValue = mFontSizePrefs.getFontScaleFactor(); |
|
newt (away)
2014/08/11 17:15:30
You could replace lines 88-90 with:
onChangeFon
smaslo
2014/08/12 02:25:44
Done.
|
| + setFontZoomProgress(initialValue); |
| + setFontZoomPercentage(initialValue); |
| + mFontZoom.setOnSeekBarChangeListener(this); |
| } |
| @Override |
| public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { |
| - setOrientation(HORIZONTAL); |
| + mRadioGroup.setOrientation(HORIZONTAL); |
| for (RadioButton button : mColorModeButtons.values()) { |
| ViewGroup.LayoutParams layoutParams = |
| @@ -80,7 +107,7 @@ public class DistilledPagePrefsView extends RadioGroup |
| // top of each other. |
| for (RadioButton button : mColorModeButtons.values()) { |
| if (button.getLineCount() > 1) { |
| - setOrientation(VERTICAL); |
| + mRadioGroup.setOrientation(VERTICAL); |
| for (RadioButton innerLoopButton : mColorModeButtons.values()) { |
| ViewGroup.LayoutParams layoutParams = |
| (ViewGroup.LayoutParams) innerLoopButton.getLayoutParams(); |
| @@ -115,6 +142,36 @@ public class DistilledPagePrefsView extends RadioGroup |
| mColorModeButtons.get(theme).setChecked(true); |
| } |
| + // SeekBar.OnSeekBarChangeListener |
| + |
| + @Override |
| + public void onProgressChanged( |
| + SeekBar seekBar, int progress, boolean fromUser) { |
| + float newValue = (progress * 5 + 50) / 100f; |
| + setFontZoomPercentage(newValue); |
| + mFontSizePrefs.setFontScaleFactor((float) newValue); |
| + } |
| + |
| + @Override |
| + public void onStartTrackingTouch(SeekBar seekBar) {}; |
|
newt (away)
2014/08/11 17:15:30
remove ";". same below
smaslo
2014/08/12 02:25:44
Done.
|
| + |
| + @Override |
| + public void onStopTrackingTouch(SeekBar seekBar) {}; |
| + |
| + // FontSizePrefs.Observer |
| + |
| + @Override |
| + public void onChangeFontSize(float newFontSize) { |
| + setFontZoomPercentage(newFontSize); |
| + setFontZoomProgress(newFontSize); |
|
newt (away)
2014/08/11 17:15:30
Changing the seekbar value will cause the textview
nyquist
2014/08/11 20:53:24
Yeah, that sounds reasonable.
smaslo
2014/08/12 02:25:44
I tried removing the line with setFontZoomPercenta
|
| + } |
| + |
| + @Override |
| + public void onChangeForceEnableZoom(boolean enabled) {} |
| + |
| + @Override |
| + public void onChangeUserSetForceEnableZoom(boolean enabled) {} |
| + |
| /** |
| * Initiatializes a Button and selects it if it corresponds to the current |
| * theme. |
| @@ -129,4 +186,21 @@ public class DistilledPagePrefsView extends RadioGroup |
| }); |
| return button; |
| } |
| + |
| + /** |
| + * Sets the progress of the mFontZoom SeekBar. |
| + */ |
| + private void setFontZoomProgress(float newValue) { |
| + int progress = (int) (newValue * 20 - 10); |
| + mFontZoom.setProgress(progress); |
| + } |
| + |
| + /** |
| + * Sets the text for the font zoom percentage text view. |
| + */ |
| + private void setFontZoomPercentage(float newValue) { |
| + float percentage = newValue * 100; |
| + DecimalFormat df = new DecimalFormat("#"); |
| + mFontZoomPercentage.setText(df.format(percentage) + "%"); |
|
newt (away)
2014/08/11 17:15:30
Be careful: in Turkish, the percent sign comes bef
smaslo
2014/08/12 02:25:44
Done.
|
| + } |
| } |