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

Commit 27154387 authored by Jean Chalard's avatar Jean Chalard
Browse files

Implement the "more locales" feature.

Bug: 6026080
Change-Id: I051a734321793e9130dc2cc77d4e7f670d2ce93d
parent eb995c79
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -155,6 +155,10 @@ public class UserDictionaryAddWordContents {
        public String getLocaleString() {
            return mLocaleString;
        }
        // "More languages..." is null ; "All languages" is the empty string.
        public boolean isMoreLanguages() {
            return null == mLocaleString;
        }
    }

    private static void addLocaleDisplayNameToList(final Context context,
+25 −4
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package com.android.settings.inputmethod;

import android.app.Fragment;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
@@ -31,6 +32,7 @@ import com.android.settings.R;
import com.android.settings.inputmethod.UserDictionaryAddWordContents.LocaleRenderer;

import java.util.ArrayList;
import java.util.Locale;

/**
 * Fragment to add a word/shortcut to the user dictionary.
@@ -39,7 +41,8 @@ import java.util.ArrayList;
 * from the UserDictionarySettings.
 */
public class UserDictionaryAddWordFragment extends Fragment
        implements AdapterView.OnItemSelectedListener {
        implements AdapterView.OnItemSelectedListener,
        com.android.internal.app.LocalePicker.LocaleSelectionListener {

    private static final int OPTIONS_MENU_DELETE = Menu.FIRST;

@@ -57,6 +60,9 @@ public class UserDictionaryAddWordFragment extends Fragment
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
        mRootView = inflater.inflate(R.layout.user_dictionary_add_word_fullscreen, null);
        mIsDeleting = false;
        if (null == mContents) {
            mContents = new UserDictionaryAddWordContents(mRootView, getArguments());
        }
        return mRootView;
    }

@@ -80,7 +86,7 @@ public class UserDictionaryAddWordFragment extends Fragment
        if (item.getItemId() == OPTIONS_MENU_DELETE) {
            mContents.delete(getActivity());
            mIsDeleting = true;
            getFragmentManager().popBackStack();
            getActivity().onBackPressed();
            return true;
        }
        return false;
@@ -90,7 +96,10 @@ public class UserDictionaryAddWordFragment extends Fragment
    public void onResume() {
        super.onResume();
        // We are being shown: display the word
        mContents = new UserDictionaryAddWordContents(mRootView, getArguments());
        updateSpinner();
    }

    private void updateSpinner() {
        final ArrayList<LocaleRenderer> localesList = mContents.getLocalesList(getActivity());

        final Spinner localeSpinner =
@@ -115,8 +124,13 @@ public class UserDictionaryAddWordFragment extends Fragment
    public void onItemSelected(final AdapterView<?> parent, final View view, final int pos,
            final long id) {
        final LocaleRenderer locale = (LocaleRenderer)parent.getItemAtPosition(pos);
        if (locale.isMoreLanguages()) {
            PreferenceActivity preferenceActivity = (PreferenceActivity)getActivity();
            preferenceActivity.startPreferenceFragment(new UserDictionaryLocalePicker(this), true);
        } else {
            mContents.updateLocale(locale.getLocaleString());
        }
    }

    @Override
    public void onNothingSelected(final AdapterView<?> parent) {
@@ -124,4 +138,11 @@ public class UserDictionaryAddWordFragment extends Fragment
        final Bundle args = getArguments();
        mContents.updateLocale(args.getString(UserDictionaryAddWordContents.EXTRA_LOCALE));
    }

    // Called by the locale picker
    @Override
    public void onLocaleSelected(final Locale locale) {
        mContents.updateLocale(locale.toString());
        getActivity().onBackPressed();
    }
}
+26 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2012 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.inputmethod;

import java.util.Locale;

public class UserDictionaryLocalePicker extends com.android.internal.app.LocalePicker {
    public UserDictionaryLocalePicker(final UserDictionaryAddWordFragment parent) {
        super();
        setLocaleSelectionListener(parent);
    }
}