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

Commit 8e103fc4 authored by Joseph Vincent's avatar Joseph Vincent Committed by Android (Google) Code Review
Browse files

Merge "Add accessibility delegate and populate itemCount" into main

parents 585727a3 44131dbc
Loading
Loading
Loading
Loading
+49 −0
Original line number Diff line number Diff line
@@ -18,6 +18,15 @@ package com.android.settings.privatespace;

import android.app.settings.SettingsEnums;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityNodeInfo;

import androidx.annotation.NonNull;
import androidx.preference.Preference;
import androidx.preference.PreferenceGroup;
import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
@@ -25,6 +34,7 @@ import com.android.settingslib.widget.IllustrationPreference;

public class HidePrivateSpaceSettings extends DashboardFragment {
    private static final String TAG = "HidePrivateSpaceSettings";
    private static final int IMPORTANT_FOR_ACCESSIBILITY_ITEM_COUNT = 5;
    private static final String PRIVATE_SPACE_HIDE_ILLUSTRATION_KEY =
            "private_space_hide_illustration";

@@ -36,6 +46,34 @@ public class HidePrivateSpaceSettings extends DashboardFragment {
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View root = super.onCreateView(inflater, container, savedInstanceState);
        PreferenceScreen preferenceScreen = getPreferenceScreen();
        final int itemCount =  countPreferencesRecursive(preferenceScreen);
        root.setAccessibilityDelegate(
                new View.AccessibilityDelegate() {
                    @Override
                    public void onInitializeAccessibilityNodeInfo(
                            @NonNull View host, @NonNull AccessibilityNodeInfo info) {
                        super.onInitializeAccessibilityNodeInfo(host, info);
                        //TODO(b/346712220)  - Replace the hardcoded accessibility count with
                        //value computed from xml Preference
                        info.setCollectionInfo(
                                new AccessibilityNodeInfo.CollectionInfo.Builder()
                                        .setRowCount(itemCount)
                                        .setColumnCount(1)
                                        .setItemCount(itemCount)
                                        .setImportantForAccessibilityItemCount(
                                                IMPORTANT_FOR_ACCESSIBILITY_ITEM_COUNT)
                                        .build()
                        );
                    }
                });
        return  root;
    }

    @Override
    public void onStart() {
        super.onStart();
@@ -66,4 +104,15 @@ public class HidePrivateSpaceSettings extends DashboardFragment {
    protected String getLogTag() {
        return TAG;
    }

    private int countPreferencesRecursive(PreferenceGroup preferenceGroup) {
        int count = preferenceGroup.getPreferenceCount();
        for (int i = 0; i < preferenceGroup.getPreferenceCount(); i++) {
            Preference preference = preferenceGroup.getPreference(i);
            if (preference instanceof PreferenceGroup) {
                count += countPreferencesRecursive((PreferenceGroup) preference);
            }
        }
        return count;
    }
}