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

Commit b995a324 authored by Daniel Huang's avatar Daniel Huang Committed by Android (Google) Code Review
Browse files

Merge "Use radio button style for single selection" into main

parents ce5ecef8 689e0e4a
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -35,8 +35,8 @@ import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.TickButtonPreference;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.widget.SelectorWithWidgetPreference;

import java.util.Locale;

@@ -138,13 +138,13 @@ public class NumberingSystemItemController extends BasePreferenceController {
        for (String localeTag : locales) {
            Locale supportedLocale = Locale.forLanguageTag(localeTag);
            if (isSameBaseLocale(targetLocale, supportedLocale)) {
                TickButtonPreference pref = new TickButtonPreference(mContext);
                SelectorWithWidgetPreference pref = new SelectorWithWidgetPreference(mContext);
                String numberingName = getNumberingSystem(supportedLocale);
                pref.setTitle(numberingName);
                String key = supportedLocale.getUnicodeLocaleType(
                        ExtensionTypes.NUMBERING_SYSTEM);
                pref.setKey(key == null ? RegionalPreferencesDataUtils.DEFAULT_VALUE : key);
                pref.setSelected(isSameNumberingSystem(targetLocale, supportedLocale));
                pref.setChecked(isSameNumberingSystem(targetLocale, supportedLocale));
                screen.addPreference(pref);
            }
        }
@@ -168,11 +168,12 @@ public class NumberingSystemItemController extends BasePreferenceController {

    private void handleNumberSystemSelect(Preference preference) {
        for (int i = 0; i < mPreferenceScreen.getPreferenceCount(); i++) {
            TickButtonPreference pref = (TickButtonPreference) mPreferenceScreen.getPreference(i);
            SelectorWithWidgetPreference pref =
                    (SelectorWithWidgetPreference) mPreferenceScreen.getPreference(i);
            Log.i(TAG, "[onPreferenceClick] key is " + pref.getKey());
            if (pref.getKey().equals(preference.getKey())) {
                String numberingSystem = pref.getKey();
                pref.setSelected(true);
                pref.setChecked(true);
                Locale updatedLocale =
                        saveNumberingSystemToLocale(Locale.forLanguageTag(mSelectedLanguage),
                                numberingSystem);
@@ -188,7 +189,7 @@ public class NumberingSystemItemController extends BasePreferenceController {
                mParentFragment.setArguments(bundle);
                continue;
            }
            pref.setSelected(false);
            pref.setChecked(false);
        }
    }

+4 −17
Original line number Diff line number Diff line
@@ -24,8 +24,8 @@ import androidx.preference.PreferenceScreen;

import com.android.settings.core.BasePreferenceController;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.TickButtonPreference;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.widget.SelectorWithWidgetPreference;

/** A base controller for handling all regional preferences controllers. */
public abstract class RegionalPreferenceListBasePreferenceController extends
@@ -54,15 +54,14 @@ public abstract class RegionalPreferenceListBasePreferenceController extends
        String[] unitValues = getUnitValues();

        for (int i = 0; i < unitValues.length; i++) {
            TickButtonPreference pref = new TickButtonPreference(mContext);
            SelectorWithWidgetPreference pref = new SelectorWithWidgetPreference(mContext);
            mPreferenceCategory.addPreference(pref);
            final String item = unitValues[i];
            final String value = RegionalPreferencesDataUtils.getDefaultUnicodeExtensionData(
                    mContext, getExtensionTypes());
            pref.setTitle(getPreferenceTitle(item));
            pref.setKey(item);
            pref.setOnPreferenceClickListener(clickedPref -> {
                setSelected(pref);
            pref.setOnClickListener(v -> {
                RegionalPreferencesDataUtils.savePreference(mContext, getExtensionTypes(),
                        item.equals(RegionalPreferencesDataUtils.DEFAULT_VALUE)
                                ? null : item);
@@ -70,20 +69,8 @@ public abstract class RegionalPreferenceListBasePreferenceController extends
                        getMetricsActionKey() == SettingsEnums.ACTION_SET_FIRST_DAY_OF_WEEK ? ""
                                : getPreferenceTitle(value) + " > " + getPreferenceTitle(item);
                mMetricsFeatureProvider.action(mContext, getMetricsActionKey(), metrics);
                return true;
            });
            pref.setSelected(!value.isEmpty() && item.equals(value));
        }
    }

    private void setSelected(TickButtonPreference preference) {
        for (int i = 0; i < mPreferenceCategory.getPreferenceCount(); i++) {
            TickButtonPreference pref = (TickButtonPreference) mPreferenceCategory.getPreference(i);
            if (pref.getKey().equals(preference.getKey())) {
                pref.setSelected(true);
                continue;
            }
            pref.setSelected(false);
            pref.setChecked(!value.isEmpty() && item.equals(value));
        }
    }

+13 −11
Original line number Diff line number Diff line
@@ -25,16 +25,15 @@ import android.os.LocaleList;
import android.os.Looper;
import android.provider.Settings;

import com.android.internal.app.LocalePicker;
import com.android.settings.widget.TickButtonPreference;

import androidx.preference.PreferenceManager;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;

import com.android.internal.app.LocalePicker;
import com.android.settingslib.widget.SelectorWithWidgetPreference;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -91,8 +90,9 @@ public class FirstDayOfWeekItemListControllerTest {

    @Test
    public void displayPreference_setSelectPreferredFirstDayOfWeekIsDefault() {
        TickButtonPreference pref = (TickButtonPreference) mPreferenceCategory.getPreference(0);
        pref.performClick();
        SelectorWithWidgetPreference pref =
                (SelectorWithWidgetPreference) mPreferenceCategory.getPreference(0);
        pref.onClick();
        String record = Settings.System.getString(
                mContext.getContentResolver(), Settings.System.LOCALE_PREFERENCES);

@@ -103,8 +103,9 @@ public class FirstDayOfWeekItemListControllerTest {

    @Test
    public void displayPreference_setSelectPreferredFirstDayOfWeekIsSunday() {
        TickButtonPreference pref = (TickButtonPreference) mPreferenceCategory.getPreference(1);
        pref.performClick();
        SelectorWithWidgetPreference pref =
                (SelectorWithWidgetPreference) mPreferenceCategory.getPreference(1);
        pref.onClick();
        String record = Settings.System.getString(
                mContext.getContentResolver(), Settings.System.LOCALE_PREFERENCES);

@@ -114,8 +115,9 @@ public class FirstDayOfWeekItemListControllerTest {

    @Test
    public void displayPreference_setSelectPreferredFirstDayOfWeekIsMonday() {
        TickButtonPreference pref = (TickButtonPreference) mPreferenceCategory.getPreference(2);
        pref.performClick();
        SelectorWithWidgetPreference pref =
                (SelectorWithWidgetPreference) mPreferenceCategory.getPreference(2);
        pref.onClick();
        String record = Settings.System.getString(
                mContext.getContentResolver(), Settings.System.LOCALE_PREFERENCES);

+9 −5
Original line number Diff line number Diff line
@@ -38,7 +38,7 @@ import androidx.test.core.app.ApplicationProvider;

import com.android.internal.app.LocalePicker;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.widget.TickButtonPreference;
import com.android.settingslib.widget.SelectorWithWidgetPreference;

import org.junit.After;
import org.junit.Before;
@@ -82,7 +82,8 @@ public class NumberingSystemItemControllerTest {
                NumberingSystemItemController.ARG_VALUE_LANGUAGE_SELECT);
        bundle.putString(
                NumberingSystemItemController.KEY_SELECTED_LANGUAGE, Locale.US.toLanguageTag());
        TickButtonPreference preference = new TickButtonPreference(mApplicationContext);
        SelectorWithWidgetPreference preference =
                new SelectorWithWidgetPreference(mApplicationContext);
        preference.setKey("I_am_the_key");
        mPreferenceScreen.addPreference(preference);
        mController = new NumberingSystemItemController(mApplicationContext, bundle);
@@ -110,7 +111,8 @@ public class NumberingSystemItemControllerTest {
                NumberingSystemItemController.ARG_VALUE_NUMBERING_SYSTEM_SELECT);
        bundle.putString(
                NumberingSystemItemController.KEY_SELECTED_LANGUAGE, Locale.US.toLanguageTag());
        TickButtonPreference preference = new TickButtonPreference(mApplicationContext);
        SelectorWithWidgetPreference preference =
                new SelectorWithWidgetPreference(mApplicationContext);
        preference.setKey("test_key");
        mPreferenceScreen.addPreference(preference);
        mController = new NumberingSystemItemController(mApplicationContext, bundle);
@@ -133,8 +135,10 @@ public class NumberingSystemItemControllerTest {
                NumberingSystemItemController.ARG_VALUE_NUMBERING_SYSTEM_SELECT);
        bundle.putString(
                NumberingSystemItemController.KEY_SELECTED_LANGUAGE, "ar-BH");
        TickButtonPreference defaultPreference = new TickButtonPreference(mApplicationContext);
        TickButtonPreference numberPreference = new TickButtonPreference(mApplicationContext);
        SelectorWithWidgetPreference defaultPreference =
                new SelectorWithWidgetPreference(mApplicationContext);
        SelectorWithWidgetPreference numberPreference =
                new SelectorWithWidgetPreference(mApplicationContext);
        defaultPreference.setKey("default");
        numberPreference.setKey("latn");
        mPreferenceScreen.addPreference(defaultPreference);
+14 −11
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.settings.regionalpreferences;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.spy;

import android.content.Context;
@@ -24,16 +25,15 @@ import android.os.LocaleList;
import android.os.Looper;
import android.provider.Settings;

import com.android.internal.app.LocalePicker;
import com.android.settings.widget.TickButtonPreference;

import androidx.preference.PreferenceManager;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;

import com.android.internal.app.LocalePicker;
import com.android.settingslib.widget.SelectorWithWidgetPreference;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -88,8 +88,9 @@ public class TemperatureUnitListControllerTest {

    @Test
    public void displayPreference_setSelectPreferredTemperatureUnitIsDefault() {
        TickButtonPreference pref = (TickButtonPreference) mPreferenceCategory.getPreference(0);
        pref.performClick();
        SelectorWithWidgetPreference pref =
                (SelectorWithWidgetPreference) mPreferenceCategory.getPreference(0);
        pref.onClick();
        String record = Settings.System.getString(
                mContext.getContentResolver(), Settings.System.LOCALE_PREFERENCES);

@@ -101,8 +102,9 @@ public class TemperatureUnitListControllerTest {

    @Test
    public void displayPreference_setSelectPreferredTemperatureUnitIsCelsius() {
        TickButtonPreference pref = (TickButtonPreference) mPreferenceCategory.getPreference(1);
        pref.performClick();
        SelectorWithWidgetPreference pref =
                (SelectorWithWidgetPreference) mPreferenceCategory.getPreference(1);
        pref.onClick();
        String record = Settings.System.getString(
                mContext.getContentResolver(), Settings.System.LOCALE_PREFERENCES);

@@ -112,8 +114,9 @@ public class TemperatureUnitListControllerTest {

    @Test
    public void displayPreference_setSelectPreferredTemperatureUnitIsFahrenhe() {
        TickButtonPreference pref = (TickButtonPreference) mPreferenceCategory.getPreference(2);
        pref.performClick();
        SelectorWithWidgetPreference pref =
                (SelectorWithWidgetPreference) mPreferenceCategory.getPreference(2);
        pref.onClick();
        String record = Settings.System.getString(
                mContext.getContentResolver(), Settings.System.LOCALE_PREFERENCES);