Merge "[Update] Expose the regional preferences pages" into main
This commit is contained in:
@@ -1117,6 +1117,54 @@
|
|||||||
android:value="true"/>
|
android:value="true"/>
|
||||||
</activity>
|
</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
|
<activity
|
||||||
android:name=".Settings$RegionalPreferencesActivity"
|
android:name=".Settings$RegionalPreferencesActivity"
|
||||||
android:label="@string/regional_preferences_title"
|
android:label="@string/regional_preferences_title"
|
||||||
|
@@ -109,7 +109,7 @@
|
|||||||
android:title="@string/numbers_preferences_title"
|
android:title="@string/numbers_preferences_title"
|
||||||
android:summary="@string/default_string_of_regional_preference"
|
android:summary="@string/default_string_of_regional_preference"
|
||||||
settings:controller="com.android.settings.regionalpreferences.NewNumberingSystemController"
|
settings:controller="com.android.settings.regionalpreferences.NewNumberingSystemController"
|
||||||
settings:fragment="com.android.settings.regionalpreferences.NumberingPreferencesFragment">
|
settings:fragment="com.android.settings.regionalpreferences.NumberingSystemLocaleListFragment">
|
||||||
<extra
|
<extra
|
||||||
android:name="arg_key_regional_preference"
|
android:name="arg_key_regional_preference"
|
||||||
android:value="arg_value_language_select"/>
|
android:value="arg_value_language_select"/>
|
||||||
|
@@ -100,9 +100,12 @@ public class Settings extends SettingsActivity {
|
|||||||
public static class LocalePickerActivity extends SettingsActivity { /* empty */ }
|
public static class LocalePickerActivity extends SettingsActivity { /* empty */ }
|
||||||
public static class LanguageSettingsActivity extends SettingsActivity { /* empty */ }
|
public static class LanguageSettingsActivity extends SettingsActivity { /* empty */ }
|
||||||
/** Activity for the regional preferences settings. */
|
/** Activity for the regional preferences settings. */
|
||||||
|
public static class RegionSettingsActivity extends SettingsActivity { /* empty */ }
|
||||||
public static class RegionalPreferencesActivity extends SettingsActivity { /* empty */ }
|
public static class RegionalPreferencesActivity extends SettingsActivity { /* empty */ }
|
||||||
public static class TemperatureUnitSettingsActivity extends SettingsActivity { /* empty */ }
|
public static class TemperatureUnitSettingsActivity extends SettingsActivity { /* empty */ }
|
||||||
public static class FirstDayOfWeekSettingsActivity 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 */ }
|
public static class KeyboardSettingsActivity extends SettingsActivity { /* empty */ }
|
||||||
/** Activity for the navigation mode settings. */
|
/** Activity for the navigation mode settings. */
|
||||||
public static class NavigationModeSettingsActivity extends SettingsActivity { /* empty */ }
|
public static class NavigationModeSettingsActivity extends SettingsActivity { /* empty */ }
|
||||||
|
@@ -183,6 +183,9 @@ import com.android.settings.privatespace.delete.PrivateSpaceDeleteFragment;
|
|||||||
import com.android.settings.privatespace.delete.PrivateSpaceDeletionProgressFragment;
|
import com.android.settings.privatespace.delete.PrivateSpaceDeletionProgressFragment;
|
||||||
import com.android.settings.privatespace.onelock.PrivateSpaceBiometricSettings;
|
import com.android.settings.privatespace.onelock.PrivateSpaceBiometricSettings;
|
||||||
import com.android.settings.regionalpreferences.FirstDayOfWeekItemFragment;
|
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.RegionalPreferencesEntriesFragment;
|
||||||
import com.android.settings.regionalpreferences.TemperatureUnitFragment;
|
import com.android.settings.regionalpreferences.TemperatureUnitFragment;
|
||||||
import com.android.settings.safetycenter.MoreSecurityPrivacyFragment;
|
import com.android.settings.safetycenter.MoreSecurityPrivacyFragment;
|
||||||
@@ -396,9 +399,12 @@ public class SettingsGateway {
|
|||||||
ColorAndMotionFragment.class.getName(),
|
ColorAndMotionFragment.class.getName(),
|
||||||
ColorContrastFragment.class.getName(),
|
ColorContrastFragment.class.getName(),
|
||||||
LongBackgroundTasksDetails.class.getName(),
|
LongBackgroundTasksDetails.class.getName(),
|
||||||
|
RegionPickerFragment.class.getName(),
|
||||||
RegionalPreferencesEntriesFragment.class.getName(),
|
RegionalPreferencesEntriesFragment.class.getName(),
|
||||||
TemperatureUnitFragment.class.getName(),
|
TemperatureUnitFragment.class.getName(),
|
||||||
FirstDayOfWeekItemFragment.class.getName(),
|
FirstDayOfWeekItemFragment.class.getName(),
|
||||||
|
MeasurementSystemItemFragment.class.getName(),
|
||||||
|
NumberingSystemLocaleListFragment.class.getName(),
|
||||||
BatteryInfoFragment.class.getName(),
|
BatteryInfoFragment.class.getName(),
|
||||||
UserAspectRatioDetails.class.getName(),
|
UserAspectRatioDetails.class.getName(),
|
||||||
ScreenTimeoutSettings.class.getName(),
|
ScreenTimeoutSettings.class.getName(),
|
||||||
|
@@ -32,8 +32,14 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
/** Provides options of numbering system to each language. */
|
/**
|
||||||
|
* Provides options of numbering system to each language.
|
||||||
|
*
|
||||||
|
* @deprecated Use {@link NumberingSystemLocaleListFragment} instead.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public class NumberingPreferencesFragment extends DashboardFragment {
|
public class NumberingPreferencesFragment extends DashboardFragment {
|
||||||
|
|
||||||
/** Initializes variables. */
|
/** Initializes variables. */
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
String initTitle() {
|
String initTitle() {
|
||||||
|
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
@@ -34,6 +34,7 @@ import com.android.internal.app.LocaleStore;
|
|||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
import com.android.settings.core.SubSettingLauncher;
|
import com.android.settings.core.SubSettingLauncher;
|
||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
|
import com.android.settings.flags.Flags;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.widget.SelectorWithWidgetPreference;
|
import com.android.settingslib.widget.SelectorWithWidgetPreference;
|
||||||
@@ -158,8 +159,13 @@ public class NumberingSystemItemController extends BasePreferenceController {
|
|||||||
extra.putString(RegionalPreferencesEntriesFragment.ARG_KEY_REGIONAL_PREFERENCE,
|
extra.putString(RegionalPreferencesEntriesFragment.ARG_KEY_REGIONAL_PREFERENCE,
|
||||||
ARG_VALUE_NUMBERING_SYSTEM_SELECT);
|
ARG_VALUE_NUMBERING_SYSTEM_SELECT);
|
||||||
extra.putString(KEY_SELECTED_LANGUAGE, selectedLanguage);
|
extra.putString(KEY_SELECTED_LANGUAGE, selectedLanguage);
|
||||||
|
|
||||||
|
String destinationFragment = NumberingPreferencesFragment.class.getName();
|
||||||
|
if (Flags.regionalPreferencesApiEnabled()) {
|
||||||
|
destinationFragment = NumberingSystemFormatSelectionFragment.class.getName();
|
||||||
|
}
|
||||||
new SubSettingLauncher(preference.getContext())
|
new SubSettingLauncher(preference.getContext())
|
||||||
.setDestination(NumberingPreferencesFragment.class.getName())
|
.setDestination(destinationFragment)
|
||||||
.setSourceMetricsCategory(
|
.setSourceMetricsCategory(
|
||||||
SettingsEnums.NUMBERING_SYSTEM_LANGUAGE_SELECTION_PREFERENCE)
|
SettingsEnums.NUMBERING_SYSTEM_LANGUAGE_SELECTION_PREFERENCE)
|
||||||
.setArguments(extra)
|
.setArguments(extra)
|
||||||
|
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user