Search in sources :

Example 36 with LocaleList

use of android.os.LocaleList in project android_frameworks_base by crdroidandroid.

the class AutoReinflateContainer method onConfigurationChanged.

@Override
protected void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    boolean shouldInflateLayout = false;
    final int density = newConfig.densityDpi;
    if (density != mDensity) {
        mDensity = density;
        shouldInflateLayout = true;
    }
    final LocaleList localeList = newConfig.getLocales();
    if (localeList != mLocaleList) {
        mLocaleList = localeList;
        shouldInflateLayout = true;
    }
    if (shouldInflateLayout) {
        inflateLayout();
    }
}
Also used : LocaleList(android.os.LocaleList)

Example 37 with LocaleList

use of android.os.LocaleList in project android_frameworks_base by AOSPA.

the class InputMethodUtils method getImplicitlyApplicableSubtypesLockedImpl.

private static ArrayList<InputMethodSubtype> getImplicitlyApplicableSubtypesLockedImpl(Resources res, InputMethodInfo imi) {
    final List<InputMethodSubtype> subtypes = InputMethodUtils.getSubtypes(imi);
    final LocaleList systemLocales = res.getConfiguration().getLocales();
    final String systemLocale = systemLocales.get(0).toString();
    if (TextUtils.isEmpty(systemLocale))
        return new ArrayList<>();
    final int numSubtypes = subtypes.size();
    // Handle overridesImplicitlyEnabledSubtype mechanism.
    final HashMap<String, InputMethodSubtype> applicableModeAndSubtypesMap = new HashMap<>();
    for (int i = 0; i < numSubtypes; ++i) {
        // scan overriding implicitly enabled subtypes.
        final InputMethodSubtype subtype = subtypes.get(i);
        if (subtype.overridesImplicitlyEnabledSubtype()) {
            final String mode = subtype.getMode();
            if (!applicableModeAndSubtypesMap.containsKey(mode)) {
                applicableModeAndSubtypesMap.put(mode, subtype);
            }
        }
    }
    if (applicableModeAndSubtypesMap.size() > 0) {
        return new ArrayList<>(applicableModeAndSubtypesMap.values());
    }
    final HashMap<String, ArrayList<InputMethodSubtype>> nonKeyboardSubtypesMap = new HashMap<>();
    final ArrayList<InputMethodSubtype> keyboardSubtypes = new ArrayList<>();
    for (int i = 0; i < numSubtypes; ++i) {
        final InputMethodSubtype subtype = subtypes.get(i);
        final String mode = subtype.getMode();
        if (SUBTYPE_MODE_KEYBOARD.equals(mode)) {
            keyboardSubtypes.add(subtype);
        } else {
            if (!nonKeyboardSubtypesMap.containsKey(mode)) {
                nonKeyboardSubtypesMap.put(mode, new ArrayList<>());
            }
            nonKeyboardSubtypesMap.get(mode).add(subtype);
        }
    }
    final ArrayList<InputMethodSubtype> applicableSubtypes = new ArrayList<>();
    LocaleUtils.filterByLanguage(keyboardSubtypes, sSubtypeToLocale, systemLocales, applicableSubtypes);
    if (!applicableSubtypes.isEmpty()) {
        boolean hasAsciiCapableKeyboard = false;
        final int numApplicationSubtypes = applicableSubtypes.size();
        for (int i = 0; i < numApplicationSubtypes; ++i) {
            final InputMethodSubtype subtype = applicableSubtypes.get(i);
            if (subtype.containsExtraValueKey(TAG_ASCII_CAPABLE)) {
                hasAsciiCapableKeyboard = true;
                break;
            }
        }
        if (!hasAsciiCapableKeyboard) {
            final int numKeyboardSubtypes = keyboardSubtypes.size();
            for (int i = 0; i < numKeyboardSubtypes; ++i) {
                final InputMethodSubtype subtype = keyboardSubtypes.get(i);
                final String mode = subtype.getMode();
                if (SUBTYPE_MODE_KEYBOARD.equals(mode) && subtype.containsExtraValueKey(TAG_ENABLED_WHEN_DEFAULT_IS_NOT_ASCII_CAPABLE)) {
                    applicableSubtypes.add(subtype);
                }
            }
        }
    }
    if (applicableSubtypes.isEmpty()) {
        InputMethodSubtype lastResortKeyboardSubtype = findLastResortApplicableSubtypeLocked(res, subtypes, SUBTYPE_MODE_KEYBOARD, systemLocale, true);
        if (lastResortKeyboardSubtype != null) {
            applicableSubtypes.add(lastResortKeyboardSubtype);
        }
    }
    // For each non-keyboard mode, extract subtypes with system locales.
    for (final ArrayList<InputMethodSubtype> subtypeList : nonKeyboardSubtypesMap.values()) {
        LocaleUtils.filterByLanguage(subtypeList, sSubtypeToLocale, systemLocales, applicableSubtypes);
    }
    return applicableSubtypes;
}
Also used : InputMethodSubtype(android.view.inputmethod.InputMethodSubtype) LocaleList(android.os.LocaleList) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList)

Example 38 with LocaleList

use of android.os.LocaleList in project android_frameworks_base by AOSPA.

the class LocalePickerWithRegion method setListener.

/**
     * Sets the listener and initializes the locale list.
     *
     * <p>Returns true if we need to show the list, false if not.</p>
     *
     * <p>Can return false because of an error, trying to show a list of countries,
     * but no parent locale was provided.</p>
     *
     * <p>It can also return false if the caller tries to show the list in country mode and
     * there is only one country available (i.e. Japanese => Japan).
     * In this case we don't even show the list, we call the listener with that locale,
     * "pretending" it was selected, and return false.</p>
     */
private boolean setListener(Context context, LocaleSelectedListener listener, LocaleStore.LocaleInfo parent, boolean translatedOnly) {
    this.mParentLocale = parent;
    this.mListener = listener;
    this.mTranslatedOnly = translatedOnly;
    setRetainInstance(true);
    final HashSet<String> langTagsToIgnore = new HashSet<>();
    if (!translatedOnly) {
        final LocaleList userLocales = LocalePicker.getLocales();
        final String[] langTags = userLocales.toLanguageTags().split(",");
        Collections.addAll(langTagsToIgnore, langTags);
    }
    if (parent != null) {
        mLocaleList = LocaleStore.getLevelLocales(context, langTagsToIgnore, parent, translatedOnly);
        if (mLocaleList.size() <= 1) {
            if (listener != null && (mLocaleList.size() == 1)) {
                listener.onLocaleSelected(mLocaleList.iterator().next());
            }
            return false;
        }
    } else {
        mLocaleList = LocaleStore.getLevelLocales(context, langTagsToIgnore, null, /* no parent */
        translatedOnly);
    }
    return true;
}
Also used : LocaleList(android.os.LocaleList) HashSet(java.util.HashSet)

Example 39 with LocaleList

use of android.os.LocaleList in project android_frameworks_base by AOSPA.

the class ResourcesLocaleTest method testEnglishIsAlwaysConsideredSupported.

@SmallTest
public void testEnglishIsAlwaysConsideredSupported() throws Exception {
    final Resources resources = createResourcesWithApk(R.raw.locales);
    ensureNoLanguage(resources, "en");
    final LocaleList preferredLocales = LocaleList.forLanguageTags("en-US,pl-PL");
    final Configuration config = new Configuration();
    config.setLocales(preferredLocales);
    resources.updateConfiguration(config, null);
    // The APK we loaded has default and Polish languages. If English is first in the list,
    // always take it the default (assumed to be English).
    assertEquals(Locale.forLanguageTag("en-US"), resources.getConfiguration().getLocales().get(0));
}
Also used : LocaleList(android.os.LocaleList) SmallTest(android.support.test.filters.SmallTest)

Example 40 with LocaleList

use of android.os.LocaleList in project android_frameworks_base by AOSPA.

the class InputMethodManagerService method resetAllInternalStateLocked.

private void resetAllInternalStateLocked(final boolean updateOnlyWhenLocaleChanged, final boolean resetDefaultEnabledIme) {
    if (!mSystemReady) {
        // not system ready
        return;
    }
    final LocaleList newLocales = mRes.getConfiguration().getLocales();
    if (!updateOnlyWhenLocaleChanged || (newLocales != null && !newLocales.equals(mLastSystemLocales))) {
        if (!updateOnlyWhenLocaleChanged) {
            hideCurrentInputLocked(0, null);
            resetCurrentMethodAndClient(InputMethodClient.UNBIND_REASON_RESET_IME);
        }
        if (DEBUG) {
            Slog.i(TAG, "LocaleList has been changed to " + newLocales);
        }
        buildInputMethodListLocked(resetDefaultEnabledIme);
        if (!updateOnlyWhenLocaleChanged) {
            final String selectedImiId = mSettings.getSelectedInputMethod();
            if (TextUtils.isEmpty(selectedImiId)) {
                // This is the first time of the user switch and
                // set the current ime to the proper one.
                resetDefaultImeLocked(mContext);
            }
        } else {
            // If the locale is changed, needs to reset the default ime
            resetDefaultImeLocked(mContext);
        }
        updateFromSettingsLocked(true);
        mLastSystemLocales = newLocales;
        if (!updateOnlyWhenLocaleChanged) {
            try {
                startInputInnerLocked();
            } catch (RuntimeException e) {
                Slog.w(TAG, "Unexpected exception", e);
            }
        }
    }
}
Also used : LocaleList(android.os.LocaleList)

Aggregations

LocaleList (android.os.LocaleList)91 Locale (java.util.Locale)39 ArrayList (java.util.ArrayList)31 SmallTest (android.test.suitebuilder.annotation.SmallTest)15 Resources (android.content.res.Resources)10 KeyboardLayout (android.hardware.input.KeyboardLayout)10 SmallTest (android.support.test.filters.SmallTest)10 InputMethodSubtype (android.view.inputmethod.InputMethodSubtype)10 NameNotFoundException (android.content.pm.PackageManager.NameNotFoundException)7 RemoteException (android.os.RemoteException)7 FileNotFoundException (java.io.FileNotFoundException)7 IOException (java.io.IOException)7 Context (android.content.Context)5 Config (android.content.pm.ActivityInfo.Config)5 NotFoundException (android.content.res.Resources.NotFoundException)5 TypedArray (android.content.res.TypedArray)5 XmlResourceParser (android.content.res.XmlResourceParser)5 Bundle (android.os.Bundle)5 SettingNotFoundException (android.provider.Settings.SettingNotFoundException)5 VisibleForTesting (com.android.internal.annotations.VisibleForTesting)5