Partially revert "modify quick settings to adopt the accessibility state api"

This reverts commit 4a72a74b2a except for
the api part.

Fix: b/148501707

Test: not needed
Change-Id: I3cf75589ca0abd2aa58a4291a0261b5ce42d066a
This commit is contained in:
yingleiw
2020-01-29 17:50:36 -08:00
committed by Zhen Zhang
parent e1eecc1d37
commit 7a64815b74
13 changed files with 53 additions and 63 deletions

View File

@@ -133,7 +133,6 @@ public interface QSTile {
public CharSequence label;
public CharSequence secondaryLabel;
public CharSequence contentDescription;
public CharSequence stateDescription;
public CharSequence dualLabelContentDescription;
public boolean disabledByPolicy;
public boolean dualTarget = false;
@@ -152,7 +151,6 @@ public interface QSTile {
|| !Objects.equals(other.label, label)
|| !Objects.equals(other.secondaryLabel, secondaryLabel)
|| !Objects.equals(other.contentDescription, contentDescription)
|| !Objects.equals(other.stateDescription, stateDescription)
|| !Objects.equals(other.dualLabelContentDescription,
dualLabelContentDescription)
|| !Objects.equals(other.expandedAccessibilityClassName,
@@ -170,7 +168,6 @@ public interface QSTile {
other.label = label;
other.secondaryLabel = secondaryLabel;
other.contentDescription = contentDescription;
other.stateDescription = stateDescription;
other.dualLabelContentDescription = dualLabelContentDescription;
other.expandedAccessibilityClassName = expandedAccessibilityClassName;
other.disabledByPolicy = disabledByPolicy;
@@ -198,7 +195,6 @@ public interface QSTile {
sb.append(",label=").append(label);
sb.append(",secondaryLabel=").append(secondaryLabel);
sb.append(",contentDescription=").append(contentDescription);
sb.append(",stateDescription=").append(stateDescription);
sb.append(",dualLabelContentDescription=").append(dualLabelContentDescription);
sb.append(",expandedAccessibilityClassName=").append(expandedAccessibilityClassName);
sb.append(",disabledByPolicy=").append(disabledByPolicy);

View File

@@ -2549,7 +2549,4 @@
<!-- Quick Controls strings [CHAR LIMIT=30] -->
<string name="quick_controls_title">Quick Controls</string>
<!-- The tile in quick settings is unavailable. [CHAR LIMIT=32] -->
<string name="tile_unavailable">Unvailable</string>
</resources>

View File

@@ -191,7 +191,6 @@ public class CustomTile extends QSTileImpl<State> implements TileChangeListener
mTile.setLabel(tile.getLabel());
mTile.setSubtitle(tile.getSubtitle());
mTile.setContentDescription(tile.getContentDescription());
mTile.setStateDescription(tile.getStateDescription());
mTile.setState(tile.getState());
}
@@ -346,12 +345,6 @@ public class CustomTile extends QSTileImpl<State> implements TileChangeListener
state.contentDescription = state.label;
}
if (mTile.getStateDescription() != null) {
state.stateDescription = mTile.getStateDescription();
} else {
state.stateDescription = null;
}
if (state instanceof BooleanState) {
state.expandedAccessibilityClassName = Switch.class.getName();
((BooleanState) state).value = (state.state == Tile.STATE_ACTIVE);

View File

@@ -65,6 +65,7 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView {
private String mAccessibilityClass;
private boolean mTileState;
private boolean mCollapsedView;
private boolean mClicked;
private boolean mShowRippleEffect = true;
private final ImageView mBg;
@@ -233,35 +234,13 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView {
setLongClickable(state.handlesLongClick);
mIcon.setIcon(state, allowAnimations);
setContentDescription(state.contentDescription);
final StringBuilder stateDescription = new StringBuilder();
switch (state.state) {
case Tile.STATE_UNAVAILABLE:
stateDescription.append(mContext.getString(R.string.tile_unavailable));
break;
case Tile.STATE_INACTIVE:
if (state instanceof QSTile.BooleanState) {
stateDescription.append(mContext.getString(R.string.switch_bar_off));
}
break;
case Tile.STATE_ACTIVE:
if (state instanceof QSTile.BooleanState) {
stateDescription.append(mContext.getString(R.string.switch_bar_on));
}
break;
default:
break;
}
if (!TextUtils.isEmpty(state.stateDescription)) {
stateDescription.append(", ");
stateDescription.append(state.stateDescription);
}
setStateDescription(stateDescription.toString());
mAccessibilityClass =
state.state == Tile.STATE_UNAVAILABLE ? null : state.expandedAccessibilityClassName;
if (state instanceof QSTile.BooleanState) {
boolean newState = ((BooleanState) state).value;
if (mTileState != newState) {
mClicked = false;
mTileState = newState;
}
}
@@ -317,11 +296,24 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView {
return mIconFrame;
}
@Override
public boolean performClick() {
mClicked = true;
return super.performClick();
}
@Override
public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
super.onInitializeAccessibilityEvent(event);
if (!TextUtils.isEmpty(mAccessibilityClass)) {
event.setClassName(mAccessibilityClass);
if (Switch.class.getName().equals(mAccessibilityClass)) {
boolean b = mClicked ? !mTileState : mTileState;
String label = getResources()
.getString(b ? R.string.switch_bar_on : R.string.switch_bar_off);
event.setContentDescription(label);
event.setChecked(b);
}
}
}
@@ -333,6 +325,11 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView {
if (!TextUtils.isEmpty(mAccessibilityClass)) {
info.setClassName(mAccessibilityClass);
if (Switch.class.getName().equals(mAccessibilityClass)) {
boolean b = mClicked ? !mTileState : mTileState;
String label = getResources()
.getString(b ? R.string.switch_bar_on : R.string.switch_bar_off);
info.setText(label);
info.setChecked(b);
info.setCheckable(true);
if (isLongClickable()) {
info.addAction(

View File

@@ -134,27 +134,25 @@ public class BluetoothTile extends QSTileImpl<BooleanState> {
state.label = mContext.getString(R.string.quick_settings_bluetooth_label);
state.secondaryLabel = TextUtils.emptyIfNull(
getSecondaryLabel(enabled, connecting, connected, state.isTransient));
state.contentDescription = state.label;
state.stateDescription = "";
if (enabled) {
if (connected) {
state.icon = new BluetoothConnectedTileIcon();
if (!TextUtils.isEmpty(mController.getConnectedDeviceName())) {
state.label = mController.getConnectedDeviceName();
}
state.stateDescription =
state.contentDescription =
mContext.getString(R.string.accessibility_bluetooth_name, state.label)
+ ", " + state.secondaryLabel;
} else if (state.isTransient) {
state.icon = ResourceIcon.get(
com.android.internal.R.drawable.ic_bluetooth_transient_animation);
state.stateDescription = state.secondaryLabel;
state.contentDescription = state.secondaryLabel;
} else {
state.icon =
ResourceIcon.get(com.android.internal.R.drawable.ic_qs_bluetooth);
state.contentDescription = mContext.getString(
R.string.accessibility_quick_settings_bluetooth);
state.stateDescription = mContext.getString(R.string.accessibility_not_connected);
R.string.accessibility_quick_settings_bluetooth) + ","
+ mContext.getString(R.string.accessibility_not_connected);
}
state.state = Tile.STATE_ACTIVE;
} else {

View File

@@ -183,7 +183,6 @@ public class CastTile extends QSTileImpl<BooleanState> {
protected void handleUpdateState(BooleanState state, Object arg) {
state.label = mContext.getString(R.string.quick_settings_cast_title);
state.contentDescription = state.label;
state.stateDescription = "";
state.value = false;
final List<CastDevice> devices = mController.getCastDevices();
boolean connecting = false;
@@ -193,9 +192,8 @@ public class CastTile extends QSTileImpl<BooleanState> {
if (device.state == CastDevice.STATE_CONNECTED) {
state.value = true;
state.secondaryLabel = getDeviceName(device);
state.stateDescription = state.stateDescription + ","
+ mContext.getString(
R.string.accessibility_cast_name, state.label);
state.contentDescription = state.contentDescription + ","
+ mContext.getString(R.string.accessibility_cast_name, state.label);
connecting = false;
break;
} else if (device.state == CastDevice.STATE_CONNECTING) {
@@ -219,8 +217,9 @@ public class CastTile extends QSTileImpl<BooleanState> {
state.state = Tile.STATE_UNAVAILABLE;
String noWifi = mContext.getString(R.string.quick_settings_cast_no_wifi);
state.secondaryLabel = noWifi;
state.contentDescription = state.contentDescription + ", " + mContext.getString(
R.string.accessibility_quick_settings_not_available, noWifi);
}
state.stateDescription = state.stateDescription + ", " + state.secondaryLabel;
mDetailAdapter.updateItems(devices);
}

View File

@@ -194,13 +194,17 @@ public class CellularTile extends QSTileImpl<SignalState> {
state.secondaryLabel = r.getString(R.string.cell_data_off);
}
state.contentDescription = state.label;
// TODO(b/77881974): Instead of switching out the description via a string check for
// we need to have two strings provided by the MobileIconGroup.
final CharSequence contentDescriptionSuffix;
if (state.state == Tile.STATE_INACTIVE) {
// This information is appended later by converting the Tile.STATE_INACTIVE state.
state.stateDescription = "";
contentDescriptionSuffix = r.getString(R.string.cell_data_off_content_description);
} else {
state.stateDescription = state.secondaryLabel;
contentDescriptionSuffix = state.secondaryLabel;
}
state.contentDescription = state.label + ", " + contentDescriptionSuffix;
}
private CharSequence appendMobileDataType(CharSequence current, CharSequence dataType) {

View File

@@ -240,8 +240,6 @@ public class DndTile extends QSTileImpl<BooleanState> {
zen != Global.ZEN_MODE_OFF, mController.getConfig(), false));
state.icon = ResourceIcon.get(com.android.internal.R.drawable.ic_qs_dnd);
checkIfRestrictionEnforcedByAdminOnly(state, UserManager.DISALLOW_ADJUST_VOLUME);
// Keeping the secondaryLabel in contentDescription instead of stateDescription is easier
// to understand.
switch (zen) {
case Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS:
state.contentDescription =

View File

@@ -102,13 +102,14 @@ public class FlashlightTile extends QSTileImpl<BooleanState> implements
}
state.label = mHost.getContext().getString(R.string.quick_settings_flashlight_label);
state.secondaryLabel = "";
state.stateDescription = "";
if (!mFlashlightController.isAvailable()) {
state.icon = mIcon;
state.slash.isSlashed = true;
state.secondaryLabel = mContext.getString(
R.string.quick_settings_flashlight_camera_in_use);
state.stateDescription = state.secondaryLabel;
state.contentDescription = mContext.getString(
R.string.accessibility_quick_settings_flashlight_unavailable)
+ ", " + state.secondaryLabel;
state.state = Tile.STATE_UNAVAILABLE;
return;
}

View File

@@ -147,7 +147,6 @@ public class HotspotTile extends QSTileImpl<BooleanState> {
state.secondaryLabel = getSecondaryLabel(
isTileActive, isTransient, isDataSaverEnabled, numConnectedDevices);
state.stateDescription = state.secondaryLabel;
}
@Nullable

View File

@@ -105,8 +105,15 @@ public class LocationTile extends QSTileImpl<BooleanState> {
}
state.icon = mIcon;
state.slash.isSlashed = !state.value;
state.label = mContext.getString(R.string.quick_settings_location_label);
state.contentDescription = state.label;
if (locationEnabled) {
state.label = mContext.getString(R.string.quick_settings_location_label);
state.contentDescription = mContext.getString(
R.string.accessibility_quick_settings_location_on);
} else {
state.label = mContext.getString(R.string.quick_settings_location_label);
state.contentDescription = mContext.getString(
R.string.accessibility_quick_settings_location_off);
}
state.state = state.value ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE;
state.expandedAccessibilityClassName = Switch.class.getName();
}

View File

@@ -195,7 +195,6 @@ public class WifiTile extends QSTileImpl<SignalState> {
state.activityIn = cb.enabled && cb.activityIn;
state.activityOut = cb.enabled && cb.activityOut;
final StringBuffer minimalContentDescription = new StringBuffer();
final StringBuffer minimalStateDescription = new StringBuffer();
final Resources r = mContext.getResources();
if (isTransient) {
state.icon = ResourceIcon.get(
@@ -220,14 +219,13 @@ public class WifiTile extends QSTileImpl<SignalState> {
mContext.getString(R.string.quick_settings_wifi_label)).append(",");
if (state.value) {
if (wifiConnected) {
minimalStateDescription.append(cb.wifiSignalContentDescription);
minimalContentDescription.append(cb.wifiSignalContentDescription).append(",");
minimalContentDescription.append(removeDoubleQuotes(cb.ssid));
if (!TextUtils.isEmpty(state.secondaryLabel)) {
minimalContentDescription.append(",").append(state.secondaryLabel);
}
}
}
state.stateDescription = minimalStateDescription.toString();
state.contentDescription = minimalContentDescription.toString();
state.dualLabelContentDescription = r.getString(
R.string.accessibility_quick_settings_open_settings, getTileLabel());

View File

@@ -103,11 +103,14 @@ public class WorkModeTile extends QSTileImpl<BooleanState> implements
state.icon = mIcon;
if (state.value) {
state.slash.isSlashed = false;
state.contentDescription = mContext.getString(
R.string.accessibility_quick_settings_work_mode_on);
} else {
state.slash.isSlashed = true;
state.contentDescription = mContext.getString(
R.string.accessibility_quick_settings_work_mode_off);
}
state.label = mContext.getString(R.string.quick_settings_work_mode_label);
state.contentDescription = state.label;
state.expandedAccessibilityClassName = Switch.class.getName();
state.state = state.value ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE;
}