OSDN Git Service

UI fixes (back arrow, blue switch bar, append whether Talkback is on to
authorAnna Galusza <agalusza@google.com>
Sat, 30 Jan 2016 01:32:19 +0000 (17:32 -0800)
committerAnna Galusza <agalusza@google.com>
Tue, 2 Feb 2016 22:48:28 +0000 (14:48 -0800)
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

res/values/attrs.xml
res/values/strings.xml
res/values/themes.xml
res/xml/accessibility_settings_for_setup_wizard.xml
src/com/android/settings/SettingsPreferenceFragment.java
src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java
src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
src/com/android/settings/widget/SwitchBar.java

index b048b71..d94ff13 100644 (file)
     <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" />
 
index bc2076a..8623e85 100644 (file)
     <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] -->
     <!-- 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] -->
index da74348..1cae46c 100644 (file)
         <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
     <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">
     <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">
index 2317dc5..0e487b8 100644 (file)
@@ -42,7 +42,7 @@
 
     <Preference
         android:key="talkback_preference"
-        android:summary="@string/talkback_summary"
+        android:title="@string/talkback_title"
         android:persistent="true" />
 
 </PreferenceScreen>
index d2ce285..66d45de 100644 (file)
@@ -52,6 +52,12 @@ import java.util.UUID;
 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 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF
         }
 
         // 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);
         }
index eaab57d..22ea1f1 100644 (file)
@@ -46,8 +46,6 @@ public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragm
     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 @@ public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragm
     }
 
     @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 @@ public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragm
             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 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,
-                    enable ? 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,
-                    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);
+            final int accessibilityEnabled =
+                    Settings.Secure.getInt(resolver, Settings.Secure.ACCESSIBILITY_ENABLED, 0);
+            if (accessibilityEnabled == 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);
+
+                // Allow the services we just enabled to toggle touch exploration.
+                Settings.Secure.putString(resolver,
+                        Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES,
+                        servicesToEnable);
+
+                // Enable touch exploration.
+                Settings.Secure.putInt(resolver, Settings.Secure.TOUCH_EXPLORATION_ENABLED, 1);
+
+                // 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 @@ public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragm
         updateFeatureSummary(Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED,
                 mDisplayMagnificationPreference);
         updateFontSizeSummary(mFontSizePreference);
+        updateTalkbackSummary();
     }
 
     private void updateFeatureSummary(String prefKey, Preference pref) {
@@ -192,4 +183,13 @@ public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragm
                 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));
+    }
 }
index 09961b7..bc31c3b 100644 (file)
@@ -18,39 +18,41 @@ package com.android.settings.accessibility;
 
 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
-      public void startPreferencePanel(String fragmentClass, Bundle args, int titleRes,
-              CharSequence titleText, Fragment resultTo, int resultRequestCode) {
-          startPreferenceFragment(Fragment.instantiate(this, fragmentClass, args), true);
-      }
-
-      @Override
-      public void openDrawer() {
-          // Do nothing.
-      }
-
-      @Override
-      public void closeDrawer() {
-          // Do nothing.
-      }
+
+    @Override
+    protected void onCreate(Bundle savedState) {
+        super.onCreate(savedState);
+
+        getActionBar().setDisplayHomeAsUpEnabled(true);
+        setIsDrawerPresent(false);
+    }
+
+    @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
+    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);
+    }
 }
index b096cc4..bf093d4 100644 (file)
@@ -67,8 +67,9 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC
     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 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC
 
         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 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC
         mSwitch.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO);
         lp = (MarginLayoutParams) mSwitch.getLayoutParams();
         lp.setMarginEnd(switchBarMarginEnd);
+        setBackgroundColor(switchBarBackgroundColor);
+        mSwitch.setBackgroundColor(switchBarBackgroundColor);
 
         addOnSwitchChangeListener(new OnSwitchChangeListener() {
             @Override