Add content descriptions to power control widget.
Bug: 6361285 Change-Id: I4fd7ed519de9a5b7e50e6905550695fad02bcc42
This commit is contained in:
@@ -3345,6 +3345,34 @@
|
|||||||
<string name="gadget_title">Power control</string>
|
<string name="gadget_title">Power control</string>
|
||||||
<string name="gadget_toggle_wifi">Updating Wi-Fi setting</string>
|
<string name="gadget_toggle_wifi">Updating Wi-Fi setting</string>
|
||||||
<string name="gadget_toggle_bluetooth">Updating Bluetooth 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 -->
|
<!-- Title of preference to enter the VPN settings activity -->
|
||||||
<string name="vpn_settings_title">VPN</string>
|
<string name="vpn_settings_title">VPN</string>
|
||||||
|
@@ -160,6 +160,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.
|
* Return the ID of the main large image button for the setting.
|
||||||
*/
|
*/
|
||||||
@@ -170,6 +175,11 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
|
|||||||
*/
|
*/
|
||||||
public abstract int getIndicatorId();
|
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
|
* Returns the resource ID of the image to show as a function of
|
||||||
* the on-vs-off state.
|
* the on-vs-off state.
|
||||||
@@ -186,16 +196,21 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
|
|||||||
* turning off, turning on) of the setting.
|
* turning off, turning on) of the setting.
|
||||||
*/
|
*/
|
||||||
public final void setImageViewResources(Context context, RemoteViews views) {
|
public final void setImageViewResources(Context context, RemoteViews views) {
|
||||||
|
int containerId = getContainerId();
|
||||||
int buttonId = getButtonId();
|
int buttonId = getButtonId();
|
||||||
int indicatorId = getIndicatorId();
|
int indicatorId = getIndicatorId();
|
||||||
int pos = getPosition();
|
int pos = getPosition();
|
||||||
switch (getTriState(context)) {
|
switch (getTriState(context)) {
|
||||||
case STATE_DISABLED:
|
case STATE_DISABLED:
|
||||||
|
views.setContentDescription(containerId,
|
||||||
|
getContentDescription(context, R.string.gadget_state_off));
|
||||||
views.setImageViewResource(buttonId, getButtonImageId(false));
|
views.setImageViewResource(buttonId, getButtonImageId(false));
|
||||||
views.setImageViewResource(
|
views.setImageViewResource(
|
||||||
indicatorId, IND_DRAWABLE_OFF[pos]);
|
indicatorId, IND_DRAWABLE_OFF[pos]);
|
||||||
break;
|
break;
|
||||||
case STATE_ENABLED:
|
case STATE_ENABLED:
|
||||||
|
views.setContentDescription(containerId,
|
||||||
|
getContentDescription(context, R.string.gadget_state_on));
|
||||||
views.setImageViewResource(buttonId, getButtonImageId(true));
|
views.setImageViewResource(buttonId, getButtonImageId(true));
|
||||||
views.setImageViewResource(
|
views.setImageViewResource(
|
||||||
indicatorId, IND_DRAWABLE_ON[pos]);
|
indicatorId, IND_DRAWABLE_ON[pos]);
|
||||||
@@ -207,10 +222,14 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
|
|||||||
// user's intent. This is much easier to see in
|
// user's intent. This is much easier to see in
|
||||||
// sunlight.
|
// sunlight.
|
||||||
if (isTurningOn()) {
|
if (isTurningOn()) {
|
||||||
|
views.setContentDescription(containerId,
|
||||||
|
getContentDescription(context, R.string.gadget_state_turning_on));
|
||||||
views.setImageViewResource(buttonId, getButtonImageId(true));
|
views.setImageViewResource(buttonId, getButtonImageId(true));
|
||||||
views.setImageViewResource(
|
views.setImageViewResource(
|
||||||
indicatorId, IND_DRAWABLE_MID[pos]);
|
indicatorId, IND_DRAWABLE_MID[pos]);
|
||||||
} else {
|
} else {
|
||||||
|
views.setContentDescription(containerId,
|
||||||
|
getContentDescription(context, R.string.gadget_state_turning_off));
|
||||||
views.setImageViewResource(buttonId, getButtonImageId(false));
|
views.setImageViewResource(buttonId, getButtonImageId(false));
|
||||||
views.setImageViewResource(
|
views.setImageViewResource(
|
||||||
indicatorId, IND_DRAWABLE_OFF[pos]);
|
indicatorId, IND_DRAWABLE_OFF[pos]);
|
||||||
@@ -219,6 +238,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.
|
* Update internal state from a broadcast state change.
|
||||||
*/
|
*/
|
||||||
@@ -322,8 +351,10 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
|
|||||||
* Subclass of StateTracker to get/set Wifi state.
|
* Subclass of StateTracker to get/set Wifi state.
|
||||||
*/
|
*/
|
||||||
private static final class WifiStateTracker extends StateTracker {
|
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 getButtonId() { return R.id.img_wifi; }
|
||||||
public int getIndicatorId() { return R.id.ind_wifi; }
|
public int getIndicatorId() { return R.id.ind_wifi; }
|
||||||
|
public int getButtonDescription() { return R.string.gadget_wifi; }
|
||||||
public int getButtonImageId(boolean on) {
|
public int getButtonImageId(boolean on) {
|
||||||
return on ? R.drawable.ic_appwidget_settings_wifi_on_holo
|
return on ? R.drawable.ic_appwidget_settings_wifi_on_holo
|
||||||
: R.drawable.ic_appwidget_settings_wifi_off_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.
|
* Subclass of StateTracker to get/set Bluetooth state.
|
||||||
*/
|
*/
|
||||||
private static final class BluetoothStateTracker extends StateTracker {
|
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 getButtonId() { return R.id.img_bluetooth; }
|
||||||
public int getIndicatorId() { return R.id.ind_bluetooth; }
|
public int getIndicatorId() { return R.id.ind_bluetooth; }
|
||||||
|
public int getButtonDescription() { return R.string.gadget_bluetooth; }
|
||||||
public int getButtonImageId(boolean on) {
|
public int getButtonImageId(boolean on) {
|
||||||
return on ? R.drawable.ic_appwidget_settings_bluetooth_on_holo
|
return on ? R.drawable.ic_appwidget_settings_bluetooth_on_holo
|
||||||
: R.drawable.ic_appwidget_settings_bluetooth_off_holo;
|
: R.drawable.ic_appwidget_settings_bluetooth_off_holo;
|
||||||
@@ -476,8 +509,10 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
|
|||||||
* Subclass of StateTracker for GPS state.
|
* Subclass of StateTracker for GPS state.
|
||||||
*/
|
*/
|
||||||
private static final class GpsStateTracker extends StateTracker {
|
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 getButtonId() { return R.id.img_gps; }
|
||||||
public int getIndicatorId() { return R.id.ind_gps; }
|
public int getIndicatorId() { return R.id.ind_gps; }
|
||||||
|
public int getButtonDescription() { return R.string.gadget_gps; }
|
||||||
public int getButtonImageId(boolean on) {
|
public int getButtonImageId(boolean on) {
|
||||||
return on ? R.drawable.ic_appwidget_settings_gps_on_holo
|
return on ? R.drawable.ic_appwidget_settings_gps_on_holo
|
||||||
: R.drawable.ic_appwidget_settings_gps_off_holo;
|
: R.drawable.ic_appwidget_settings_gps_off_holo;
|
||||||
@@ -526,8 +561,10 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
|
|||||||
* Subclass of StateTracker for sync state.
|
* Subclass of StateTracker for sync state.
|
||||||
*/
|
*/
|
||||||
private static final class SyncStateTracker extends StateTracker {
|
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 getButtonId() { return R.id.img_sync; }
|
||||||
public int getIndicatorId() { return R.id.ind_sync; }
|
public int getIndicatorId() { return R.id.ind_sync; }
|
||||||
|
public int getButtonDescription() { return R.string.gadget_sync; }
|
||||||
public int getButtonImageId(boolean on) {
|
public int getButtonImageId(boolean on) {
|
||||||
return on ? R.drawable.ic_appwidget_settings_sync_on_holo
|
return on ? R.drawable.ic_appwidget_settings_sync_on_holo
|
||||||
: R.drawable.ic_appwidget_settings_sync_off_holo;
|
: R.drawable.ic_appwidget_settings_sync_off_holo;
|
||||||
@@ -673,6 +710,9 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
|
|||||||
sSyncState.setImageViewResources(context, views);
|
sSyncState.setImageViewResources(context, views);
|
||||||
|
|
||||||
if (getBrightnessMode(context)) {
|
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,
|
views.setImageViewResource(R.id.img_brightness,
|
||||||
R.drawable.ic_appwidget_settings_brightness_auto_holo);
|
R.drawable.ic_appwidget_settings_brightness_auto_holo);
|
||||||
views.setImageViewResource(R.id.ind_brightness,
|
views.setImageViewResource(R.id.ind_brightness,
|
||||||
@@ -686,12 +726,21 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
|
|||||||
final int half = (int)(pm.getMaximumScreenBrightnessSetting()
|
final int half = (int)(pm.getMaximumScreenBrightnessSetting()
|
||||||
* HALF_BRIGHTNESS_THRESHOLD);
|
* HALF_BRIGHTNESS_THRESHOLD);
|
||||||
if (brightness > full) {
|
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,
|
views.setImageViewResource(R.id.img_brightness,
|
||||||
R.drawable.ic_appwidget_settings_brightness_full_holo);
|
R.drawable.ic_appwidget_settings_brightness_full_holo);
|
||||||
} else if (brightness > half) {
|
} 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,
|
views.setImageViewResource(R.id.img_brightness,
|
||||||
R.drawable.ic_appwidget_settings_brightness_half_holo);
|
R.drawable.ic_appwidget_settings_brightness_half_holo);
|
||||||
} else {
|
} 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,
|
views.setImageViewResource(R.id.img_brightness,
|
||||||
R.drawable.ic_appwidget_settings_brightness_off_holo);
|
R.drawable.ic_appwidget_settings_brightness_off_holo);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user