From 58d9b86667c3c59d48ff0ffe42b2c6f89e8f2692 Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Mon, 29 Oct 2018 12:27:42 -0400 Subject: Fixes context for tiles without longClick QSTile can declare whether it doesn't support (has no effect) long click and then TalkBack will not report it as an available option. Test: manual & atest Change-Id: Iec21181f4308c7c8c4962f191fa0787e053ae944 Fixes: 117921787 --- .../plugin/src/com/android/systemui/plugins/qs/QSTile.java | 5 ++++- .../com/android/systemui/qs/tileimpl/QSTileBaseView.java | 13 +++++++++---- .../src/com/android/systemui/qs/tiles/FlashlightTile.java | 5 +++-- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java index bf4374acf6e6..bca353050c46 100644 --- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java +++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java @@ -116,6 +116,7 @@ public interface QSTile { public boolean isTransient = false; public String expandedAccessibilityClassName; public SlashState slash; + public boolean handlesLongClick = true; public boolean copyTo(State other) { if (other == null) throw new IllegalArgumentException(); @@ -133,7 +134,8 @@ public interface QSTile { || !Objects.equals(other.state, state) || !Objects.equals(other.isTransient, isTransient) || !Objects.equals(other.dualTarget, dualTarget) - || !Objects.equals(other.slash, slash); + || !Objects.equals(other.slash, slash) + || !Objects.equals(other.handlesLongClick, handlesLongClick); other.icon = icon; other.iconSupplier = iconSupplier; other.label = label; @@ -146,6 +148,7 @@ public interface QSTile { other.dualTarget = dualTarget; other.isTransient = isTransient; other.slash = slash != null ? slash.copy() : null; + other.handlesLongClick = handlesLongClick; return changed; } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java index d42127e74944..0638998d8e67 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java @@ -194,6 +194,7 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView { } setClickable(state.state != Tile.STATE_UNAVAILABLE); + setLongClickable(state.handlesLongClick); mIcon.setIcon(state, allowAnimations); setContentDescription(state.contentDescription); @@ -287,10 +288,14 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView { info.setText(label); info.setChecked(b); info.setCheckable(true); - info.addAction( - new AccessibilityNodeInfo.AccessibilityAction( - AccessibilityNodeInfo.AccessibilityAction.ACTION_LONG_CLICK.getId(), - getResources().getString(R.string.accessibility_long_click_tile))); + if (isLongClickable()) { + info.addAction( + new AccessibilityNodeInfo.AccessibilityAction( + AccessibilityNodeInfo.AccessibilityAction + .ACTION_LONG_CLICK.getId(), + getResources().getString( + R.string.accessibility_long_click_tile))); + } } } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java index f2ead1cbca94..d7ac2532982d 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java @@ -18,7 +18,6 @@ package com.android.systemui.qs.tiles; import android.app.ActivityManager; import android.content.Intent; -import android.graphics.drawable.Drawable; import android.provider.MediaStore; import android.service.quicksettings.Tile; import android.widget.Switch; @@ -50,7 +49,9 @@ public class FlashlightTile extends QSTileImpl implements @Override public BooleanState newTileState() { - return new BooleanState(); + BooleanState state = new BooleanState(); + state.handlesLongClick = false; + return state; } @Override -- cgit v1.2.3-59-g8ed1b