summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/values/arrays.xml20
-rw-r--r--res/values/strings.xml6
-rw-r--r--res/xml/display_settings.xml9
-rw-r--r--src/com/android/settings/DisplaySettings.java44
4 files changed, 79 insertions, 0 deletions
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 6194719..4233f6d 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -137,6 +137,26 @@
<item>1800000</item>
</string-array>
+ <string-array name="entries_font_size">
+ <item>Extremely Small</item>
+ <item>Extra Small</item>
+ <item>Small</item>
+ <item>Normal</item>
+ <item>Large</item>
+ <item>Extra Large</item>
+ <item>Extremely Large</item>
+ </string-array>
+
+ <string-array name="entryvalues_font_size">
+ <item>0.70</item>
+ <item>0.85</item>
+ <item>0.95</item>
+ <item>1.0</item>
+ <item>1.05</item>
+ <item>1.15</item>
+ <item>1.30</item>
+ </string-array>
+
<!-- TTS settings -->
<!-- Default speech rate choices -->
diff --git a/res/values/strings.xml b/res/values/strings.xml
index a261e9f..b508280 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1442,6 +1442,12 @@
<string name="screen_timeout_summary">Screen turns off automatically after <xliff:g id="timeout_description">%1$s</xliff:g></string>
<!-- Sound & display settings screen, setting option name to change whether the screen adjusts automatically based on lighting conditions -->
<string name="automatic_brightness">Automatic brightness</string>
+ <!-- [CHAR LIMIT=30] Sound & display settings screen, setting option name to change font size -->
+ <string name="title_font_size">Font size</string>
+ <!-- [CHAR LIMIT=40] Sound & display settings screen, setting option summary to change font size -->
+ <string name="summary_font_size">Overall size of fonts</string>
+ <!-- [CHAR LIMIT=40] Sound & display settings screen, title of dialog for picking font size -->
+ <string name="dialog_title_font_size">Select font size</string>
<!-- SIM lock settings title -->
<string name="sim_lock_settings">SIM card lock settings</string>
diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml
index 7fe7f76..5e2d76e 100644
--- a/res/xml/display_settings.xml
+++ b/res/xml/display_settings.xml
@@ -41,4 +41,13 @@
android:persistent="false"
android:entries="@array/screen_timeout_entries"
android:entryValues="@array/screen_timeout_values" />
+
+ <ListPreference
+ android:key="font_size"
+ android:title="@string/title_font_size"
+ android:summary="@string/summary_font_size"
+ android:entries="@array/entries_font_size"
+ android:entryValues="@array/entryvalues_font_size"
+ android:dialogTitle="@string/dialog_title_font_size" />
+
</PreferenceScreen>
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java
index cdb0147..6cf2b16 100644
--- a/src/com/android/settings/DisplaySettings.java
+++ b/src/com/android/settings/DisplaySettings.java
@@ -18,9 +18,11 @@ package com.android.settings;
import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
+import android.app.ActivityManagerNative;
import android.app.admin.DevicePolicyManager;
import android.content.ContentResolver;
import android.content.Context;
+import android.content.res.Configuration;
import android.database.ContentObserver;
import android.os.Bundle;
import android.os.Handler;
@@ -46,11 +48,15 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
private static final String KEY_SCREEN_TIMEOUT = "screen_timeout";
private static final String KEY_ANIMATIONS = "animations";
private static final String KEY_ACCELEROMETER = "accelerometer";
+ private static final String KEY_FONT_SIZE = "font_size";
private ListPreference mAnimations;
private CheckBoxPreference mAccelerometer;
private float[] mAnimationScales;
+ private ListPreference mFontSizePref;
+ private final Configuration mCurConfig = new Configuration();
+
private IWindowManager mWindowManager;
private ListPreference mScreenTimeoutPreference;
@@ -82,6 +88,9 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
mScreenTimeoutPreference.setOnPreferenceChangeListener(this);
disableUnusableTimeouts(mScreenTimeoutPreference);
updateTimeoutPreferenceDescription(resolver, currentTimeout);
+
+ mFontSizePref = (ListPreference) findPreference(KEY_FONT_SIZE);
+ mFontSizePref.setOnPreferenceChangeListener(this);
}
private void updateTimeoutPreferenceDescription(ContentResolver resolver, long currentTimeout) {
@@ -135,6 +144,29 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
screenTimeoutPreference.setEnabled(revisedEntries.size() > 0);
}
+ int floatToIndex(float val, int resid) {
+ String[] indices = getResources().getStringArray(resid);
+ float lastVal = Float.parseFloat(indices[0]);
+ for (int i=1; i<indices.length; i++) {
+ float thisVal = Float.parseFloat(indices[i]);
+ if (val < (lastVal + (thisVal-lastVal)*.5f)) {
+ return i-1;
+ }
+ lastVal = thisVal;
+ }
+ return indices.length-1;
+ }
+
+ public void readFontSizePreference(ListPreference pref) {
+ try {
+ mCurConfig.updateFrom(
+ ActivityManagerNative.getDefault().getConfiguration());
+ } catch (RemoteException e) {
+ }
+ pref.setValueIndex(floatToIndex(mCurConfig.fontScale,
+ R.array.entryvalues_font_size));
+ }
+
@Override
public void onResume() {
super.onResume();
@@ -179,6 +211,7 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
mAnimations.setValueIndex(idx);
updateAnimationsSummary(mAnimations.getValue());
updateAccelerometerRotationCheckbox();
+ readFontSizePreference(mFontSizePref);
}
private void updateAccelerometerRotationCheckbox() {
@@ -200,6 +233,14 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
}
}
+ public void writeFontSizePreference(Object objValue) {
+ try {
+ mCurConfig.fontScale = Float.parseFloat(objValue.toString());
+ ActivityManagerNative.getDefault().updateConfiguration(mCurConfig);
+ } catch (RemoteException e) {
+ }
+ }
+
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
if (preference == mAccelerometer) {
@@ -241,6 +282,9 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
Log.e(TAG, "could not persist screen timeout setting", e);
}
}
+ if (KEY_FONT_SIZE.equals(key)) {
+ writeFontSizePreference(objValue);
+ }
return true;
}