Modify App languages entry

1. add a new category
2. move App languages preference to the new category

Bug: 379962955
Flag: com.android.settings.flags.regional_preferences_api_enabled
Test: check hsv and atest ManageApplicationsTest, AppLocalePreferenceControllerTest
Change-Id: Ie6bdcb1899b705cff48ce3be9c0d0b060be8ee72
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4d51512..ffdadf9 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -470,6 +470,8 @@
     <string name="country_selection_title">Region preference</string>
     <!-- Hint text in a search edit box (used to filter long language / country lists) [CHAR LIMIT=25] -->
     <string name="search_language_hint">Type language name</string>
+    <!-- Category for more language settings. [CHAR LIMIT=NONE]-->
+    <string name="more_language_settings_category">More language settings</string>
 
     <!-- Regional Preferences begin -->
     <!-- The title of the menu entry of regional preferences. [CHAR LIMIT=50] -->
diff --git a/res/xml/language_settings.xml b/res/xml/language_settings.xml
index fb79346..f9f423e 100644
--- a/res/xml/language_settings.xml
+++ b/res/xml/language_settings.xml
@@ -28,12 +28,13 @@
             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"
             android:summary="@string/app_locale_picker_summary"
             android:fragment="com.android.settings.applications.manageapplications.ManageApplications"
-            settings:controller="com.android.settings.applications.appinfo.ManageAppLocalePreferenceController">
+            settings:controller="com.android.settings.applications.appinfo.AppsLocalePreferenceController">
             <extra
                 android:name="classname"
                 android:value="com.android.settings.applications.appinfo.AppLocaleDetails" />
@@ -49,6 +50,22 @@
     </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">
diff --git a/src/com/android/settings/applications/appinfo/AppsLocalePreferenceController.java b/src/com/android/settings/applications/appinfo/AppsLocalePreferenceController.java
new file mode 100644
index 0000000..c66ea58
--- /dev/null
+++ b/src/com/android/settings/applications/appinfo/AppsLocalePreferenceController.java
@@ -0,0 +1,42 @@
+/*
+ * 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 AppsLocalePreferenceController extends BasePreferenceController {
+    public AppsLocalePreferenceController(@NonNull Context context, @NonNull String key) {
+        super(context, key);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        if (!Flags.regionalPreferencesApiEnabled()) {
+            return AVAILABLE;
+        }
+        return CONDITIONALLY_UNAVAILABLE;
+    }
+}
diff --git a/src/com/android/settings/applications/appinfo/NewAppsLocalePreferenceController.java b/src/com/android/settings/applications/appinfo/NewAppsLocalePreferenceController.java
new file mode 100644
index 0000000..abd7af8
--- /dev/null
+++ b/src/com/android/settings/applications/appinfo/NewAppsLocalePreferenceController.java
@@ -0,0 +1,44 @@
+/*
+ * 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 NewAppsLocalePreferenceController extends BasePreferenceController {
+
+    public NewAppsLocalePreferenceController(@NonNull Context context, @NonNull String key) {
+        super(context, key);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        // TODO(b/381011808) After feature release, this class may be renamed.
+        if (Flags.regionalPreferencesApiEnabled()) {
+            return AVAILABLE;
+        }
+        return CONDITIONALLY_UNAVAILABLE;
+    }
+}
diff --git a/src/com/android/settings/language/MoreLanguagesSettingsCategoryController.java b/src/com/android/settings/language/MoreLanguagesSettingsCategoryController.java
new file mode 100644
index 0000000..3f2f9d7
--- /dev/null
+++ b/src/com/android/settings/language/MoreLanguagesSettingsCategoryController.java
@@ -0,0 +1,42 @@
+/*
+ * 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.language;
+
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+
+import com.android.settings.flags.Flags;
+import com.android.settings.widget.PreferenceCategoryController;
+
+/**
+ * Controller for the "More language settings" category in the Language & region settings.
+ */
+public class MoreLanguagesSettingsCategoryController extends PreferenceCategoryController {
+
+    public MoreLanguagesSettingsCategoryController(@NonNull Context context, @NonNull String key) {
+        super(context, key);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        if (Flags.regionalPreferencesApiEnabled()) {
+            return AVAILABLE;
+        }
+        return CONDITIONALLY_UNAVAILABLE;
+    }
+}