[Settings] Add a flag to control show new System language picker UI or not
Bug: 394542699 Test: manual Test: atest SettingsRoboTests:com.android.settings.localepicker.LocaleListEditorTest Flag: EXEMPT refactor Change-Id: I694e92cb7f61d208c36cb4b40aa3182cd838d5bb
This commit is contained in:
@@ -44,7 +44,8 @@
|
|||||||
android:textAlignment="textStart"
|
android:textAlignment="textStart"
|
||||||
android:text="@string/add_a_language"
|
android:text="@string/add_a_language"
|
||||||
style="@style/Base.Widget.AppCompat.Button.Borderless"
|
style="@style/Base.Widget.AppCompat.Button.Borderless"
|
||||||
android:textAppearance="?android:attr/textAppearanceListItem"/>
|
android:textAppearance="?android:attr/textAppearanceListItem"
|
||||||
|
android:visibility="gone"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
@@ -31,6 +31,13 @@
|
|||||||
<com.android.settingslib.widget.LayoutPreference
|
<com.android.settingslib.widget.LayoutPreference
|
||||||
android:key="languages_picker"
|
android:key="languages_picker"
|
||||||
android:layout="@layout/locale_order_list" />
|
android:layout="@layout/locale_order_list" />
|
||||||
|
|
||||||
|
<Preference
|
||||||
|
android:key="add_a_language"
|
||||||
|
android:title="@string/add_a_language"
|
||||||
|
android:icon="@drawable/ic_add_24dp"
|
||||||
|
settings:isPreferenceVisible="false"
|
||||||
|
settings:fragment="com.android.settings.localepicker.SystemLocalePickerFragment"/>
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
|
@@ -46,6 +46,7 @@ import android.widget.TextView;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.fragment.app.FragmentManager;
|
import androidx.fragment.app.FragmentManager;
|
||||||
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
@@ -53,6 +54,7 @@ import com.android.internal.app.LocalePicker;
|
|||||||
import com.android.internal.app.LocaleStore;
|
import com.android.internal.app.LocaleStore;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.RestrictedSettingsFragment;
|
import com.android.settings.RestrictedSettingsFragment;
|
||||||
|
import com.android.settings.flags.Flags;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.search.BaseSearchIndexProvider;
|
import com.android.settings.search.BaseSearchIndexProvider;
|
||||||
import com.android.settingslib.search.SearchIndexable;
|
import com.android.settingslib.search.SearchIndexable;
|
||||||
@@ -84,6 +86,7 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View
|
|||||||
private static final String INDEX_KEY_ADD_LANGUAGE = "add_language";
|
private static final String INDEX_KEY_ADD_LANGUAGE = "add_language";
|
||||||
private static final String KEY_LANGUAGES_PICKER = "languages_picker";
|
private static final String KEY_LANGUAGES_PICKER = "languages_picker";
|
||||||
private static final String KEY_CATEGORY_TERMS_OF_ADDRESS = "key_category_terms_of_address";
|
private static final String KEY_CATEGORY_TERMS_OF_ADDRESS = "key_category_terms_of_address";
|
||||||
|
private static final String KEY_ADD_A_LANGUAGE = "add_a_language";
|
||||||
private static final String TAG_DIALOG_CONFIRM_SYSTEM_DEFAULT = "dialog_confirm_system_default";
|
private static final String TAG_DIALOG_CONFIRM_SYSTEM_DEFAULT = "dialog_confirm_system_default";
|
||||||
private static final String TAG_DIALOG_NOT_AVAILABLE = "dialog_not_available_locale";
|
private static final String TAG_DIALOG_NOT_AVAILABLE = "dialog_not_available_locale";
|
||||||
private static final String TAG_DIALOG_ADD_SYSTEM_LOCALE = "dialog_add_system_locale";
|
private static final String TAG_DIALOG_ADD_SYSTEM_LOCALE = "dialog_add_system_locale";
|
||||||
@@ -92,6 +95,7 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View
|
|||||||
private LocaleDragAndDropAdapter mAdapter;
|
private LocaleDragAndDropAdapter mAdapter;
|
||||||
private Menu mMenu;
|
private Menu mMenu;
|
||||||
private View mAddLanguage;
|
private View mAddLanguage;
|
||||||
|
private Preference mAddLanguagePreference;
|
||||||
private boolean mRemoveMode;
|
private boolean mRemoveMode;
|
||||||
private boolean mShowingRemoveDialog;
|
private boolean mShowingRemoveDialog;
|
||||||
private boolean mLocaleAdditionMode = false;
|
private boolean mLocaleAdditionMode = false;
|
||||||
@@ -282,7 +286,11 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View
|
|||||||
private void setRemoveMode(boolean mRemoveMode) {
|
private void setRemoveMode(boolean mRemoveMode) {
|
||||||
this.mRemoveMode = mRemoveMode;
|
this.mRemoveMode = mRemoveMode;
|
||||||
mAdapter.setRemoveMode(mRemoveMode);
|
mAdapter.setRemoveMode(mRemoveMode);
|
||||||
|
if (Flags.settingsExpressiveDesignEnabled()) {
|
||||||
|
mAddLanguagePreference.setVisible(!mRemoveMode);
|
||||||
|
} else {
|
||||||
mAddLanguage.setVisibility(mRemoveMode ? View.INVISIBLE : View.VISIBLE);
|
mAddLanguage.setVisibility(mRemoveMode ? View.INVISIBLE : View.VISIBLE);
|
||||||
|
}
|
||||||
updateVisibilityOfRemoveMenu();
|
updateVisibilityOfRemoveMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -489,10 +497,13 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View
|
|||||||
list.setAdapter(mAdapter);
|
list.setAdapter(mAdapter);
|
||||||
list.setOnTouchListener(this);
|
list.setOnTouchListener(this);
|
||||||
list.requestFocus();
|
list.requestFocus();
|
||||||
|
if (Flags.settingsExpressiveDesignEnabled()) {
|
||||||
|
mAddLanguagePreference = getPreferenceScreen().findPreference(KEY_ADD_A_LANGUAGE);
|
||||||
|
} else {
|
||||||
mAddLanguage = layout.findViewById(R.id.add_language);
|
mAddLanguage = layout.findViewById(R.id.add_language);
|
||||||
mAddLanguage.setOnClickListener(new View.OnClickListener() {
|
mAddLanguage.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(@NonNull View v) {
|
||||||
FeatureFactory.getFeatureFactory().getMetricsFeatureProvider()
|
FeatureFactory.getFeatureFactory().getMetricsFeatureProvider()
|
||||||
.logSettingsTileClick(INDEX_KEY_ADD_LANGUAGE, getMetricsCategory());
|
.logSettingsTileClick(INDEX_KEY_ADD_LANGUAGE, getMetricsCategory());
|
||||||
|
|
||||||
@@ -503,6 +514,7 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onTouch(View v, MotionEvent event) {
|
public boolean onTouch(View v, MotionEvent event) {
|
||||||
|
@@ -75,9 +75,6 @@ public abstract class LocalePickerBaseListPreferenceController extends
|
|||||||
public LocalePickerBaseListPreferenceController(@NonNull Context context,
|
public LocalePickerBaseListPreferenceController(@NonNull Context context,
|
||||||
@NonNull String preferenceKey) {
|
@NonNull String preferenceKey) {
|
||||||
super(context, preferenceKey);
|
super(context, preferenceKey);
|
||||||
mLocaleList = getLocaleCollectorController(context).getSupportedLocaleList(null,
|
|
||||||
false, false);
|
|
||||||
mLocaleOptions = new ArrayList<>(mLocaleList.size());
|
|
||||||
mPreferences = new ArrayMap<>();
|
mPreferences = new ArrayMap<>();
|
||||||
mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
|
mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
|
||||||
}
|
}
|
||||||
@@ -246,7 +243,7 @@ public abstract class LocalePickerBaseListPreferenceController extends
|
|||||||
private void setupLocaleList() {
|
private void setupLocaleList() {
|
||||||
mLocaleList = getLocaleCollectorController(mContext).getSupportedLocaleList(
|
mLocaleList = getLocaleCollectorController(mContext).getSupportedLocaleList(
|
||||||
mParentLocale, false, mIsCountryMode);
|
mParentLocale, false, mIsCountryMode);
|
||||||
mLocaleOptions.clear();
|
mLocaleOptions = new ArrayList<>(mLocaleList.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<LocaleStore.LocaleInfo> getSortedLocaleList(
|
private List<LocaleStore.LocaleInfo> getSortedLocaleList(
|
||||||
@@ -262,7 +259,9 @@ public abstract class LocalePickerBaseListPreferenceController extends
|
|||||||
boolean shouldShowLocaleEditor = shouldShowLocaleEditor(localeInfo);
|
boolean shouldShowLocaleEditor = shouldShowLocaleEditor(localeInfo);
|
||||||
if (shouldShowLocaleEditor) {
|
if (shouldShowLocaleEditor) {
|
||||||
List<LocaleStore.LocaleInfo> feedItemList = getUserLocaleList();
|
List<LocaleStore.LocaleInfo> feedItemList = getUserLocaleList();
|
||||||
feedItemList.add(localeInfo);
|
for (LocaleStore.LocaleInfo locale : mLocaleList) {
|
||||||
|
feedItemList.add(locale);
|
||||||
|
}
|
||||||
LocaleList localeList = new LocaleList(feedItemList.stream()
|
LocaleList localeList = new LocaleList(feedItemList.stream()
|
||||||
.map(LocaleStore.LocaleInfo::getLocale)
|
.map(LocaleStore.LocaleInfo::getLocale)
|
||||||
.toArray(Locale[]::new));
|
.toArray(Locale[]::new));
|
||||||
|
@@ -57,6 +57,7 @@ import android.widget.TextView;
|
|||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
import androidx.fragment.app.FragmentManager;
|
import androidx.fragment.app.FragmentManager;
|
||||||
import androidx.fragment.app.FragmentTransaction;
|
import androidx.fragment.app.FragmentTransaction;
|
||||||
|
import androidx.preference.Preference;
|
||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
|
||||||
import com.android.internal.app.LocaleStore;
|
import com.android.internal.app.LocaleStore;
|
||||||
@@ -145,6 +146,8 @@ public class LocaleListEditorTest {
|
|||||||
private ImageView mDragHandle;
|
private ImageView mDragHandle;
|
||||||
@Mock
|
@Mock
|
||||||
private NotificationController mNotificationController;
|
private NotificationController mNotificationController;
|
||||||
|
@Mock
|
||||||
|
private Preference mAddLanguagePreference;
|
||||||
|
|
||||||
@Rule
|
@Rule
|
||||||
public final CheckFlagsRule mCheckFlagsRule =
|
public final CheckFlagsRule mCheckFlagsRule =
|
||||||
@@ -168,6 +171,8 @@ public class LocaleListEditorTest {
|
|||||||
context.getSystemService(Context.USER_SERVICE));
|
context.getSystemService(Context.USER_SERVICE));
|
||||||
ReflectionHelpers.setField(mLocaleListEditor, "mAdapter", mAdapter);
|
ReflectionHelpers.setField(mLocaleListEditor, "mAdapter", mAdapter);
|
||||||
ReflectionHelpers.setField(mLocaleListEditor, "mAddLanguage", mAddLanguage);
|
ReflectionHelpers.setField(mLocaleListEditor, "mAddLanguage", mAddLanguage);
|
||||||
|
ReflectionHelpers.setField(mLocaleListEditor, "mAddLanguagePreference",
|
||||||
|
mAddLanguagePreference);
|
||||||
ReflectionHelpers.setField(mLocaleListEditor, "mFragmentManager", mFragmentManager);
|
ReflectionHelpers.setField(mLocaleListEditor, "mFragmentManager", mFragmentManager);
|
||||||
ReflectionHelpers.setField(mLocaleListEditor, "mMetricsFeatureProvider",
|
ReflectionHelpers.setField(mLocaleListEditor, "mMetricsFeatureProvider",
|
||||||
mMetricsFeatureProvider);
|
mMetricsFeatureProvider);
|
||||||
|
Reference in New Issue
Block a user