Merge "[Update] Expose the regional preferences pages" into main
This commit is contained in:
@@ -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"
|
||||
|
@@ -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"/>
|
||||
|
@@ -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 */ }
|
||||
|
@@ -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(),
|
||||
|
@@ -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() {
|
||||
|
@@ -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.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();
|
||||
}
|
||||
|
@@ -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