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

Commit 508567ed authored by danielwbhuang's avatar danielwbhuang Committed by Daniel Huang
Browse files

Talkback shouldn't announce in list numbers.

These pages shouldn't announce in list numbers when use Talkback.
1. TemperatureUnitFragment
2. MeasurementSystemItemFragment
3. FirstDayOfWeekItemFragment

Bug: 385671217
Flag: EXEMPT bug fix
Test: test on real devices
Change-Id: Ib691947c3b34cd59e29ed2fd173a77633c5115b5
parent 54036162
Loading
Loading
Loading
Loading
+42 −0
Original line number Diff line number Diff line
@@ -18,9 +18,18 @@ package com.android.settings.regionalpreferences;

import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.Bundle;
import android.provider.Settings;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat;
import androidx.preference.PreferenceRecyclerViewAccessibilityDelegate;
import androidx.recyclerview.widget.RecyclerView;

import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
@@ -31,6 +40,7 @@ import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.search.SearchIndexable;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

/** Main fragment to display first day of week. */
@@ -54,6 +64,38 @@ public class FirstDayOfWeekItemFragment extends DashboardFragment {
        }
    }

    @NonNull
    @Override
    public RecyclerView onCreateRecyclerView(
            @NonNull LayoutInflater inflater, @NonNull ViewGroup parent,
            @Nullable Bundle savedInstanceState) {

        // Talkback shouldn't announce in list numbers
        final RecyclerView recyclerView =
                super.onCreateRecyclerView(inflater, parent, savedInstanceState);
        recyclerView.setAccessibilityDelegateCompat(
            new PreferenceRecyclerViewAccessibilityDelegate(recyclerView) {
                    @Override
                    public void onInitializeAccessibilityNodeInfo(@NonNull View host,
                            @NonNull AccessibilityNodeInfoCompat info) {
                        super.onInitializeAccessibilityNodeInfo(host, info);
                        int availableCount = (int) getPreferenceControllers()
                                .stream()
                                .flatMap(Collection::stream)
                                .filter(AbstractPreferenceController::isAvailable)
                                .count();
                        info.setCollectionInfo(
                                CollectionInfoCompat.obtain(
                                        /*rowCount=*/availableCount,
                                        /*columnCount=*/1,
                                        /*hierarchical=*/false,
                                        CollectionInfoCompat.SELECTION_MODE_SINGLE)
                        );
                    }
            });
        return recyclerView;
    }

    @Override
    protected int getPreferenceScreenResId() {
        return R.xml.regional_preferences_first_day_of_week;
+42 −0
Original line number Diff line number Diff line
@@ -18,9 +18,18 @@ package com.android.settings.regionalpreferences;

import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.Bundle;
import android.provider.Settings;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat;
import androidx.preference.PreferenceRecyclerViewAccessibilityDelegate;
import androidx.recyclerview.widget.RecyclerView;

import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
@@ -32,6 +41,7 @@ import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.search.SearchIndexable;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

/** Main fragment to display measurement system. */
@@ -55,6 +65,38 @@ public class MeasurementSystemItemFragment extends DashboardFragment {
        }
    }

    @NonNull
    @Override
    public RecyclerView onCreateRecyclerView(
            @NonNull LayoutInflater inflater, @NonNull ViewGroup parent,
            @Nullable Bundle savedInstanceState) {

        // Talkback shouldn't announce in list numbers
        final RecyclerView recyclerView =
                super.onCreateRecyclerView(inflater, parent, savedInstanceState);
        recyclerView.setAccessibilityDelegateCompat(
            new PreferenceRecyclerViewAccessibilityDelegate(recyclerView) {
                    @Override
                    public void onInitializeAccessibilityNodeInfo(@NonNull View host,
                            @NonNull AccessibilityNodeInfoCompat info) {
                        super.onInitializeAccessibilityNodeInfo(host, info);
                        int availableCount = (int) getPreferenceControllers()
                                .stream()
                                .flatMap(Collection::stream)
                                .filter(AbstractPreferenceController::isAvailable)
                                .count();
                        info.setCollectionInfo(
                                CollectionInfoCompat.obtain(
                                        /*rowCount=*/availableCount,
                                        /*columnCount=*/1,
                                        /*hierarchical=*/false,
                                        CollectionInfoCompat.SELECTION_MODE_SINGLE)
                        );
                    }
            });
        return recyclerView;
    }

    @Override
    protected int getPreferenceScreenResId() {
        return R.xml.regional_preferences_measurement_system;
+42 −0
Original line number Diff line number Diff line
@@ -18,9 +18,18 @@ package com.android.settings.regionalpreferences;

import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.Bundle;
import android.provider.Settings;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat;
import androidx.preference.PreferenceRecyclerViewAccessibilityDelegate;
import androidx.recyclerview.widget.RecyclerView;

import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
@@ -31,6 +40,7 @@ import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.search.SearchIndexable;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

/** Main fragment to display temperature preferences. */
@@ -54,6 +64,38 @@ public class TemperatureUnitFragment extends DashboardFragment {
        }
    }

    @NonNull
    @Override
    public RecyclerView onCreateRecyclerView(
            @NonNull LayoutInflater inflater, @NonNull ViewGroup parent,
            @Nullable Bundle savedInstanceState) {

        // Talkback shouldn't announce in list numbers
        final RecyclerView recyclerView =
                super.onCreateRecyclerView(inflater, parent, savedInstanceState);
        recyclerView.setAccessibilityDelegateCompat(
            new PreferenceRecyclerViewAccessibilityDelegate(recyclerView) {
                    @Override
                    public void onInitializeAccessibilityNodeInfo(@NonNull View host,
                            @NonNull AccessibilityNodeInfoCompat info) {
                        super.onInitializeAccessibilityNodeInfo(host, info);
                        int availableCount = (int) getPreferenceControllers()
                                .stream()
                                .flatMap(Collection::stream)
                                .filter(AbstractPreferenceController::isAvailable)
                                .count();
                        info.setCollectionInfo(
                                CollectionInfoCompat.obtain(
                                        /*rowCount=*/availableCount,
                                        /*columnCount=*/1,
                                        /*hierarchical=*/false,
                                        CollectionInfoCompat.SELECTION_MODE_SINGLE)
                        );
                    }
            });
        return recyclerView;
    }

    @Override
    protected int getPreferenceScreenResId() {
        return R.xml.regional_preferences_temperature;