From 8a3e23ce6361b1c94fc99e98377a41551366029f Mon Sep 17 00:00:00 2001 From: Amin Shaikh Date: Tue, 17 Apr 2018 11:14:32 -0400 Subject: [PATCH] Allow QS expansion in switch access mode. Change-Id: I90ffc96f3bbbc8e5cad1509cc8d7b4028ff3fe04 Fixes: 78129194 Test: manually --- .../src/com/android/systemui/qs/QSFooter.java | 5 ++-- .../com/android/systemui/qs/QSFooterImpl.java | 26 ++++++++++++++++--- .../com/android/systemui/qs/QSFragment.java | 11 +------- .../android/systemui/qs/car/CarQSFooter.java | 4 +-- .../phone/NotificationPanelView.java | 14 +++++----- 5 files changed, 33 insertions(+), 27 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFooter.java b/packages/SystemUI/src/com/android/systemui/qs/QSFooter.java index 6c7eda7c89d1c..5ae43c660b123 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSFooter.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSFooter.java @@ -65,10 +65,9 @@ public interface QSFooter { void setKeyguardShowing(boolean keyguardShowing); /** - * Returns the {@link View} that should expand the quick settings when clicked. + * Sets the {@link android.view.View.OnClickListener to be used on elements that expend QS. */ - @Nullable - View getExpandView(); + void setExpandClickListener(View.OnClickListener onClickListener); default void disable(int state1, int state2, boolean animate) {} } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java b/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java index abe819bc6df1b..fd9ddb0fd0acd 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java @@ -17,7 +17,6 @@ package com.android.systemui.qs; import static android.app.StatusBarManager.DISABLE2_QUICK_SETTINGS; -import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; import android.content.Context; import android.content.Intent; @@ -27,6 +26,7 @@ import android.content.res.Configuration; import android.graphics.PorterDuff.Mode; import android.graphics.drawable.Drawable; import android.graphics.drawable.RippleDrawable; +import android.os.Bundle; import android.os.UserManager; import android.support.annotation.Nullable; import android.support.annotation.VisibleForTesting; @@ -34,6 +34,7 @@ import android.text.TextUtils; import android.util.AttributeSet; import android.view.View; import android.view.View.OnClickListener; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; @@ -96,6 +97,7 @@ public class QSFooterImpl extends FrameLayout implements QSFooter, private ImageView mMobileRoaming; private final int mColorForeground; private final CellSignalState mInfo = new CellSignalState(); + private OnClickListener mExpandClickListener; public QSFooterImpl(Context context, AttributeSet attrs) { super(context, attrs); @@ -140,6 +142,7 @@ public class QSFooterImpl extends FrameLayout implements QSFooter, mActivityStarter = Dependency.get(ActivityStarter.class); addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> updateAnimator(right - left)); + setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES); } private void updateAnimator(int width) { @@ -204,6 +207,11 @@ public class QSFooterImpl extends FrameLayout implements QSFooter, setExpansion(mExpansionAmount); } + @Override + public void setExpandClickListener(OnClickListener onClickListener) { + mExpandClickListener = onClickListener; + } + @Override public void setExpanded(boolean expanded) { if (mExpanded == expanded) return; @@ -238,8 +246,20 @@ public class QSFooterImpl extends FrameLayout implements QSFooter, } @Override - public View getExpandView() { - return findViewById(R.id.expand_indicator); + public boolean performAccessibilityAction(int action, Bundle arguments) { + if (action == AccessibilityNodeInfo.ACTION_EXPAND) { + if (mExpandClickListener != null) { + mExpandClickListener.onClick(null); + return true; + } + } + return super.performAccessibilityAction(action, arguments); + } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_EXPAND); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java index b82e355767820..cbd1ca1b771da 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java @@ -240,11 +240,6 @@ public class QSFragment extends Fragment implements QS, CommandQueue.Callbacks { @Override public void setHeaderClickable(boolean clickable) { if (DEBUG) Log.d(TAG, "setHeaderClickable " + clickable); - - View expandView = mFooter.getExpandView(); - if (expandView != null) { - expandView.setClickable(clickable); - } } @Override @@ -369,11 +364,7 @@ public class QSFragment extends Fragment implements QS, CommandQueue.Callbacks { @Override public void setExpandClickListener(OnClickListener onClickListener) { - View expandView = mFooter.getExpandView(); - - if (expandView != null) { - expandView.setOnClickListener(onClickListener); - } + mFooter.setExpandClickListener(onClickListener); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/qs/car/CarQSFooter.java b/packages/SystemUI/src/com/android/systemui/qs/car/CarQSFooter.java index 24b5a34075d09..2ea21c66240f0 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/car/CarQSFooter.java +++ b/packages/SystemUI/src/com/android/systemui/qs/car/CarQSFooter.java @@ -114,11 +114,9 @@ public class CarQSFooter extends RelativeLayout implements QSFooter, } } - @Nullable @Override - public View getExpandView() { + public void setExpandClickListener(OnClickListener onClickListener) { // No view that should expand/collapse the quick settings. - return null; } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index 351633b590c81..ca459a5fa0e4e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -1965,14 +1965,12 @@ public class NotificationPanelView extends PanelView implements @Override public void onClick(View v) { - if (v.getId() == R.id.expand_indicator) { - onQsExpansionStarted(); - if (mQsExpanded) { - flingSettings(0 /* vel */, false /* expand */, null, true /* isClick */); - } else if (mQsExpansionEnabled) { - mLockscreenGestureLogger.write(MetricsEvent.ACTION_SHADE_QS_TAP, 0, 0); - flingSettings(0 /* vel */, true /* expand */, null, true /* isClick */); - } + onQsExpansionStarted(); + if (mQsExpanded) { + flingSettings(0 /* vel */, false /* expand */, null, true /* isClick */); + } else if (mQsExpansionEnabled) { + mLockscreenGestureLogger.write(MetricsEvent.ACTION_SHADE_QS_TAP, 0, 0); + flingSettings(0 /* vel */, true /* expand */, null, true /* isClick */); } }