Quicksettings accessibility.
Bug: 15696340
Change-Id: I6887e2dad4822911d3a1642aaec5703174b57330
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java
index 2ef3672..a11a6e5 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java
@@ -23,6 +23,7 @@
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Space;
+
import com.android.systemui.R;
import com.android.systemui.qs.QSTile.SignalState;
import com.android.systemui.qs.QSTile.State;
@@ -93,8 +94,8 @@
}
@Override
- protected QSTileBaseView createTileView(QSTile<?> tile) {
- return new QSTileBaseView(mContext, tile.createTileView(mContext));
+ protected QSTileBaseView createTileView(QSTile<?> tile, boolean collapsedView) {
+ return new QSTileBaseView(mContext, tile.createTileView(mContext), collapsedView);
}
@Override
@@ -133,7 +134,7 @@
break;
}
}
- super.setTiles(quickTiles);
+ super.setTiles(quickTiles, true);
}
private final Tunable mNumTiles = new Tunable() {
@@ -150,6 +151,7 @@
private static class HeaderTileLayout extends LinearLayout implements QSTileLayout {
private final Space mEndSpacer;
+ protected final ArrayList<TileRecord> mRecords = new ArrayList<>();
public HeaderTileLayout(Context context) {
super(context);
@@ -185,6 +187,7 @@
// Add a spacer.
addView(new Space(mContext), getChildCount() - 1 /* Leave icon at end */,
generateSpaceParams());
+ mRecords.add(tile);
}
private LayoutParams generateSpaceParams() {
@@ -209,6 +212,7 @@
removeViewAt(childIndex);
// Remove its spacer as well.
removeViewAt(childIndex);
+ mRecords.remove(tile);
}
private int getChildIndex(QSTileBaseView tileView) {
@@ -236,5 +240,21 @@
public boolean hasOverlappingRendering() {
return false;
}
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+ if (mRecords != null && mRecords.size() > 0) {
+ View previousView = this;
+ for (TileRecord record : mRecords) {
+ if (record.tileView.getVisibility() == GONE) continue;
+ previousView = record.tileView.updateAccessibilityOrder(previousView);
+ }
+ mRecords.get(0).tileView.setAccessibilityTraversalAfter(
+ R.id.alarm_status_collapsed);
+ mRecords.get(mRecords.size() - 1).tileView.setAccessibilityTraversalBefore(
+ R.id.expand_indicator);
+ }
+ }
}
}