Fixed Accessibility Preference for Android API Level 16

- Accessibility preference screen was not getting refreshed when
text scaling was modified. This was due to incompatibilites of
PreferenceScreen API between API level 16 and above. Modified
the code to use compatible scheme.

- Options menu was not showing padding at start and end of menu
items on API level 16. This was due to incompatibilites of API.
Added options to resource file to fix the problem.

Change-Id: I31d46962adf2aa9fa8dbbff1b1161092a55676f4
diff --git a/res/layout/menu_item.xml b/res/layout/menu_item.xml
index cdee2fd..ebd39ef 100644
--- a/res/layout/menu_item.xml
+++ b/res/layout/menu_item.xml
@@ -9,7 +9,9 @@
     android:layout_width="match_parent"
     android:layout_height="?android:attr/listPreferredItemHeightSmall"
     android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+    android:paddingLeft="?android:attr/listPreferredItemPaddingStart"
     android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+    android:paddingRight="?android:attr/listPreferredItemPaddingEnd"
     android:background="?android:attr/listChoiceBackgroundIndicator">
     <TextView
         android:id="@+id/menu_item_text"
diff --git a/res/xml/accessibility_preferences.xml b/res/xml/accessibility_preferences.xml
index 05403eb..8e1d8f2 100644
--- a/res/xml/accessibility_preferences.xml
+++ b/res/xml/accessibility_preferences.xml
@@ -17,32 +17,34 @@
 <PreferenceScreen
     xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <CheckBoxPreference android:key="force_userscalable"
-        android:title="@string/pref_force_userscalable"
-        android:summary="@string/pref_force_userscalable_summary"
-        android:defaultValue="false" />
-
     <PreferenceCategory android:title="@string/pref_font_size_category">
-        <com.android.browser.preferences.FontSizePreview
-            android:title="@string/preview" />
+        <com.android.browser.preferences.FontSizePreview android:title="@string/preview" />
         <com.android.browser.preferences.SeekBarSummaryPreference
-            android:key="text_zoom"
-            android:title="@string/pref_text_zoom"
             android:defaultValue="10"
-            android:max="30" />
+            android:key="text_zoom"
+            android:max="30"
+            android:title="@string/pref_text_zoom" />
 
-        <!-- SWE - remove double tap zoom from settings.
         <com.android.browser.preferences.SeekBarSummaryPreference
-            android:key="double_tap_zoom"
-            android:title="@string/pref_zoom_on_double_tap"
-            android:defaultValue="5"
-            android:max="10" />
-        -->
-        <com.android.browser.preferences.SeekBarSummaryPreference
-            android:key="min_font_size"
-            android:title="@string/pref_min_font_size"
             android:defaultValue="0"
-            android:max="20" />
+            android:key="min_font_size"
+            android:max="20"
+            android:title="@string/pref_min_font_size" />
+
+        <CheckBoxPreference
+            android:defaultValue="false"
+            android:key="force_userscalable"
+            android:summary="@string/pref_force_userscalable_summary"
+            android:title="@string/pref_force_userscalable" />
+
+        <ListPreference
+            android:defaultValue="MEDIUM"
+            android:dialogTitle="@string/pref_default_zoom_dialogtitle"
+            android:entries="@array/pref_default_zoom_choices"
+            android:entryValues="@array/pref_default_zoom_values"
+            android:key="default_zoom"
+            android:title="@string/pref_default_zoom" />
+
     </PreferenceCategory>
 
     <!-- // SWE_TODO: Commenting out inverted rendering settings
diff --git a/res/xml/general_preferences.xml b/res/xml/general_preferences.xml
index b7caa37..7c21b3a 100644
--- a/res/xml/general_preferences.xml
+++ b/res/xml/general_preferences.xml
@@ -137,60 +137,9 @@
 
         </PreferenceScreen>
 
-        <PreferenceScreen android:title="@string/pref_accessibility_title">
-
-            <PreferenceCategory android:title="@string/pref_font_size_category">
-                <com.android.browser.preferences.FontSizePreview android:title="@string/preview" />
-                <com.android.browser.preferences.SeekBarSummaryPreference
-                    android:defaultValue="10"
-                    android:key="text_zoom"
-                    android:max="30"
-                    android:title="@string/pref_text_zoom" />
-
-                <com.android.browser.preferences.SeekBarSummaryPreference
-                    android:defaultValue="0"
-                    android:key="min_font_size"
-                    android:max="20"
-                    android:title="@string/pref_min_font_size" />
-
-                <CheckBoxPreference
-                    android:defaultValue="false"
-                    android:key="force_userscalable"
-                    android:summary="@string/pref_force_userscalable_summary"
-                    android:title="@string/pref_force_userscalable" />
-
-                <ListPreference
-                    android:defaultValue="MEDIUM"
-                    android:dialogTitle="@string/pref_default_zoom_dialogtitle"
-                    android:entries="@array/pref_default_zoom_choices"
-                    android:entryValues="@array/pref_default_zoom_values"
-                    android:key="default_zoom"
-                    android:title="@string/pref_default_zoom" />
-
-            </PreferenceCategory>
-
-            <!-- // SWE_TODO: Commenting out inverted rendering settings
-            <PreferenceCategory android:title="@string/pref_inverted_category">
-
-                <com.android.browser.preferences.InvertedContrastPreview
-                    android:title="@string/preview" />
-
-                <CheckBoxPreference
-                    android:key="inverted"
-                    android:defaultValue="false"
-                    android:title="@string/pref_inverted"
-                    android:summary="@string/pref_inverted_summary" />
-
-                <com.android.browser.preferences.SeekBarSummaryPreference
-                    android:key="inverted_contrast"
-                    android:title="@string/pref_inverted_contrast"
-                    android:dependency="inverted"
-                    android:defaultValue="0"
-                    android:max="20" />
-            </PreferenceCategory>
-            -->
-
-        </PreferenceScreen>
+        <PreferenceScreen
+            android:key="accessibility_menu"
+            android:title="@string/pref_accessibility_title" />
 
 
         <PreferenceScreen android:title="@string/pref_content_title">
diff --git a/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java b/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java
index a51c89e..312f813 100644
--- a/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java
+++ b/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java
@@ -17,9 +17,11 @@
 package com.android.browser.preferences;
 
 import android.content.Context;
+import android.content.res.Resources;
 import android.os.Bundle;
 import android.preference.Preference;
 import android.preference.PreferenceFragment;
+import android.util.Log;
 
 import com.android.browser.BrowserSettings;
 import com.android.browser.PreferenceKeys;
@@ -27,23 +29,31 @@
 
 import java.text.NumberFormat;
 
-public class AccessibilityPreferencesFragment
+public class AccessibilityPreferencesFragment extends PreferenceFragment
         implements Preference.OnPreferenceChangeListener {
 
     NumberFormat mFormat;
-    PreferenceFragment mFragment;
 
-    AccessibilityPreferencesFragment(PreferenceFragment fragment) {
-        mFragment = fragment;
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        addPreferencesFromResource(R.xml.accessibility_preferences);
         BrowserSettings settings = BrowserSettings.getInstance();
         mFormat = NumberFormat.getPercentInstance();
 
-        Preference e = mFragment.findPreference(PreferenceKeys.PREF_MIN_FONT_SIZE);
+        Preference e = findPreference(PreferenceKeys.PREF_MIN_FONT_SIZE);
         e.setOnPreferenceChangeListener(this);
         updateMinFontSummary(e, settings.getMinimumFontSize());
-        e = mFragment.findPreference(PreferenceKeys.PREF_TEXT_ZOOM);
+        e = findPreference(PreferenceKeys.PREF_TEXT_ZOOM);
         e.setOnPreferenceChangeListener(this);
         updateTextZoomSummary(e, settings.getTextZoom());
+
+        e = findPreference(PreferenceKeys.PREF_DEFAULT_ZOOM);
+        e.setOnPreferenceChangeListener(this);
+        e.setSummary(getVisualDefaultZoomName(
+                getPreferenceScreen().getSharedPreferences()
+                        .getString(PreferenceKeys.PREF_DEFAULT_ZOOM, null)));
+
         /* SWE: Comment out double tap zoom feature
         e = findPreference(PreferenceKeys.PREF_DOUBLE_TAP_ZOOM);
         e.setOnPreferenceChangeListener(this);
@@ -58,8 +68,28 @@
         */
     }
 
+    private CharSequence getVisualDefaultZoomName(String enumName) {
+        Resources res = getActivity().getResources();
+        CharSequence[] visualNames = res.getTextArray(R.array.pref_default_zoom_choices);
+        CharSequence[] enumNames = res.getTextArray(R.array.pref_default_zoom_values);
+
+        // Sanity check
+        if (visualNames.length != enumNames.length) {
+            return "";
+        }
+
+        int length = enumNames.length;
+        for (int i = 0; i < length; i++) {
+            if (enumNames[i].equals(enumName)) {
+                return visualNames[i];
+            }
+        }
+
+        return "";
+    }
+
     void updateMinFontSummary(Preference pref, int minFontSize) {
-        Context c = mFragment.getActivity();
+        Context c = getActivity();
         pref.setSummary(c.getString(R.string.pref_min_font_size_value, minFontSize));
     }
 
@@ -79,13 +109,18 @@
 
     @Override
     public boolean onPreferenceChange(Preference pref, Object objValue) {
-        if (mFragment.getActivity() == null) {
+        if (getActivity() == null) {
             // We aren't attached, so don't accept preferences changes from the
             // invisible UI.
+            Log.d("AccessibilityPref", "Activity is null");
             return false;
         }
+        Log.d("AccessibilityPref", "User clicked on " + pref.getKey());
 
-        if (PreferenceKeys.PREF_MIN_FONT_SIZE.equals(pref.getKey())) {
+        if (pref.getKey().equals(PreferenceKeys.PREF_DEFAULT_ZOOM)) {
+            pref.setSummary(getVisualDefaultZoomName((String) objValue));
+            return true;
+        } else if (PreferenceKeys.PREF_MIN_FONT_SIZE.equals(pref.getKey())) {
             updateMinFontSummary(pref, BrowserSettings
                     .getAdjustedMinimumFontSize((Integer) objValue));
         }
diff --git a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
index 465366b..9ffa09b 100644
--- a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
+++ b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
@@ -59,13 +59,7 @@
         websiteSettings.setFragment(WebsiteSettingsFragment.class.getName());
         websiteSettings.setOnPreferenceClickListener(this);
 
-        Preference e = mFragment.findPreference(PreferenceKeys.PREF_DEFAULT_ZOOM);
-        e.setOnPreferenceChangeListener(this);
-        e.setSummary(getVisualDefaultZoomName(
-                mFragment.getPreferenceScreen().getSharedPreferences()
-                        .getString(PreferenceKeys.PREF_DEFAULT_ZOOM, null)));
-
-        e = mFragment.findPreference(PreferenceKeys.PREF_RESET_DEFAULT_PREFERENCES);
+        Preference e = mFragment.findPreference(PreferenceKeys.PREF_RESET_DEFAULT_PREFERENCES);
         e.setOnPreferenceChangeListener(this);
 
         e = mFragment.findPreference(PreferenceKeys.PREF_SEARCH_ENGINE);
@@ -80,6 +74,8 @@
             e.setOnPreferenceClickListener(this);
         }
 
+        e = mFragment.findPreference("accessibility_menu");
+        e.setOnPreferenceClickListener(this);
 
 
         onInitdownloadSettingsPreference();
@@ -183,10 +179,7 @@
             return false;
         }
 
-        if (pref.getKey().equals(PreferenceKeys.PREF_DEFAULT_ZOOM)) {
-            pref.setSummary(getVisualDefaultZoomName((String) objValue));
-            return true;
-        } else if (pref.getKey().equals(PreferenceKeys.PREF_RESET_DEFAULT_PREFERENCES)) {
+        if (pref.getKey().equals(PreferenceKeys.PREF_RESET_DEFAULT_PREFERENCES)) {
             Boolean value = (Boolean) objValue;
             if (value.booleanValue() == true) {
                 mFragment.startActivity(new Intent(BrowserActivity.ACTION_RESTART, null,
@@ -202,26 +195,6 @@
         return false;
     }
 
-    private CharSequence getVisualDefaultZoomName(String enumName) {
-        Resources res = mFragment.getActivity().getResources();
-        CharSequence[] visualNames = res.getTextArray(R.array.pref_default_zoom_choices);
-        CharSequence[] enumNames = res.getTextArray(R.array.pref_default_zoom_values);
-
-        // Sanity check
-        if (visualNames.length != enumNames.length) {
-            return "";
-        }
-
-        int length = enumNames.length;
-        for (int i = 0; i < length; i++) {
-            if (enumNames[i].equals(enumName)) {
-                return visualNames[i];
-            }
-        }
-
-        return "";
-    }
-
     @Override
     public boolean onPreferenceClick(Preference preference) {
         FragmentManager fragmentManager = mFragment.getFragmentManager();
@@ -242,6 +215,14 @@
             fragmentTransaction.addToBackStack(null);
             fragmentTransaction.commit();
             return true;
+        } else if (preference.getKey().equals("accessibility_menu")) {
+            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
+
+            Fragment newFragment = new AccessibilityPreferencesFragment();
+            fragmentTransaction.replace(mFragment.getId(), newFragment);
+            fragmentTransaction.addToBackStack(null);
+            fragmentTransaction.commit();
+            return true;
         }
 
         return false;
diff --git a/src/com/android/browser/preferences/GeneralPreferencesFragment.java b/src/com/android/browser/preferences/GeneralPreferencesFragment.java
index 1a2d5fe..f280766 100644
--- a/src/com/android/browser/preferences/GeneralPreferencesFragment.java
+++ b/src/com/android/browser/preferences/GeneralPreferencesFragment.java
@@ -67,7 +67,6 @@
     String mCurrentPage;
 
     AdvancedPreferencesFragment mAdvFrag = null;
-    AccessibilityPreferencesFragment mAccessFrag = null;
     PrivacySecurityPreferencesFragment mPrivFrag = null;
 
     @Override
@@ -93,7 +92,6 @@
         autofill.setOnPreferenceClickListener(this);
 
         mAdvFrag = new AdvancedPreferencesFragment(this);
-        mAccessFrag = new AccessibilityPreferencesFragment(this);
         mPrivFrag = new PrivacySecurityPreferencesFragment(this);
     }