diff --git a/res/values/strings.xml b/res/values/strings.xml index 883147a1783..dc81ccf51d9 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -4514,6 +4514,8 @@ Languages & input Languages + + Language & region Keyboard diff --git a/res/xml/language_and_region_settings.xml b/res/xml/language_and_region_settings.xml new file mode 100644 index 00000000000..5626f2206e8 --- /dev/null +++ b/res/xml/language_and_region_settings.xml @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/xml/language_settings.xml b/res/xml/language_settings.xml index 44a195c51f0..eccbbc178ca 100644 --- a/res/xml/language_settings.xml +++ b/res/xml/language_settings.xml @@ -49,72 +49,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - @@ -136,11 +70,4 @@ android:fragment="com.android.settings.tts.TextToSpeechSettings" settings:searchable="false"/> - - diff --git a/res/xml/system_dashboard_fragment.xml b/res/xml/system_dashboard_fragment.xml index 83cdf64fc00..97650eec1a8 100644 --- a/res/xml/system_dashboard_fragment.xml +++ b/res/xml/system_dashboard_fragment.xml @@ -29,6 +29,15 @@ android:fragment="com.android.settings.language.LanguageSettings" settings:controller="com.android.settings.language.LanguagePreferenceController"/> + + createPreferenceControllers(Context context) { + return buildPreferenceControllers(context, getSettingsLifecycle()); + } + + private static List buildPreferenceControllers( + @NonNull Context context, @Nullable Lifecycle lifecycle) { + final List controllers = new ArrayList<>(); + + final DefaultVoiceInputPreferenceController defaultVoiceInputPreferenceController = + new DefaultVoiceInputPreferenceController(context, lifecycle); + final TtsPreferenceController ttsPreferenceController = + new TtsPreferenceController(context, KEY_TEXT_TO_SPEECH); + final OnDeviceRecognitionPreferenceController onDeviceRecognitionPreferenceController = + new OnDeviceRecognitionPreferenceController(context, KEY_ON_DEVICE_RECOGNITION); + + controllers.add(defaultVoiceInputPreferenceController); + controllers.add(ttsPreferenceController); + List speechCategoryChildren = new ArrayList<>( + List.of(defaultVoiceInputPreferenceController, ttsPreferenceController)); + + if (onDeviceRecognitionPreferenceController.isAvailable()) { + controllers.add(onDeviceRecognitionPreferenceController); + speechCategoryChildren.add(onDeviceRecognitionPreferenceController); + } + + controllers.add(new PreferenceCategoryController(context, KEY_SPEECH_CATEGORY) + .setChildren(speechCategoryChildren)); + + return controllers; + } + + public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = + new BaseSearchIndexProvider(R.xml.language_and_region_settings) { + + @Override + @NonNull + public List createPreferenceControllers( + @NonNull Context context) { + return buildPreferenceControllers(context, null); + } + + @Override + protected boolean isPageSearchEnabled(Context context) { + if (Flags.regionalPreferencesApiEnabled()) { + return true; + } + return false; + } + }; +} diff --git a/src/com/android/settings/language/LanguagePreferenceController.java b/src/com/android/settings/language/LanguagePreferenceController.java index 84624a2bf30..90aaec42d44 100644 --- a/src/com/android/settings/language/LanguagePreferenceController.java +++ b/src/com/android/settings/language/LanguagePreferenceController.java @@ -22,6 +22,7 @@ import android.content.pm.PackageManager; import com.android.settings.Settings; import com.android.settings.core.BasePreferenceController; +import com.android.settings.flags.Flags; /** * This is a display controller for new language activity entry. @@ -34,6 +35,10 @@ public class LanguagePreferenceController extends BasePreferenceController { @Override public int getAvailabilityStatus() { + if (Flags.regionalPreferencesApiEnabled()) { + setActivityEnabled(mContext, Settings.LanguageSettingsActivity.class, false); + return CONDITIONALLY_UNAVAILABLE; + } setActivityEnabled(mContext, Settings.LanguageSettingsActivity.class, true); return AVAILABLE; } diff --git a/src/com/android/settings/language/LanguageSettings.java b/src/com/android/settings/language/LanguageSettings.java index d992ff27bc9..58df05307f0 100644 --- a/src/com/android/settings/language/LanguageSettings.java +++ b/src/com/android/settings/language/LanguageSettings.java @@ -25,6 +25,7 @@ import androidx.annotation.Nullable; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; +import com.android.settings.flags.Flags; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.widget.PreferenceCategoryController; import com.android.settingslib.core.AbstractPreferenceController; @@ -116,6 +117,9 @@ public class LanguageSettings extends DashboardFragment { } @Override protected boolean isPageSearchEnabled(Context context) { + if (Flags.regionalPreferencesApiEnabled()) { + return false; + } return true; } }; diff --git a/src/com/android/settings/regionalpreferences/MeasurementSystemItemFragment.java b/src/com/android/settings/regionalpreferences/MeasurementSystemItemFragment.java index 9f15cf4ab36..231a34e6afd 100644 --- a/src/com/android/settings/regionalpreferences/MeasurementSystemItemFragment.java +++ b/src/com/android/settings/regionalpreferences/MeasurementSystemItemFragment.java @@ -63,7 +63,7 @@ public class MeasurementSystemItemFragment extends DashboardFragment { new BaseSearchIndexProvider(R.xml.regional_preferences_measurement_system) { @Override protected boolean isPageSearchEnabled(Context context) { - if (Flags.regionalPreferencesApiEnabled()) { + if (!Flags.regionalPreferencesApiEnabled()) { return false; } return true; diff --git a/tests/unit/src/com/android/settings/language/LanguagePreferenceControllerTest.java b/tests/unit/src/com/android/settings/language/LanguagePreferenceControllerTest.java index 656fa272ce2..2209355e966 100644 --- a/tests/unit/src/com/android/settings/language/LanguagePreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/language/LanguagePreferenceControllerTest.java @@ -21,18 +21,24 @@ import static org.junit.Assert.assertTrue; import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; +import android.platform.test.annotations.DisableFlags; +import android.platform.test.flag.junit.SetFlagsRule; import androidx.test.core.app.ApplicationProvider; import com.android.settings.Settings; +import com.android.settings.flags.Flags; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; public class LanguagePreferenceControllerTest { private Context mContext; private LanguagePreferenceController mController; + @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); + @Before public void setup() { mContext = ApplicationProvider.getApplicationContext(); @@ -40,6 +46,7 @@ public class LanguagePreferenceControllerTest { } @Test + @DisableFlags(Flags.FLAG_REGIONAL_PREFERENCES_API_ENABLED) public void getAvailabilityStatus_featureFlagOff_LanguageSettingsActivitydisabled() { mController.getAvailabilityStatus();