diff options
author | Charles Chen <clchen@google.com> | 2012-09-05 17:13:24 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-09-05 17:13:24 -0700 |
commit | ee04e47216ca947dfc781d1b4116f252dd2aa5a4 (patch) | |
tree | c0c1005663c89a6cd9c6b66b040b6098b9d78732 | |
parent | 1537e8b3e8d81bf404f6aa70c8ca514f3ff62dd5 (diff) | |
parent | b9062f26785e53cfc44180e0044c8025ad33af2a (diff) | |
download | packages_apps_settings-ee04e47216ca947dfc781d1b4116f252dd2aa5a4.zip packages_apps_settings-ee04e47216ca947dfc781d1b4116f252dd2aa5a4.tar.gz packages_apps_settings-ee04e47216ca947dfc781d1b4116f252dd2aa5a4.tar.bz2 |
Merge "Add content descriptions to power control widget." into jb-mr1-dev
-rw-r--r-- | res/values/strings.xml | 28 | ||||
-rw-r--r-- | src/com/android/settings/widget/SettingsAppWidgetProvider.java | 49 |
2 files changed, 77 insertions, 0 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index 2711582..2f209e7 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -3339,6 +3339,34 @@ <string name="gadget_title">Power control</string> <string name="gadget_toggle_wifi">Updating Wi-Fi setting</string> <string name="gadget_toggle_bluetooth">Updating Bluetooth setting</string> + <!-- Template for gadget toggle button description. Populated examples are "Wi-Fi off" or "Wi-Fi turning on". --> + <string name="gadget_state_template"><xliff:g name="feature" example="Wi-Fi">%1$s</xliff:g> <xliff:g name="state" example="off">%2$s</xliff:g></string> + <!-- Gadget value used to describe on state. --> + <string name="gadget_state_on">on</string> + <!-- Gadget value used to describe off state. --> + <string name="gadget_state_off">off</string> + <!-- Gadget value used to describe turning on state. --> + <string name="gadget_state_turning_on">turning on</string> + <!-- Gadget value used to describe turning off state. --> + <string name="gadget_state_turning_off">turning off</string> + <!-- Spoken description for the Wi-Fi power control gadget. --> + <string name="gadget_wifi">Wi-Fi</string> + <!-- Spoken description for the Bluetooth power control gadget. --> + <string name="gadget_bluetooth">Bluetooth</string> + <!-- Spoken description for the GPS power control gadget. --> + <string name="gadget_gps">GPS</string> + <!-- Spoken description for the data synchronization gadget. --> + <string name="gadget_sync">Sync</string> + <!-- Template for brightness gadget toggle button description. --> + <string name="gadget_brightness_template">Brightness <xliff:g name="state" example="half">%1$s</xliff:g></string> + <!-- Brightness gadget value used to describe automatic brightness state. --> + <string name="gadget_brightness_state_auto">auto</string> + <!-- Brightness gadget value used to describe maximum brightness state. --> + <string name="gadget_brightness_state_full">full</string> + <!-- Brightness gadget value used to describe half brightness state. --> + <string name="gadget_brightness_state_half">half</string> + <!-- Brightness gadget value used to describe minimum brightness state. --> + <string name="gadget_brightness_state_off">off</string> <!-- Title of preference to enter the VPN settings activity --> <string name="vpn_settings_title">VPN</string> diff --git a/src/com/android/settings/widget/SettingsAppWidgetProvider.java b/src/com/android/settings/widget/SettingsAppWidgetProvider.java index 3fe5b39..30ae7c3 100644 --- a/src/com/android/settings/widget/SettingsAppWidgetProvider.java +++ b/src/com/android/settings/widget/SettingsAppWidgetProvider.java @@ -161,6 +161,11 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider { } /** + * Return the ID of the clickable container for the setting. + */ + public abstract int getContainerId(); + + /** * Return the ID of the main large image button for the setting. */ public abstract int getButtonId(); @@ -171,6 +176,11 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider { public abstract int getIndicatorId(); /** + * Returns the resource ID of the setting's content description. + */ + public abstract int getButtonDescription(); + + /** * Returns the resource ID of the image to show as a function of * the on-vs-off state. */ @@ -186,16 +196,21 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider { * turning off, turning on) of the setting. */ public final void setImageViewResources(Context context, RemoteViews views) { + int containerId = getContainerId(); int buttonId = getButtonId(); int indicatorId = getIndicatorId(); int pos = getPosition(); switch (getTriState(context)) { case STATE_DISABLED: + views.setContentDescription(containerId, + getContentDescription(context, R.string.gadget_state_off)); views.setImageViewResource(buttonId, getButtonImageId(false)); views.setImageViewResource( indicatorId, IND_DRAWABLE_OFF[pos]); break; case STATE_ENABLED: + views.setContentDescription(containerId, + getContentDescription(context, R.string.gadget_state_on)); views.setImageViewResource(buttonId, getButtonImageId(true)); views.setImageViewResource( indicatorId, IND_DRAWABLE_ON[pos]); @@ -207,10 +222,14 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider { // user's intent. This is much easier to see in // sunlight. if (isTurningOn()) { + views.setContentDescription(containerId, + getContentDescription(context, R.string.gadget_state_turning_on)); views.setImageViewResource(buttonId, getButtonImageId(true)); views.setImageViewResource( indicatorId, IND_DRAWABLE_MID[pos]); } else { + views.setContentDescription(containerId, + getContentDescription(context, R.string.gadget_state_turning_off)); views.setImageViewResource(buttonId, getButtonImageId(false)); views.setImageViewResource( indicatorId, IND_DRAWABLE_OFF[pos]); @@ -220,6 +239,16 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider { } /** + * Returns the gadget state template populated with the gadget + * description and state. + */ + private final String getContentDescription(Context context, int stateResId) { + final String gadget = context.getString(getButtonDescription()); + final String state = context.getString(stateResId); + return context.getString(R.string.gadget_state_template, gadget, state); + } + + /** * Update internal state from a broadcast state change. */ public abstract void onActualStateChange(Context context, Intent intent); @@ -322,8 +351,10 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider { * Subclass of StateTracker to get/set Wifi state. */ private static final class WifiStateTracker extends StateTracker { + public int getContainerId() { return R.id.btn_wifi; } public int getButtonId() { return R.id.img_wifi; } public int getIndicatorId() { return R.id.ind_wifi; } + public int getButtonDescription() { return R.string.gadget_wifi; } public int getButtonImageId(boolean on) { return on ? R.drawable.ic_appwidget_settings_wifi_on_holo : R.drawable.ic_appwidget_settings_wifi_off_holo; @@ -405,8 +436,10 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider { * Subclass of StateTracker to get/set Bluetooth state. */ private static final class BluetoothStateTracker extends StateTracker { + public int getContainerId() { return R.id.btn_bluetooth; } public int getButtonId() { return R.id.img_bluetooth; } public int getIndicatorId() { return R.id.ind_bluetooth; } + public int getButtonDescription() { return R.string.gadget_bluetooth; } public int getButtonImageId(boolean on) { return on ? R.drawable.ic_appwidget_settings_bluetooth_on_holo : R.drawable.ic_appwidget_settings_bluetooth_off_holo; @@ -476,8 +509,10 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider { * Subclass of StateTracker for GPS state. */ private static final class GpsStateTracker extends StateTracker { + public int getContainerId() { return R.id.btn_gps; } public int getButtonId() { return R.id.img_gps; } public int getIndicatorId() { return R.id.ind_gps; } + public int getButtonDescription() { return R.string.gadget_gps; } public int getButtonImageId(boolean on) { return on ? R.drawable.ic_appwidget_settings_gps_on_holo : R.drawable.ic_appwidget_settings_gps_off_holo; @@ -526,8 +561,10 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider { * Subclass of StateTracker for sync state. */ private static final class SyncStateTracker extends StateTracker { + public int getContainerId() { return R.id.btn_sync; } public int getButtonId() { return R.id.img_sync; } public int getIndicatorId() { return R.id.ind_sync; } + public int getButtonDescription() { return R.string.gadget_sync; } public int getButtonImageId(boolean on) { return on ? R.drawable.ic_appwidget_settings_sync_on_holo : R.drawable.ic_appwidget_settings_sync_off_holo; @@ -673,6 +710,9 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider { sSyncState.setImageViewResources(context, views); if (getBrightnessMode(context)) { + views.setContentDescription(R.id.btn_brightness, + context.getString(R.string.gadget_brightness_template, + context.getString(R.string.gadget_brightness_state_auto))); views.setImageViewResource(R.id.img_brightness, R.drawable.ic_appwidget_settings_brightness_auto_holo); views.setImageViewResource(R.id.ind_brightness, @@ -686,12 +726,21 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider { final int half = (int)(pm.getMaximumScreenBrightnessSetting() * HALF_BRIGHTNESS_THRESHOLD); if (brightness > full) { + views.setContentDescription(R.id.btn_brightness, + context.getString(R.string.gadget_brightness_template, + context.getString(R.string.gadget_brightness_state_full))); views.setImageViewResource(R.id.img_brightness, R.drawable.ic_appwidget_settings_brightness_full_holo); } else if (brightness > half) { + views.setContentDescription(R.id.btn_brightness, + context.getString(R.string.gadget_brightness_template, + context.getString(R.string.gadget_brightness_state_half))); views.setImageViewResource(R.id.img_brightness, R.drawable.ic_appwidget_settings_brightness_half_holo); } else { + views.setContentDescription(R.id.btn_brightness, + context.getString(R.string.gadget_brightness_template, + context.getString(R.string.gadget_brightness_state_off))); views.setImageViewResource(R.id.img_brightness, R.drawable.ic_appwidget_settings_brightness_off_holo); } |