Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ed1ae8f8 authored by Jason Monk's avatar Jason Monk Committed by Android (Google) Code Review
Browse files

Merge "Add announcement of global actions dialog" into lmp-dev

parents 8681c044 30443b14
Loading
Loading
Loading
Loading
+41 −0
Original line number Original line Diff line number Diff line
@@ -68,6 +68,7 @@ import android.view.WindowManager;
import android.view.WindowManagerGlobal;
import android.view.WindowManagerGlobal;
import android.view.WindowManagerInternal;
import android.view.WindowManagerInternal;
import android.view.WindowManagerPolicy.WindowManagerFuncs;
import android.view.WindowManagerPolicy.WindowManagerFuncs;
import android.view.accessibility.AccessibilityEvent;
import android.widget.AdapterView;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ImageView;
@@ -625,6 +626,12 @@ class GlobalActions implements DialogInterface.OnDismissListener, DialogInterfac
     * What each item in the global actions dialog must be able to support.
     * What each item in the global actions dialog must be able to support.
     */
     */
    private interface Action {
    private interface Action {
        /**
         * @return Text that will be announced when dialog is created.  null
         *     for none.
         */
        CharSequence getLabelForAccessibility(Context context);

        View create(Context context, View convertView, ViewGroup parent, LayoutInflater inflater);
        View create(Context context, View convertView, ViewGroup parent, LayoutInflater inflater);


        void onPress();
        void onPress();
@@ -692,6 +699,14 @@ class GlobalActions implements DialogInterface.OnDismissListener, DialogInterfac


        abstract public void onPress();
        abstract public void onPress();


        public CharSequence getLabelForAccessibility(Context context) {
            if (mMessage != null) {
                return mMessage;
            } else {
                return context.getString(mMessageResId);
            }
        }

        public View create(
        public View create(
                Context context, View convertView, ViewGroup parent, LayoutInflater inflater) {
                Context context, View convertView, ViewGroup parent, LayoutInflater inflater) {
            View v = inflater.inflate(R.layout.global_actions_item, parent, false);
            View v = inflater.inflate(R.layout.global_actions_item, parent, false);
@@ -781,6 +796,11 @@ class GlobalActions implements DialogInterface.OnDismissListener, DialogInterfac


        }
        }


        @Override
        public CharSequence getLabelForAccessibility(Context context) {
            return context.getString(mMessageResId);
        }

        public View create(Context context, View convertView, ViewGroup parent,
        public View create(Context context, View convertView, ViewGroup parent,
                LayoutInflater inflater) {
                LayoutInflater inflater) {
            willCreate();
            willCreate();
@@ -897,6 +917,11 @@ class GlobalActions implements DialogInterface.OnDismissListener, DialogInterfac
            return index;
            return index;
        }
        }


        @Override
        public CharSequence getLabelForAccessibility(Context context) {
            return null;
        }

        public View create(Context context, View convertView, ViewGroup parent,
        public View create(Context context, View convertView, ViewGroup parent,
                LayoutInflater inflater) {
                LayoutInflater inflater) {
            View v = inflater.inflate(R.layout.global_actions_silent_mode, parent, false);
            View v = inflater.inflate(R.layout.global_actions_silent_mode, parent, false);
@@ -1045,6 +1070,7 @@ class GlobalActions implements DialogInterface.OnDismissListener, DialogInterfac
        private final Context mContext;
        private final Context mContext;
        private final int mWindowTouchSlop;
        private final int mWindowTouchSlop;
        private final AlertController mAlert;
        private final AlertController mAlert;
        private final MyAdapter mAdapter;


        private EnableAccessibilityController mEnableAccessibilityController;
        private EnableAccessibilityController mEnableAccessibilityController;


@@ -1055,6 +1081,7 @@ class GlobalActions implements DialogInterface.OnDismissListener, DialogInterfac
            super(context, getDialogTheme(context));
            super(context, getDialogTheme(context));
            mContext = context;
            mContext = context;
            mAlert = new AlertController(mContext, this, getWindow());
            mAlert = new AlertController(mContext, this, getWindow());
            mAdapter = (MyAdapter) params.mAdapter;
            mWindowTouchSlop = ViewConfiguration.get(context).getScaledWindowTouchSlop();
            mWindowTouchSlop = ViewConfiguration.get(context).getScaledWindowTouchSlop();
            params.apply(mAlert);
            params.apply(mAlert);
        }
        }
@@ -1148,6 +1175,20 @@ class GlobalActions implements DialogInterface.OnDismissListener, DialogInterfac
            mAlert.installContent();
            mAlert.installContent();
        }
        }


        @Override
        public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
            if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {
                for (int i = 0; i < mAdapter.getCount(); ++i) {
                    CharSequence label =
                            mAdapter.getItem(i).getLabelForAccessibility(getContext());
                    if (label != null) {
                        event.getText().add(label);
                    }
                }
            }
            return super.dispatchPopulateAccessibilityEvent(event);
        }

        @Override
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (mAlert.onKeyDown(keyCode, event)) {
            if (mAlert.onKeyDown(keyCode, event)) {