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

Commit f318b29f authored by Evan Chen's avatar Evan Chen Committed by Automerger Merge Worker
Browse files

Merge "Fix talkback when expand and collapse the permission list" into udc-dev am: b7985fba

parents b976ba62 b7985fba
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -113,6 +113,18 @@
    <!-- Back button for the helper consent dialog [CHAR LIMIT=30] -->
    <string name="consent_back">Back</string>

    <!-- Action when permission list view is expanded CHAR LIMIT=30] -->
    <string name="permission_expanded">Expanded</string>

    <!-- Expand action permission list CHAR LIMIT=30] -->
    <string name="permission_expand">Expand</string>

    <!-- Action when permission list view is collapsed CHAR LIMIT=30] -->
    <string name="permission_collapsed">Collapsed</string>

    <!-- Collapse action permission list CHAR LIMIT=30] -->
    <string name="permission_collapse">Collapse</string>

    <!-- ================== System data transfer ==================== -->
    <!-- Title of the permission sync confirmation dialog. [CHAR LIMIT=NONE] -->
    <string name="permission_sync_confirmation_title">Give apps on &lt;strong&gt;<xliff:g id="companion_device_name" example="Galaxy Watch 5">%1$s</xliff:g>&lt;/strong&gt; the same permissions as on &lt;strong&gt;<xliff:g id="primary_device_name" example="Pixel 6">%2$s</xliff:g>&lt;/strong&gt;?</string>
+25 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.util.ArrayMap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
@@ -121,6 +122,10 @@ class PermissionListAdapter extends RecyclerView.Adapter<PermissionListAdapter.V
        if (viewHolder.mExpandButton.getTag() == null) {
            viewHolder.mExpandButton.setTag(R.drawable.btn_expand_more);
        }

        setAccessibility(view, viewType,
                AccessibilityNodeInfo.ACTION_CLICK, R.string.permission_expand);

        // Add expand buttons if the permissions are more than PERMISSION_SIZE in this list also
        // make the summary invisible by default.
        if (mPermissions.size() > PERMISSION_SIZE) {
@@ -132,10 +137,18 @@ class PermissionListAdapter extends RecyclerView.Adapter<PermissionListAdapter.V
                    viewHolder.mExpandButton.setImageResource(R.drawable.btn_expand_less);
                    viewHolder.mPermissionSummary.setVisibility(View.VISIBLE);
                    viewHolder.mExpandButton.setTag(R.drawable.btn_expand_less);
                    view.setContentDescription(mContext.getString(R.string.permission_expanded));
                    setAccessibility(view, viewType,
                            AccessibilityNodeInfo.ACTION_CLICK, R.string.permission_collapse);
                    viewHolder.mPermissionSummary.setFocusable(true);
                } else {
                    viewHolder.mExpandButton.setImageResource(R.drawable.btn_expand_more);
                    viewHolder.mPermissionSummary.setVisibility(View.GONE);
                    viewHolder.mExpandButton.setTag(R.drawable.btn_expand_more);
                    view.setContentDescription(mContext.getString(R.string.permission_collapsed));
                    setAccessibility(view, viewType,
                            AccessibilityNodeInfo.ACTION_CLICK, R.string.permission_expanded);
                    viewHolder.mPermissionSummary.setFocusable(false);
                }
            });
        } else {
@@ -187,6 +200,18 @@ class PermissionListAdapter extends RecyclerView.Adapter<PermissionListAdapter.V
        }
    }

    private void setAccessibility(View view, int viewType, int action, int resourceId) {
        final String actionString = mContext.getString(resourceId);
        final String permission = mContext.getString(sTitleMap.get(viewType));
        view.setAccessibilityDelegate(new View.AccessibilityDelegate() {
            public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
                super.onInitializeAccessibilityNodeInfo(host, info);
                info.addAction(new AccessibilityNodeInfo.AccessibilityAction(action,
                        actionString + permission));
            }
        });
    }

    void setPermissionType(List<Integer> permissions) {
        mPermissions = permissions;
    }