From 6f5e82d9fc408fcc5e58d475ebadf1f046ea3451 Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Mon, 2 Dec 2019 09:52:00 -0500 Subject: [PATCH] QS Talkback bug fixes Fixes a couple of Talkback bugs in QSCustomizer: * List scrolling * Focusing on correct element when "move" is selected. * No reading "double tap and hold for long press". Also, Dark Mode tile made a switch Fixes: 145259342 Fixes: 145257223 Test: manual using TB Change-Id: I782dad4e1a411972c40e37abc31eabb3fd1f8ea2 --- .../res/layout/qs_customize_panel_content.xml | 2 +- .../systemui/qs/customize/CustomizeTileView.java | 5 +++++ .../systemui/qs/customize/QSCustomizer.java | 9 ++++++++- .../systemui/qs/customize/TileAdapter.java | 15 +++++++++++++++ .../systemui/qs/tiles/UiModeNightTile.java | 2 ++ 5 files changed, 31 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/res/layout/qs_customize_panel_content.xml b/packages/SystemUI/res/layout/qs_customize_panel_content.xml index 09f512f72f841..7cce1ba36bd93 100644 --- a/packages/SystemUI/res/layout/qs_customize_panel_content.xml +++ b/packages/SystemUI/res/layout/qs_customize_panel_content.xml @@ -52,7 +52,7 @@ android:scrollIndicators="top" android:scrollbars="vertical" android:scrollbarStyle="outsideOverlay" - android:importantForAccessibility="no" /> + android:importantForAccessibility="auto" /> implements TileSta return true; } + private void setSelectableForHeaders(View view) { + if (mAccessibilityManager.isTouchExplorationEnabled()) { + final boolean selectable = mAccessibilityAction == ACTION_NONE; + view.setFocusable(selectable); + view.setImportantForAccessibility(selectable + ? View.IMPORTANT_FOR_ACCESSIBILITY_YES + : View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS); + view.setFocusableInTouchMode(selectable); + } + } + @Override public void onBindViewHolder(final Holder holder, int position) { if (holder.getItemViewType() == TYPE_HEADER) { + setSelectableForHeaders(holder.itemView); return; } if (holder.getItemViewType() == TYPE_DIVIDER) { @@ -260,6 +272,8 @@ public class TileAdapter extends RecyclerView.Adapter implements TileSta } ((TextView) holder.itemView.findViewById(android.R.id.title)).setText(titleText); + setSelectableForHeaders(holder.itemView); + return; } if (holder.getItemViewType() == TYPE_ACCESSIBLE_DROP) { @@ -306,6 +320,7 @@ public class TileAdapter extends RecyclerView.Adapter implements TileSta holder.mTileView.setImportantForAccessibility(selectable ? View.IMPORTANT_FOR_ACCESSIBILITY_YES : View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS); + holder.mTileView.setFocusableInTouchMode(selectable); if (selectable) { holder.mTileView.setOnClickListener(new OnClickListener() { @Override diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/UiModeNightTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/UiModeNightTile.java index dc9a2ce1beef5..9fe9703e41816 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/UiModeNightTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/UiModeNightTile.java @@ -22,6 +22,7 @@ import android.content.res.Configuration; import android.provider.Settings; import android.service.quicksettings.Tile; import android.text.TextUtils; +import android.widget.Switch; import com.android.internal.logging.nano.MetricsProto; import com.android.systemui.R; @@ -112,6 +113,7 @@ public class UiModeNightTile extends QSTileImpl implements state.state = state.value ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE; } state.showRippleEffect = false; + state.expandedAccessibilityClassName = Switch.class.getName(); } @Override