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

Commit f70abd26 authored by danielwbhuang's avatar danielwbhuang
Browse files

Create language and region settings page

1. Use flag to control the UI migration
2. Create language_and_region_settings.xml for new UI migration.

Bug: 379962955
Flag: com.android.settings.flags.regional_preferences_api_enabled
Test: check hsv and atest LanguagePreferenceControllerTest
Change-Id: If8d2303a2a3061231e69d1a45ad432c061da3545
parent 626017d1
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -4514,6 +4514,8 @@
    <string name="language_settings">Languages&#160;&amp; input</string>
    <!-- Title of setting on main settings screen.  This item will take the user to the screen to tweak settings related to languages -->
    <string name="languages_settings">Languages</string>
    <!-- Title of setting on main settings screen.  This item will take the user to the screen to tweak settings related to language and region-->
    <string name="language_and_region_settings">Language &amp; region</string>
    <!-- Title of setting on main settings screen.  This item will take the user to the screen to tweak settings related to keyboards -->
    <string name="keyboard_settings">Keyboard</string>
    <!-- Text displayed when user has restriction DISALLOW_CONFIG_LOCALE [CHAR LIMIT=NONE]-->
+127 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
  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.
  -->

<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:settings="http://schemas.android.com/apk/res-auto"
    android:title="@string/language_and_region_settings"
    android:key="language_and_region_settings">
  <PreferenceCategory
      android:key="languages_category"
      android:title="@string/locale_picker_category_title">
    <Preference
        android:key="phone_language"
        android:title="@string/system_language"
        android:fragment="com.android.settings.localepicker.LocaleListEditor"
        settings:controller="com.android.settings.language.PhoneLanguagePreferenceController" />
  </PreferenceCategory>

  <PreferenceCategory
      android:key="more_language_settings_category"
      android:title="@string/more_language_settings_category"
      settings:controller="com.android.settings.language.MoreLanguagesSettingsCategoryController">
    <Preference
        android:key="apps_language_in_more_language_settings"
        android:title="@string/app_locales_picker_menu_title"
        android:summary="@string/app_locale_picker_summary"
        android:fragment="com.android.settings.applications.manageapplications.ManageApplications"
        settings:controller="com.android.settings.applications.appinfo.NewAppsLocalePreferenceController">
      <extra
          android:name="classname"
          android:value="com.android.settings.applications.appinfo.AppLocaleDetails" />
    </Preference>
  </PreferenceCategory>

  <PreferenceCategory
      android:key="regional_preferences_category"
      android:title="@string/regional_preferences_category_title"
      settings:controller="com.android.settings.regionalpreferences.RegionalPreferencesCategoryController">

    <Preference
        android:key="temperature_preference"
        android:title="@string/temperature_preferences_title"
        android:summary="@string/default_string_of_regional_preference"
        settings:controller="com.android.settings.regionalpreferences.NewTemperatureUnitController"
        settings:fragment="com.android.settings.regionalpreferences.TemperatureUnitFragment">
      <extra
          android:name="arg_key_regional_preference"
          android:value="mu"/>
    </Preference>

    <Preference
        android:key="key_measurement_system"
        android:title="@string/measurement_system_preferences_title"
        android:summary="@string/default_string_of_regional_preference"
        settings:controller="com.android.settings.regionalpreferences.MeasurementSystemController"
        settings:fragment="com.android.settings.regionalpreferences.MeasurementSystemItemFragment">
      <extra
          android:name="arg_key_regional_preference"
          android:value="ms"/>
    </Preference>

    <Preference
        android:key="first_day_of_week_preference"
        android:title="@string/first_day_of_week_preferences_title"
        android:summary="@string/default_string_of_regional_preference"
        settings:controller="com.android.settings.regionalpreferences.NewFirstDayOfWeekController"
        settings:fragment="com.android.settings.regionalpreferences.FirstDayOfWeekItemFragment">
      <extra
          android:name="arg_key_regional_preference"
          android:value="fw"/>
    </Preference>

    <Preference
        android:key="numbering_system_preference"
        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">
      <extra
          android:name="arg_key_regional_preference"
          android:value="arg_value_language_select"/>
    </Preference>
  </PreferenceCategory>

  <PreferenceCategory
      android:key="speech_category"
      android:title="@string/speech_category_title">
    <com.android.settings.widget.GearPreference
        android:key="voice_input_settings"
        android:title="@string/voice_input_settings_title"
        android:fragment="com.android.settings.language.DefaultVoiceInputPicker" />

    <Preference
        android:key="on_device_recognition_settings"
        android:title="@string/on_device_recognition_settings_title"
        android:summary="@string/on_device_recognition_settings_summary"
        settings:controller=
            "com.android.settings.language.OnDeviceRecognitionPreferenceController" />

    <Preference
        android:key="tts_settings_summary"
        android:title="@string/tts_settings_title"
        android:fragment="com.android.settings.tts.TextToSpeechSettings"
        settings:searchable="false"/>
  </PreferenceCategory>

  <com.android.settingslib.widget.FooterPreference
      android:key="new_regional_pref_footer"
      android:title="@string/title_regional_pref_footer"
      android:selectable="false"
      settings:searchable="false"
      settings:controller="com.android.settings.regionalpreferences.NewRegionalFooterPreferenceController"/>
</PreferenceScreen>
+0 −73
Original line number Diff line number Diff line
@@ -49,72 +49,6 @@

    </PreferenceCategory>

    <PreferenceCategory
        android:key="more_language_settings_category"
        android:title="@string/more_language_settings_category"
        settings:controller="com.android.settings.language.MoreLanguagesSettingsCategoryController">
        <Preference
            android:key="apps_language_in_more_language_settings"
            android:title="@string/app_locales_picker_menu_title"
            android:summary="@string/app_locale_picker_summary"
            android:fragment="com.android.settings.applications.manageapplications.ManageApplications"
            settings:controller="com.android.settings.applications.appinfo.NewAppsLocalePreferenceController">
            <extra
                android:name="classname"
                android:value="com.android.settings.applications.appinfo.AppLocaleDetails" />
        </Preference>
    </PreferenceCategory>

    <PreferenceCategory
        android:key="regional_preferences_category"
        android:title="@string/regional_preferences_category_title"
        settings:controller="com.android.settings.regionalpreferences.RegionalPreferencesCategoryController">

        <Preference
            android:key="temperature_preference"
            android:title="@string/temperature_preferences_title"
            android:summary="@string/default_string_of_regional_preference"
            settings:controller="com.android.settings.regionalpreferences.NewTemperatureUnitController"
            settings:fragment="com.android.settings.regionalpreferences.TemperatureUnitFragment">
            <extra
                android:name="arg_key_regional_preference"
                android:value="mu"/>
        </Preference>

        <Preference
            android:key="key_measurement_system"
            android:title="@string/measurement_system_preferences_title"
            android:summary="@string/default_string_of_regional_preference"
            settings:controller="com.android.settings.regionalpreferences.MeasurementSystemController"
            settings:fragment="com.android.settings.regionalpreferences.MeasurementSystemItemFragment">
            <extra
                android:name="arg_key_regional_preference"
                android:value="ms"/>
        </Preference>

        <Preference
            android:key="first_day_of_week_preference"
            android:title="@string/first_day_of_week_preferences_title"
            android:summary="@string/default_string_of_regional_preference"
            settings:controller="com.android.settings.regionalpreferences.NewFirstDayOfWeekController"
            settings:fragment="com.android.settings.regionalpreferences.FirstDayOfWeekItemFragment">
            <extra
                android:name="arg_key_regional_preference"
                android:value="fw"/>
        </Preference>

        <Preference
            android:key="numbering_system_preference"
            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">
            <extra
                android:name="arg_key_regional_preference"
                android:value="arg_value_language_select"/>
        </Preference>
    </PreferenceCategory>

    <PreferenceCategory
        android:key="speech_category"
        android:title="@string/speech_category_title">
@@ -136,11 +70,4 @@
            android:fragment="com.android.settings.tts.TextToSpeechSettings"
            settings:searchable="false"/>
    </PreferenceCategory>

    <com.android.settingslib.widget.FooterPreference
        android:key="new_regional_pref_footer"
        android:title="@string/title_regional_pref_footer"
        android:selectable="false"
        settings:searchable="false"
        settings:controller="com.android.settings.regionalpreferences.NewRegionalFooterPreferenceController"/>
</PreferenceScreen>
+9 −0
Original line number Diff line number Diff line
@@ -29,6 +29,15 @@
        android:fragment="com.android.settings.language.LanguageSettings"
        settings:controller="com.android.settings.language.LanguagePreferenceController"/>

    <Preference
        android:key="language_and_region_settings"
        android:title="@string/language_and_region_settings"
        android:summary="@string/languages_setting_summary"
        android:icon="@drawable/ic_settings_languages"
        android:order="-260"
        android:fragment="com.android.settings.language.LanguageAndRegionSettings"
        settings:controller="com.android.settings.language.LanguageAndRegionPreferenceController"/>

    <Preference
        android:key="Keyboard_settings"
        android:title="@string/keyboard_settings"
+6 −1
Original line number Diff line number Diff line
@@ -22,9 +22,12 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.text.TextUtils;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

import com.android.internal.annotations.Initializer;
import com.android.settings.applications.defaultapps.DefaultAppPreferenceController;
import com.android.settingslib.applications.DefaultAppInfo;
import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -43,7 +46,8 @@ public class DefaultVoiceInputPreferenceController extends DefaultAppPreferenceC
    private Preference mPreference;
    private Context mContext;

    public DefaultVoiceInputPreferenceController(Context context, Lifecycle lifecycle) {
    public DefaultVoiceInputPreferenceController(
            @NonNull Context context, @Nullable Lifecycle lifecycle) {
        super(context);
        mContext = context;
        mHelper = new VoiceInputHelper(context);
@@ -65,6 +69,7 @@ public class DefaultVoiceInputPreferenceController extends DefaultAppPreferenceC
    }

    @Override
    @Initializer
    public void displayPreference(PreferenceScreen screen) {
        mScreen = screen;
        mPreference = screen.findPreference(getPreferenceKey());
Loading