Merge "[Update] Expose the regional preferences pages" into main

This commit is contained in:
Daniel Huang
2024-12-29 23:41:58 -08:00
committed by Android (Google) Code Review
8 changed files with 263 additions and 5 deletions

View File

@@ -1117,6 +1117,54 @@
android:value="true"/>
</activity>
<activity
android:name=".Settings$RegionSettingsActivity"
android:label="@string/region_picker_preference_title"
android:exported="true" >
<intent-filter android:priority="1">
<action android:name="android.settings.REGION_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
android:value="com.android.settings.regionalpreferences.RegionPickerFragment"/>
<meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
android:value="@string/menu_key_system"/>
<meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
android:value="true"/>
</activity>
<activity
android:name=".Settings$NumberingSystemSettingsActivity"
android:label="@string/numbers_preferences_title"
android:exported="true" >
<intent-filter android:priority="1">
<action android:name="android.settings.NUMBERING_SYSTEM_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
android:value="com.android.settings.regionalpreferences.NumberingSystemLocaleListFragment"/>
<meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
android:value="@string/menu_key_system"/>
<meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
android:value="true"/>
</activity>
<activity
android:name=".Settings$MeasurementSystemSettingsActivity"
android:label="@string/measurement_system_preferences_title"
android:exported="true" >
<intent-filter android:priority="1">
<action android:name="android.settings.MEASUREMENT_SYSTEM_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
android:value="com.android.settings.regionalpreferences.MeasurementSystemItemFragment"/>
<meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
android:value="@string/menu_key_system"/>
<meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
android:value="true"/>
</activity>
<activity
android:name=".Settings$RegionalPreferencesActivity"
android:label="@string/regional_preferences_title"

View File

@@ -109,7 +109,7 @@
android:title="@string/numbers_preferences_title"
android:summary="@string/default_string_of_regional_preference"
settings:controller="com.android.settings.regionalpreferences.NewNumberingSystemController"
settings:fragment="com.android.settings.regionalpreferences.NumberingPreferencesFragment">
settings:fragment="com.android.settings.regionalpreferences.NumberingSystemLocaleListFragment">
<extra
android:name="arg_key_regional_preference"
android:value="arg_value_language_select"/>

View File

@@ -100,9 +100,12 @@ public class Settings extends SettingsActivity {
public static class LocalePickerActivity extends SettingsActivity { /* empty */ }
public static class LanguageSettingsActivity extends SettingsActivity { /* empty */ }
/** Activity for the regional preferences settings. */
public static class RegionSettingsActivity extends SettingsActivity { /* empty */ }
public static class RegionalPreferencesActivity extends SettingsActivity { /* empty */ }
public static class TemperatureUnitSettingsActivity extends SettingsActivity { /* empty */ }
public static class FirstDayOfWeekSettingsActivity extends SettingsActivity { /* empty */ }
public static class MeasurementSystemSettingsActivity extends SettingsActivity { /* empty */ }
public static class NumberingSystemSettingsActivity extends SettingsActivity { /* empty */ }
public static class KeyboardSettingsActivity extends SettingsActivity { /* empty */ }
/** Activity for the navigation mode settings. */
public static class NavigationModeSettingsActivity extends SettingsActivity { /* empty */ }

View File

@@ -183,6 +183,9 @@ import com.android.settings.privatespace.delete.PrivateSpaceDeleteFragment;
import com.android.settings.privatespace.delete.PrivateSpaceDeletionProgressFragment;
import com.android.settings.privatespace.onelock.PrivateSpaceBiometricSettings;
import com.android.settings.regionalpreferences.FirstDayOfWeekItemFragment;
import com.android.settings.regionalpreferences.MeasurementSystemItemFragment;
import com.android.settings.regionalpreferences.NumberingSystemLocaleListFragment;
import com.android.settings.regionalpreferences.RegionPickerFragment;
import com.android.settings.regionalpreferences.RegionalPreferencesEntriesFragment;
import com.android.settings.regionalpreferences.TemperatureUnitFragment;
import com.android.settings.safetycenter.MoreSecurityPrivacyFragment;
@@ -396,9 +399,12 @@ public class SettingsGateway {
ColorAndMotionFragment.class.getName(),
ColorContrastFragment.class.getName(),
LongBackgroundTasksDetails.class.getName(),
RegionPickerFragment.class.getName(),
RegionalPreferencesEntriesFragment.class.getName(),
TemperatureUnitFragment.class.getName(),
FirstDayOfWeekItemFragment.class.getName(),
MeasurementSystemItemFragment.class.getName(),
NumberingSystemLocaleListFragment.class.getName(),
BatteryInfoFragment.class.getName(),
UserAspectRatioDetails.class.getName(),
ScreenTimeoutSettings.class.getName(),

View File

@@ -32,8 +32,14 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
/** Provides options of numbering system to each language. */
public class NumberingPreferencesFragment extends DashboardFragment {
/**
* Provides options of numbering system to each language.
*
* @deprecated Use {@link NumberingSystemLocaleListFragment} instead.
*/
@Deprecated
public class NumberingPreferencesFragment extends DashboardFragment {
/** Initializes variables. */
@VisibleForTesting
String initTitle() {

View File

@@ -0,0 +1,82 @@
/*
* Copyright (C) 2024 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.regionalpreferences;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import androidx.annotation.NonNull;
import com.android.internal.app.LocaleHelper;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settingslib.core.AbstractPreferenceController;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
/** Provides options of numbering system to each language. */
public class NumberingSystemFormatSelectionFragment extends DashboardFragment {
@Override
public void onCreate(@NonNull Bundle icicle) {
super.onCreate(icicle);
getActivity().setTitle(initTitle());
}
/**
* Get a list of {@link AbstractPreferenceController} for this fragment.
*/
@Override
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
NumberingSystemItemController controller =
new NumberingSystemItemController(context, getArguments());
controller.setParentFragment(this);
List<AbstractPreferenceController> listControllers = new ArrayList<>();
listControllers.add(controller);
return listControllers;
}
@Override
protected int getPreferenceScreenResId() {
return R.xml.regional_preference_numbering_system_page;
}
@Override
protected String getLogTag() {
return NumberingSystemFormatSelectionFragment.class.getSimpleName();
}
@Override
public int getMetricsCategory() {
return SettingsEnums.NUMBERING_SYSTEM_NUMBER_FORMAT_SELECTION_PREFERENCE;
}
private String initTitle() {
String selectedLanguage = getArguments().getString(
NumberingSystemItemController.KEY_SELECTED_LANGUAGE, "");
if (selectedLanguage.isEmpty()) {
Log.w(getLogTag(), "No selected language.");
return "";
}
Locale locale = Locale.forLanguageTag(selectedLanguage);
return LocaleHelper.getDisplayName(locale.stripExtensions(), locale, true);
}
}

View File

@@ -34,6 +34,7 @@ import com.android.internal.app.LocaleStore;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.flags.Flags;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.widget.SelectorWithWidgetPreference;
@@ -158,10 +159,15 @@ public class NumberingSystemItemController extends BasePreferenceController {
extra.putString(RegionalPreferencesEntriesFragment.ARG_KEY_REGIONAL_PREFERENCE,
ARG_VALUE_NUMBERING_SYSTEM_SELECT);
extra.putString(KEY_SELECTED_LANGUAGE, selectedLanguage);
String destinationFragment = NumberingPreferencesFragment.class.getName();
if (Flags.regionalPreferencesApiEnabled()) {
destinationFragment = NumberingSystemFormatSelectionFragment.class.getName();
}
new SubSettingLauncher(preference.getContext())
.setDestination(NumberingPreferencesFragment.class.getName())
.setDestination(destinationFragment)
.setSourceMetricsCategory(
SettingsEnums.NUMBERING_SYSTEM_LANGUAGE_SELECTION_PREFERENCE)
SettingsEnums.NUMBERING_SYSTEM_LANGUAGE_SELECTION_PREFERENCE)
.setArguments(extra)
.launch();
}

View File

@@ -0,0 +1,107 @@
/*
* Copyright (C) 2024 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.regionalpreferences;
import static android.provider.Settings.ACTION_NUMBERING_SYSTEM_SETTINGS;
import android.app.Activity;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.Bundle;
import android.os.LocaleList;
import androidx.annotation.NonNull;
import com.android.internal.app.LocaleStore;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settingslib.core.AbstractPreferenceController;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
/** Provides locale list for numbering system settings. */
public class NumberingSystemLocaleListFragment extends DashboardFragment {
@Override
public void onCreate(@NonNull Bundle icicle) {
super.onCreate(icicle);
if (isEmptyNumberingSystemLocale()) {
getActivity().setResult(Activity.RESULT_CANCELED);
finish();
}
if (getIntent().getAction().equals(ACTION_NUMBERING_SYSTEM_SETTINGS)) {
// TODO: Generically log action.
}
getActivity().setTitle(R.string.numbers_preferences_title);
getActivity().setResult(Activity.RESULT_OK);
}
/**
* Get a list of {@link AbstractPreferenceController} for this fragment.
*/
@Override
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
NumberingSystemItemController controller =
new NumberingSystemItemController(context, getExtraData());
controller.setParentFragment(this);
List<AbstractPreferenceController> listControllers = new ArrayList<>();
listControllers.add(controller);
return listControllers;
}
@Override
protected int getPreferenceScreenResId() {
return R.xml.regional_preference_numbering_system_page;
}
@Override
protected String getLogTag() {
return NumberingSystemLocaleListFragment.class.getSimpleName();
}
@Override
public int getMetricsCategory() {
return SettingsEnums.NUMBERING_SYSTEM_LANGUAGE_SELECTION_PREFERENCE;
}
private static boolean isEmptyNumberingSystemLocale() {
LocaleList localeList = LocaleList.getDefault();
Set<Locale> localesHasNumberingSystems = new HashSet<>();
for (int i = 0; i < localeList.size(); i++) {
Locale locale = localeList.get(i);
LocaleStore.LocaleInfo localeInfo = LocaleStore.getLocaleInfo(locale);
if (localeInfo.hasNumberingSystems()) {
localesHasNumberingSystems.add(locale);
}
}
return localesHasNumberingSystems.isEmpty();
}
private static Bundle getExtraData() {
Bundle extra = new Bundle();
extra.putString(RegionalPreferencesEntriesFragment.ARG_KEY_REGIONAL_PREFERENCE,
NumberingSystemItemController.ARG_VALUE_LANGUAGE_SELECT);
return extra;
}
}