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

Commit 23885c63 authored by Zoey Chen's avatar Zoey Chen Committed by Android (Google) Code Review
Browse files

Merge "[Settings] Add a flag to control show new System language picker UI or not" into main

parents 793a6802 997cd294
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -44,7 +44,8 @@
            android:textAlignment="textStart"
            android:text="@string/add_a_language"
            style="@style/Base.Widget.AppCompat.Button.Borderless"
            android:textAppearance="?android:attr/textAppearanceListItem"/>
            android:textAppearance="?android:attr/textAppearanceListItem"
            android:visibility="gone"/>

    </LinearLayout>

+7 −0
Original line number Diff line number Diff line
@@ -31,6 +31,13 @@
        <com.android.settingslib.widget.LayoutPreference
            android:key="languages_picker"
            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
+26 −14
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import androidx.fragment.app.FragmentManager;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import androidx.recyclerview.widget.RecyclerView;

@@ -53,6 +54,7 @@ import com.android.internal.app.LocalePicker;
import com.android.internal.app.LocaleStore;
import com.android.settings.R;
import com.android.settings.RestrictedSettingsFragment;
import com.android.settings.flags.Flags;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.BaseSearchIndexProvider;
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 KEY_LANGUAGES_PICKER = "languages_picker";
    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_NOT_AVAILABLE = "dialog_not_available_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 Menu mMenu;
    private View mAddLanguage;
    private Preference mAddLanguagePreference;
    private boolean mRemoveMode;
    private boolean mShowingRemoveDialog;
    private boolean mLocaleAdditionMode = false;
@@ -282,7 +286,11 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View
    private void setRemoveMode(boolean mRemoveMode) {
        this.mRemoveMode = mRemoveMode;
        mAdapter.setRemoveMode(mRemoveMode);
        if (Flags.settingsExpressiveDesignEnabled()) {
            mAddLanguagePreference.setVisible(!mRemoveMode);
        } else {
            mAddLanguage.setVisibility(mRemoveMode ? View.INVISIBLE : View.VISIBLE);
        }
        updateVisibilityOfRemoveMenu();
    }

@@ -489,10 +497,13 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View
        list.setAdapter(mAdapter);
        list.setOnTouchListener(this);
        list.requestFocus();
        if (Flags.settingsExpressiveDesignEnabled()) {
            mAddLanguagePreference = getPreferenceScreen().findPreference(KEY_ADD_A_LANGUAGE);
        } else {
            mAddLanguage = layout.findViewById(R.id.add_language);
            mAddLanguage.setOnClickListener(new View.OnClickListener() {
                @Override
            public void onClick(View v) {
                public void onClick(@NonNull View v) {
                    FeatureFactory.getFeatureFactory().getMetricsFeatureProvider()
                            .logSettingsTileClick(INDEX_KEY_ADD_LANGUAGE, getMetricsCategory());

@@ -503,6 +514,7 @@ public class LocaleListEditor extends RestrictedSettingsFragment implements View
                }
            });
        }
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
+4 −5
Original line number Diff line number Diff line
@@ -75,9 +75,6 @@ public abstract class LocalePickerBaseListPreferenceController extends
    public LocalePickerBaseListPreferenceController(@NonNull Context context,
            @NonNull String preferenceKey) {
        super(context, preferenceKey);
        mLocaleList = getLocaleCollectorController(context).getSupportedLocaleList(null,
                false, false);
        mLocaleOptions = new ArrayList<>(mLocaleList.size());
        mPreferences = new ArrayMap<>();
        mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
    }
@@ -246,7 +243,7 @@ public abstract class LocalePickerBaseListPreferenceController extends
    private void setupLocaleList() {
        mLocaleList = getLocaleCollectorController(mContext).getSupportedLocaleList(
                mParentLocale, false, mIsCountryMode);
        mLocaleOptions.clear();
        mLocaleOptions = new ArrayList<>(mLocaleList.size());
    }

    private List<LocaleStore.LocaleInfo> getSortedLocaleList(
@@ -262,7 +259,9 @@ public abstract class LocalePickerBaseListPreferenceController extends
        boolean shouldShowLocaleEditor = shouldShowLocaleEditor(localeInfo);
        if (shouldShowLocaleEditor) {
            List<LocaleStore.LocaleInfo> feedItemList = getUserLocaleList();
            feedItemList.add(localeInfo);
            for (LocaleStore.LocaleInfo locale : mLocaleList) {
                feedItemList.add(locale);
            }
            LocaleList localeList = new LocaleList(feedItemList.stream()
                    .map(LocaleStore.LocaleInfo::getLocale)
                    .toArray(Locale[]::new));
+5 −0
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ import android.widget.TextView;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.preference.Preference;
import androidx.test.core.app.ApplicationProvider;

import com.android.internal.app.LocaleStore;
@@ -145,6 +146,8 @@ public class LocaleListEditorTest {
    private ImageView mDragHandle;
    @Mock
    private NotificationController mNotificationController;
    @Mock
    private Preference mAddLanguagePreference;

    @Rule
    public final CheckFlagsRule mCheckFlagsRule =
@@ -168,6 +171,8 @@ public class LocaleListEditorTest {
                context.getSystemService(Context.USER_SERVICE));
        ReflectionHelpers.setField(mLocaleListEditor, "mAdapter", mAdapter);
        ReflectionHelpers.setField(mLocaleListEditor, "mAddLanguage", mAddLanguage);
        ReflectionHelpers.setField(mLocaleListEditor, "mAddLanguagePreference",
                mAddLanguagePreference);
        ReflectionHelpers.setField(mLocaleListEditor, "mFragmentManager", mFragmentManager);
        ReflectionHelpers.setField(mLocaleListEditor, "mMetricsFeatureProvider",
                mMetricsFeatureProvider);