Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(141)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/DistilledPagePrefsView.java

Issue 465493002: Font Size UI for Distilled Pages (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Auto Bots Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..4260ad12bce119067a992cc943e2baed8e51bbc3 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,30 +9,49 @@ 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.NumberFormat;
import java.util.EnumMap;
+import java.util.Locale;
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 scale percentage.
+ private TextView mFontScaleTextView;
+
+ // SeekBar for font scale. Has range of [0, 30].
+ private SeekBar mFontScaleSeekBar;
+
+ private NumberFormat mPercentageFormatter;
/**
* Creates a DistilledPagePrefsView.
@@ -44,7 +63,9 @@ 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);
+ mPercentageFormatter = NumberFormat.getPercentInstance(Locale.getDefault());
}
public static DistilledPagePrefsView create(Context context) {
@@ -55,6 +76,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 +84,18 @@ public class DistilledPagePrefsView extends RadioGroup
mColorModeButtons.put(Theme.SEPIA,
initializeAndGetButton(R.id.sepia_mode, Theme.SEPIA));
mColorModeButtons.get(mDistilledPagePrefs.getTheme()).setChecked(true);
+
+ mFontScaleSeekBar = (SeekBar) findViewById(R.id.font_size);
+ mFontScaleTextView = (TextView) findViewById(R.id.font_size_percentage);
+
+ // Setting initial progress on font scale seekbar.
+ onChangeFontSize(mFontSizePrefs.getFontScaleFactor());
+ mFontScaleSeekBar.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 +109,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 +144,37 @@ public class DistilledPagePrefsView extends RadioGroup
mColorModeButtons.get(theme).setChecked(true);
}
+ // SeekBar.OnSeekBarChangeListener
+
+ @Override
+ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+ // progress = [0, 30]
+ // newValue = .50, .55, .60, ..., 1.95, 2.00 (supported font scales)
+ float newValue = (progress / 20f + .5f);
+ setFontScaleTextView(newValue);
+ mFontSizePrefs.setFontScaleFactor((float) newValue);
+ }
+
+ @Override
+ public void onStartTrackingTouch(SeekBar seekBar) {}
+
+ @Override
+ public void onStopTrackingTouch(SeekBar seekBar) {}
+
+ // FontSizePrefs.Observer
+
+ @Override
+ public void onChangeFontSize(float newFontSize) {
+ setFontScaleTextView(newFontSize);
+ setFontScaleProgress(newFontSize);
+ }
+
+ @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 +189,21 @@ public class DistilledPagePrefsView extends RadioGroup
});
return button;
}
+
+ /**
+ * Sets the progress of mFontScaleSeekBar.
+ */
+ private void setFontScaleProgress(float newValue) {
+ // newValue = .50, .55, .60, ..., 1.95, 2.00 (supported font scales)
+ // progress = [0, 30]
+ int progress = (int) ((newValue - .5) * 20);
+ mFontScaleSeekBar.setProgress(progress);
+ }
+
+ /**
+ * Sets the text for the font scale text view.
+ */
+ private void setFontScaleTextView(float newValue) {
+ mFontScaleTextView.setText(mPercentageFormatter.format(newValue));
+ }
}
« no previous file with comments | « chrome/android/java/res/layout/distilled_page_prefs_view.xml ('k') | chrome/android/java/strings/android_chrome_strings.grd » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698