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

Commit 34ea3dc0 authored by danielwbhuang's avatar danielwbhuang
Browse files

Use flag to control the hierarchy tree changes

This change includes these:
1. App languages
2.Regional preferences
2-1. Temperature
2-2. First day of week
2-3. Numbering system
3. Terms of address

Bug: 379962955
Flag: com.android.settings.flags.regional_preferences_api_enabled
Test: check hsv and atest TermsOfAddressCategoryControllerTest,
FirstDayOfWeekControllerTest, NumberingSystemControllerTest, TemperatureUnitControllerTest
Change-Id: I9ae376f24ac4d1cf9a186ad3d77b539ac4b83642

Change-Id: I1b2f508f618fba94e67b5f8b102620837a6dda1c
parent f70d273d
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -387,12 +387,6 @@
    <!-- Title for the locale picker category. [CHAR LIMIT=50]-->
    <string name="locale_picker_category_title">Preferred Language</string>
    <!-- Title for the Apps' locale menu entry [CHAR LIMIT=50]-->
    <string name="app_locales_picker_menu_title">App languages</string>
    <!-- Summary for the app's locale picker activity. [CHAR LIMIT=50]-->
    <string name="app_locale_picker_summary">Set the language for each app</string>
    <!-- Title for the App's locale picker activity. [CHAR LIMIT=50]-->
    <string name="app_locale_picker_title">App language</string>
@@ -459,6 +453,14 @@
    <string name="regional_preferences_main_page_sub_title">Let apps know your regional preferences so they can personalize your experience.</string>
    <!-- The subtitle of option's page of regional preferences for Temperature units, Calendar and First day of week. [CHAR LIMIT=NONE] -->
    <string name="regional_preferences_option_page_sub_title">Apps will use your regional preferences where possible.</string>
    <!-- Category for more language settings. [CHAR LIMIT=NONE]-->
    <string name="more_language_settings_category">More language settings</string>
    <!-- Title for the Apps' locale menu entry [CHAR LIMIT=50]-->
    <string name="app_locales_picker_menu_title">App languages</string>
    <!-- Summary for the app's locale picker activity. [CHAR LIMIT=50]-->
    <string name="app_locale_picker_summary">Set the language for each app</string>
    <!-- Category for the regional preferences. [CHAR LIMIT=NONE]-->
    <string name="regional_preferences_category_title">Regional preferences</string>
    <!-- The title of menu entry of Temperature unit preference. [CHAR LIMIT=50] -->
    <string name="temperature_preferences_title">Temperature</string>
    <!-- The title of the  menu entry of First day of week preference. [CHAR LIMIT=50]  -->

res/xml/language_and_input.xml

deleted100644 → 0
+0 −139
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
  Copyright (C) 2016 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_settings">
    <PreferenceCategory
        android:key="languages_category"
        android:title="@string/locale_picker_category_title">
        <Preference
            android:key="phone_language"
            android:title="@string/phone_language"
            android:fragment="com.android.settings.localepicker.LocaleListEditor"
            settings:controller="com.android.settings.language.PhoneLanguagePreferenceController" />

        <Preference
            android:key="apps_language"
            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.ManageAppLocalePreferenceController">
            <extra
                android:name="classname"
                android:value="com.android.settings.applications.appinfo.AppLocaleDetails" />
        </Preference>

        <Preference
            android:key="regional_preferences"
            android:title="@string/regional_preferences_title"
            android:summary="@string/regional_preferences_summary"
            android:fragment="com.android.settings.regionalpreferences.RegionalPreferencesEntriesFragment"
            settings:controller="com.android.settings.regionalpreferences.RegionalPreferencesController">
        </Preference>

    </PreferenceCategory>

    <PreferenceCategory
        android:key="keyboards_category"
        android:title="@string/keyboard_and_input_methods_category">
        <Preference
            android:key="virtual_keyboard_pref"
            android:title="@string/virtual_keyboard_category"
            android:fragment="com.android.settings.inputmethod.AvailableVirtualKeyboardFragment"
            settings:keywords="@string/keywords_virtual_keyboard"/>

        <Preference
            android:key="physical_keyboard_pref"
            android:title="@string/physical_keyboard_title"
            android:summary="@string/summary_placeholder"
            android:fragment="com.android.settings.inputmethod.PhysicalKeyboardFragment"/>
    </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="tts_settings_summary"
            android:title="@string/tts_settings_title"
            android:fragment="com.android.settings.tts.TextToSpeechSettings"
            settings:searchable="false"/>
    </PreferenceCategory>

    <PreferenceCategory
        android:key="input_assistance_category"
        android:title="@string/input_assistance">
        <!-- Spell checker preference title, summary and fragment will be set programmatically. -->
        <!-- Note: Mark this as persistent="false" to remove unnecessarily saved shared preference.
             See: InputMethodAndSubtypeUtil.removeUnnecessaryNonPersistentPreference. -->
        <Preference
            android:key="spellcheckers_settings"
            android:title="@string/spellcheckers_settings_title"
            android:persistent="false"
            android:fragment="com.android.settings.inputmethod.SpellCheckersSettings" />

        <!-- User dictionary preference title and fragment will be set programmatically. -->
        <Preference
            android:key="key_user_dictionary_settings"
            android:title="@string/user_dict_settings_title"
            android:summary="@string/user_dict_settings_summary"
            android:fragment="com.android.settings.inputmethod.UserDictionaryList"
            settings:controller="com.android.settings.language.UserDictionaryPreferenceController" />
    </PreferenceCategory>

    <PreferenceCategory
        android:key="pointer_category"
        android:layout="@layout/preference_category_no_label">
        <com.android.settings.PointerSpeedPreference
            android:key="pointer_speed"
            android:title="@string/pointer_speed"
            android:dialogTitle="@string/pointer_speed" />
    </PreferenceCategory>

    <SwitchPreferenceCompat
        android:key="vibrate_input_devices"
        android:title="@string/vibrate_input_devices"
        android:summary="@string/vibrate_input_devices_summary"
        settings:controller="com.android.settings.inputmethod.GameControllerPreferenceController" />

    <com.android.settings.widget.WorkOnlyCategory
        android:key="language_and_input_for_work_category"
        android:title="@string/language_and_input_for_work_category_title"
        settings:searchable="false">

        <Preference
            android:key="spellcheckers_settings_for_work_pref"
            android:title="@string/spellcheckers_settings_for_work_title"
            android:fragment="com.android.settings.inputmethod.SpellCheckersSettings"
            settings:forWork="true"
            settings:controller="com.android.settings.core.WorkPreferenceController" />

        <Preference
            android:key="user_dictionary_settings_for_work_pref"
            android:title="@string/user_dict_settings_for_work_title"
            android:fragment="com.android.settings.inputmethod.UserDictionaryList"
            settings:forWork="true"
            settings:controller="com.android.settings.inputmethod.SpellCheckerForWorkPreferenceController" />
    </com.android.settings.widget.WorkOnlyCategory>

</PreferenceScreen>
+69 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@
            android:title="@string/system_language"
            android:fragment="com.android.settings.localepicker.LocaleListEditor"
            settings:controller="com.android.settings.language.PhoneLanguagePreferenceController" />

        <Preference
            android:key="apps_language"
            android:title="@string/app_locales_picker_menu_title"
@@ -45,7 +46,68 @@
            android:summary="@string/regional_preferences_summary"
            android:fragment="com.android.settings.regionalpreferences.RegionalPreferencesEntriesFragment"
            settings:controller="com.android.settings.regionalpreferences.RegionalPreferencesController" />
    </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.NewManageAppLocalePreferenceController">
            <extra
                android:name="classname"
                android:value="com.android.settings.applications.appinfo.AppLocaleDetails" />
        </Preference>

        <Preference
            android:key="terms_of_address_in_more_language_settings"
            android:title="@string/terms_of_address_title"
            android:summary="@string/terms_of_address_summary"
            android:fragment="com.android.settings.localepicker.TermsOfAddressFragment"
            settings:controller="com.android.settings.localepicker.NewTermsOfAddressController"/>
    </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="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
@@ -69,4 +131,11 @@
            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>
+42 −0
Original line number Diff line number Diff line
/*
 * 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.applications.appinfo;

import android.content.Context;

import androidx.annotation.NonNull;

import com.android.settings.core.BasePreferenceController;
import com.android.settings.flags.Flags;

/**
 * A controller to update current locale information of application
 * and a entry to launch {@link ManageApplications}.
 */
public class ManageAppLocalePreferenceController extends BasePreferenceController {
    public ManageAppLocalePreferenceController(@NonNull Context context, @NonNull String key) {
        super(context, key);
    }

    @Override
    public int getAvailabilityStatus() {
        if (!Flags.regionalPreferencesApiEnabled()) {
            return AVAILABLE;
        }
        return CONDITIONALLY_UNAVAILABLE;
    }
}
+43 −0
Original line number Diff line number Diff line
/*
 * 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.applications.appinfo;

import android.content.Context;

import androidx.annotation.NonNull;

import com.android.settings.core.BasePreferenceController;
import com.android.settings.flags.Flags;

/**
 * A controller to update current locale information of application
 * and a entry to launch {@link ManageApplications}.
 */
public class NewManageAppLocalePreferenceController extends BasePreferenceController {

    public NewManageAppLocalePreferenceController(@NonNull Context context, @NonNull String key) {
        super(context, key);
    }

    @Override
    public int getAvailabilityStatus() {
        if (Flags.regionalPreferencesApiEnabled()) {
            return AVAILABLE;
        }
        return CONDITIONALLY_UNAVAILABLE;
    }
}
Loading