UI fixes (back arrow, blue switch bar, append whether Talkback is on to
summary), Talkback no longer disabled when preference is tapped, fixes
SettingsPreferenceFragment to not check parent class to determine whether to
show options menu.

Change-Id: I3345e1a878f51b4387ca1bfe89855339617a94d6
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index b048b71..d94ff13 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -109,6 +109,7 @@
     <attr name="switchBarTheme" format="reference" />
     <attr name="switchBarMarginStart" format="dimension" />
     <attr name="switchBarMarginEnd" format="dimension" />
+    <attr name="switchBarBackgroundColor" format="color" />
 
     <attr name="preferenceBackgroundColor" format="color" />
 
diff --git a/res/values/strings.xml b/res/values/strings.xml
index bc2076a..8623e85 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3745,8 +3745,10 @@
     <string name="vision_settings_description">Adjust these settings now to assist you through the remainder of the set up process. You can adjust them any time in device settings.</string>
     <!-- Title for the accessibility preference category of accessibility services. [CHAR LIMIT=25] -->
     <string name="accessibility_services_title">Services</string>
-    <!-- Summary for the Talkback Accessibility Service. Lets the user know that Talkback is a screenreader and that it is usually most helpful to blind and low vision users. [CHAR_LIMIT=none] -->
-    <string name="talkback_summary">Screenreader tool primarily for people with blindness and low vision</string>
+    <!-- Title for the Talkback Accessibility Service. Displayed on the Accessibility Settings screen in Setup Wizard. [CHAR_LIMIT=25] -->
+    <string name="talkback_title">Talkback</string>
+    <!-- Summary for the Talkback Accessibility Service. Lets the user know that Talkback is a screenreader and that it is usually most helpful to blind and low vision users and whether the service is on. [CHAR_LIMIT=none] -->
+    <string name="talkback_summary">Screenreader tool primarily for people with blindness and low vision\n<xliff:g id="service_state" example="On">%1$s</xliff:g></string>
     <!-- Title for the accessibility preference category of system related preferences. [CHAR LIMIT=25] -->
     <string name="accessibility_system_title">System</string>
     <!-- Title for the accessibility preference category of display related preferences. [CHAR LIMIT=25] -->
@@ -3756,7 +3758,7 @@
     <!-- Title for the accessibility preference screen to enable screen magnification. [CHAR LIMIT=35] -->
     <string name="accessibility_screen_magnification_title">Magnification gestures</string>
     <!-- Summary for the accessibility preference screen to enable screen magnification. [CHAR LIMIT=none] -->
-    <string name="accessibility_screen_magnification_summary">Zoom in and out by triple-tapping the screen with one finger.\n\nWhile zoomed in, you can:\n<ul><li>Pan: Drag two or more fingers across the screen.</li>\n<li>Adjust zoom level: Pinch two or more fingers together or spread them apart.</li>\n<li>Temporariliy magnify: Triple-tap, hold, and drag your finger to explore different parts of the screen. Lift your finger to return to our previous state.</li></ul>\n\nTriple-tap for magnification works everywhere except the keyboard and navigation bar.</string>
+    <string name="accessibility_screen_magnification_summary">Zoom in and out by triple-tapping the screen with one finger.\n\nWhile zoomed in, you can:\n<ul><li>Pan: Drag two or more fingers across the screen.</li>\n<li>Adjust zoom level: Pinch two or more fingers together or spread them apart.</li>\n<li>Temporariliy magnify: Triple-tap, hold, and drag your finger to explore different parts of the screen. Lift your finger to return to your previous state.</li></ul>\n\nTriple-tap for magnification works everywhere except the keyboard and navigation bar.</string>
     <!-- Title for the preference to enable the global geture that turns on accessibility. [CHAR LIMIT=35] -->
     <string name="accessibility_global_gesture_preference_title">Accessibility shortcut</string>
     <!-- Summary for the preference to enable the global geture that turns on accessibility (on state). [CHAR LIMIT=60] -->
diff --git a/res/values/themes.xml b/res/values/themes.xml
index da74348..1cae46c 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -118,7 +118,11 @@
         <item name="android:colorPrimary">@color/material_blue_700</item>
         <item name="android:colorPrimaryDark">@color/material_blue_700</item>
         <item name="preferenceTheme">@style/PreferenceTheme</item>
-        <item name="switchBarTheme">@style/ThemeOverlay.SwitchBar.Settings</item>
+        <item name="switchBarTheme">@style/SetupWizardAccessibilitySwitchBarTheme</item>
+    </style>
+
+    <style name="SetupWizardAccessibilitySwitchBarTheme" parent="ThemeOverlay.SwitchBar.Settings">
+        <item name="switchBarBackgroundColor">@color/material_blue_500</item>
     </style>
 
     <!-- Theme with no local references, used by AccountPreferenceBase where we have to inflate
@@ -180,11 +184,13 @@
     <style name="ThemeOverlay.SwitchBar.Settings" parent="@android:style/ThemeOverlay.Material.Dark.ActionBar">
         <item name="switchBarMarginStart">@dimen/switchbar_margin_start</item>
         <item name="switchBarMarginEnd">@dimen/switchbar_margin_end</item>
+        <item name="switchBarBackgroundColor">@color/switchbar_background_color</item>
     </style>
 
     <style name="ThemeOverlay.SwitchBar.SubSettings" parent="@android:style/ThemeOverlay.Material.Dark.ActionBar">
         <item name="switchBarMarginStart">@dimen/switchbar_subsettings_margin_start</item>
         <item name="switchBarMarginEnd">@dimen/switchbar_subsettings_margin_end</item>
+        <item name="switchBarBackgroundColor">@color/switchbar_background_color</item>
     </style>
 
     <style name="Theme.DialogWhenLarge" parent="@*android:style/Theme.Material.Settings.DialogWhenLarge">
@@ -237,6 +243,7 @@
     <style name="ThemeOverlay.SwitchBar" parent="@android:style/ThemeOverlay">
         <!-- Used by controls, e.g. CheckBox, ProgressBar, etc. -->
         <item name="android:colorAccent">@color/switch_accent_color</item>
+        <item name="switchBarBackgroundColor">@color/switchbar_background_color</item>
     </style>
 
     <style name="Theme.ConfirmDeviceCredentials" parent="Theme.SubSettings">
diff --git a/res/xml/accessibility_settings_for_setup_wizard.xml b/res/xml/accessibility_settings_for_setup_wizard.xml
index 2317dc5..0e487b8 100644
--- a/res/xml/accessibility_settings_for_setup_wizard.xml
+++ b/res/xml/accessibility_settings_for_setup_wizard.xml
@@ -42,7 +42,7 @@
 
     <Preference
         android:key="talkback_preference"
-        android:summary="@string/talkback_summary"
+        android:title="@string/talkback_title"
         android:persistent="true" />
 
 </PreferenceScreen>
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index d2ce285..66d45de 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -52,6 +52,12 @@
 public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceFragment
         implements DialogCreatable {
 
+    /**
+     * The Help Uri Resource key. This can be passed as an extra argument when creating the
+     * Fragment.
+     **/
+    public static final String HELP_URI_RESOURCE_KEY = "help_uri_resource";
+
     private static final String TAG = "SettingsPreference";
 
     private static final int DELAY_HIGHLIGHT_DURATION_MILLIS = 600;
@@ -101,7 +107,13 @@
         }
 
         // Prepare help url and enable menu if necessary
-        int helpResource = getHelpResource();
+        Bundle arguments = getArguments();
+        int helpResource;
+        if (arguments != null && arguments.containsKey(HELP_URI_RESOURCE_KEY)) {
+            helpResource = arguments.getInt(HELP_URI_RESOURCE_KEY);
+        } else {
+            helpResource = getHelpResource();
+        }
         if (helpResource != 0) {
             mHelpUri = getResources().getString(helpResource);
         }
diff --git a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java
index eaab57d..22ea1f1 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java
@@ -46,8 +46,6 @@
     private static final String TALKBACK_PREFERENCE = "talkback_preference";
     private static final String FONT_SIZE_PREFERENCE = "font_size_preference";
 
-    private static final String TALKBACK_NAME = "Talkback";
-
     // Preference controls.
     private Preference mDisplayMagnificationPreference;
     private Preference mFontSizePreference;
@@ -59,20 +57,13 @@
     }
 
     @Override
-    protected int getHelpResource() {
-        return R.string.help_uri_accessibility;
-    }
-
-    @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
         addPreferencesFromResource(R.xml.accessibility_settings_for_setup_wizard);
 
         mDisplayMagnificationPreference = findPreference(DISPLAY_MAGNIFICATION_PREFERENCE);
         mFontSizePreference = findPreference(FONT_SIZE_PREFERENCE);
-
         mTalkbackPreference = findPreference(TALKBACK_PREFERENCE);
-        mTalkbackPreference.setTitle(TALKBACK_NAME);
     }
 
     @Override
@@ -136,37 +127,36 @@
             extras.putString(AccessibilitySettings.EXTRA_TITLE,
                     getString(R.string.accessibility_screen_magnification_title));
             extras.putCharSequence(AccessibilitySettings.EXTRA_SUMMARY,
-                    getActivity().getResources().getText(
-                    R.string.accessibility_screen_magnification_summary));
+                    getText(R.string.accessibility_screen_magnification_summary));
             extras.putBoolean(AccessibilitySettings.EXTRA_CHECKED,
                     Settings.Secure.getInt(getContentResolver(),
                     Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 0) == 1);
         } else if (mTalkbackPreference == preference) {
-            // Toggle Talkback. The tutorial will automatically start when Talkback is first
-            //  activated.
+            // Enable Talkback if disabled. The tutorial will automatically start when Talkback is
+            // first activated.
             final ContentResolver resolver = getContentResolver();
+            final int accessibilityEnabled =
+                    Settings.Secure.getInt(resolver, Settings.Secure.ACCESSIBILITY_ENABLED, 0);
+            if (accessibilityEnabled == 0) {
+                final String servicesToEnable = getAccessibilityServicesFiltered(
+                        getActivity(), AccessibilityServiceInfo.FEEDBACK_SPOKEN);
 
-            final boolean enable =
-                    Settings.Secure.getInt(resolver, Settings.Secure.ACCESSIBILITY_ENABLED, 0) == 0;
-            final String servicesToEnable = getAccessibilityServicesFiltered(
-                    getActivity(), AccessibilityServiceInfo.FEEDBACK_SPOKEN);
+                // Enable all accessibility services with spoken feedback type.
+                Settings.Secure.putString(resolver, Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
+                        servicesToEnable);
 
-            // Enable all accessibility services with spoken feedback type.
-            Settings.Secure.putString(resolver, Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
-                    enable ? servicesToEnable : "");
+                // Allow the services we just enabled to toggle touch exploration.
+                Settings.Secure.putString(resolver,
+                        Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES,
+                        servicesToEnable);
 
-            // Allow the services we just enabled to toggle touch exploration.
-            Settings.Secure.putString(resolver,
-                    Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES,
-                    enable ? servicesToEnable : "");
+                // Enable touch exploration.
+                Settings.Secure.putInt(resolver, Settings.Secure.TOUCH_EXPLORATION_ENABLED, 1);
 
-            // Enable touch exploration.
-            Settings.Secure.putInt(resolver, Settings.Secure.TOUCH_EXPLORATION_ENABLED,
-                    enable ? 1 : 0);
-
-            // Turn on accessibility mode last, since enabling accessibility with no
-            // services has no effect.
-            Settings.Secure.putInt(resolver, Settings.Secure.ACCESSIBILITY_ENABLED, enable ? 1 : 0);
+                // Turn on accessibility mode last, since enabling accessibility with no
+                // services has no effect.
+                Settings.Secure.putInt(resolver, Settings.Secure.ACCESSIBILITY_ENABLED, 1);
+            }
         }
 
         return super.onPreferenceTreeClick(preference);
@@ -176,6 +166,7 @@
         updateFeatureSummary(Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED,
                 mDisplayMagnificationPreference);
         updateFontSizeSummary(mFontSizePreference);
+        updateTalkbackSummary();
     }
 
     private void updateFeatureSummary(String prefKey, Preference pref) {
@@ -192,4 +183,13 @@
                 res.getConfiguration().fontScale, strEntryValues);
         pref.setSummary(entries[index]);
     }
+
+    private void updateTalkbackSummary() {
+        final boolean enabled = Settings.Secure.getInt(getContentResolver(),
+                Settings.Secure.ACCESSIBILITY_ENABLED, 0) == 1;
+        final String enabledText = (enabled
+                ? getString(R.string.accessibility_feature_state_on)
+                : getString(R.string.accessibility_feature_state_off));
+        mTalkbackPreference.setSummary(getString(R.string.talkback_summary, enabledText));
+    }
 }
diff --git a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
index 09961b7..bc31c3b 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
@@ -18,39 +18,41 @@
 
 import android.app.Fragment;
 import android.os.Bundle;
+import android.support.v4.widget.DrawerLayout;
 import android.view.Menu;
 import android.view.MenuItem;
 
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
+import com.android.settings.SettingsPreferenceFragment;
 
 public class AccessibilitySettingsForSetupWizardActivity extends SettingsActivity {
 
-      @Override
-      public boolean onCreateOptionsMenu(Menu menu) {
-          // Return true, so we get notified when items in the menu are clicked.
-          return true;
-      }
 
-      @Override
-      public boolean onOptionsItemSelected(MenuItem item) {
-          onBackPressed();
-          return true;
-      }
+    @Override
+    protected void onCreate(Bundle savedState) {
+        super.onCreate(savedState);
 
-      @Override
-      public void startPreferencePanel(String fragmentClass, Bundle args, int titleRes,
-              CharSequence titleText, Fragment resultTo, int resultRequestCode) {
-          startPreferenceFragment(Fragment.instantiate(this, fragmentClass, args), true);
-      }
+        getActionBar().setDisplayHomeAsUpEnabled(true);
+        setIsDrawerPresent(false);
+    }
 
-      @Override
-      public void openDrawer() {
-          // Do nothing.
-      }
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        // Return true, so we get notified when items in the menu are clicked.
+        return true;
+    }
 
-      @Override
-      public void closeDrawer() {
-          // Do nothing.
-      }
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        onBackPressed();
+        return true;
+    }
+
+    @Override
+    public void startPreferencePanel(String fragmentClass, Bundle args, int titleRes,
+            CharSequence titleText, Fragment resultTo, int resultRequestCode) {
+        args.putInt(SettingsPreferenceFragment.HELP_URI_RESOURCE_KEY, 0);
+        startPreferenceFragment(Fragment.instantiate(this, fragmentClass, args), true);
+    }
 }
diff --git a/src/com/android/settings/widget/SwitchBar.java b/src/com/android/settings/widget/SwitchBar.java
index b096cc4..bf093d4 100644
--- a/src/com/android/settings/widget/SwitchBar.java
+++ b/src/com/android/settings/widget/SwitchBar.java
@@ -67,8 +67,9 @@
     private ArrayList<OnSwitchChangeListener> mSwitchChangeListeners =
             new ArrayList<OnSwitchChangeListener>();
 
-    private static int[] MARGIN_ATTRIBUTES = {
-            R.attr.switchBarMarginStart, R.attr.switchBarMarginEnd};
+    private static int[] XML_ATTRIBUTES = {
+            R.attr.switchBarMarginStart, R.attr.switchBarMarginEnd,
+            R.attr.switchBarBackgroundColor};
 
     public SwitchBar(Context context) {
         this(context, null);
@@ -87,9 +88,10 @@
 
         LayoutInflater.from(context).inflate(R.layout.switch_bar, this);
 
-        final TypedArray a = context.obtainStyledAttributes(attrs, MARGIN_ATTRIBUTES);
+        final TypedArray a = context.obtainStyledAttributes(attrs, XML_ATTRIBUTES);
         int switchBarMarginStart = (int) a.getDimension(0, 0);
         int switchBarMarginEnd = (int) a.getDimension(1, 0);
+        int switchBarBackgroundColor = (int) a.getColor(2, 0);
         a.recycle();
 
         mTextView = (TextView) findViewById(R.id.switch_text);
@@ -107,6 +109,8 @@
         mSwitch.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO);
         lp = (MarginLayoutParams) mSwitch.getLayoutParams();
         lp.setMarginEnd(switchBarMarginEnd);
+        setBackgroundColor(switchBarBackgroundColor);
+        mSwitch.setBackgroundColor(switchBarBackgroundColor);
 
         addOnSwitchChangeListener(new OnSwitchChangeListener() {
             @Override