Loading java/src/com/android/inputmethod/latin/RichInputMethodSubtype.java +24 −1 Original line number Diff line number Diff line Loading @@ -18,14 +18,17 @@ package com.android.inputmethod.latin; import static com.android.inputmethod.latin.common.Constants.Subtype.KEYBOARD_MODE; import android.os.Build; import android.util.Log; import android.view.inputmethod.InputMethodSubtype; import com.android.inputmethod.compat.BuildCompatUtils; import com.android.inputmethod.compat.InputMethodSubtypeCompatUtils; import com.android.inputmethod.latin.common.Constants; import com.android.inputmethod.latin.common.LocaleUtils; import com.android.inputmethod.latin.utils.SubtypeLocaleUtils; import java.util.HashMap; import java.util.Locale; import javax.annotation.Nonnull; Loading @@ -40,14 +43,29 @@ import javax.annotation.Nullable; public class RichInputMethodSubtype { private static final String TAG = RichInputMethodSubtype.class.getSimpleName(); private static final HashMap<Locale, Locale> sLocaleMap = initializeLocaleMap(); private static final HashMap<Locale, Locale> initializeLocaleMap() { final HashMap<Locale, Locale> map = new HashMap<>(); if (BuildCompatUtils.EFFECTIVE_SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // Locale#forLanguageTag is available on API Level 21+. // TODO: Remove this workaround once when we become able to deal with "sr-Latn". map.put(Locale.forLanguageTag("sr-Latn"), new Locale("sr_ZZ")); } return map; } @Nonnull private final InputMethodSubtype mSubtype; @Nonnull private final Locale mLocale; @Nonnull private final Locale mOriginalLocale; public RichInputMethodSubtype(@Nonnull final InputMethodSubtype subtype) { mSubtype = subtype; mLocale = InputMethodSubtypeCompatUtils.getLocaleObject(mSubtype); mOriginalLocale = InputMethodSubtypeCompatUtils.getLocaleObject(mSubtype); final Locale mappedLocale = sLocaleMap.get(mOriginalLocale); mLocale = mappedLocale != null ? mappedLocale : mOriginalLocale; } // Extra values are determined by the primary subtype. This is probably right, but Loading Loading @@ -128,6 +146,11 @@ public class RichInputMethodSubtype { return mLocale; } @Nonnull public Locale getOriginalLocale() { return mOriginalLocale; } public boolean isRtlSubtype() { // The subtype is considered RTL if the language of the main subtype is RTL. return LocaleUtils.isRtlLanguage(mLocale); Loading Loading
java/src/com/android/inputmethod/latin/RichInputMethodSubtype.java +24 −1 Original line number Diff line number Diff line Loading @@ -18,14 +18,17 @@ package com.android.inputmethod.latin; import static com.android.inputmethod.latin.common.Constants.Subtype.KEYBOARD_MODE; import android.os.Build; import android.util.Log; import android.view.inputmethod.InputMethodSubtype; import com.android.inputmethod.compat.BuildCompatUtils; import com.android.inputmethod.compat.InputMethodSubtypeCompatUtils; import com.android.inputmethod.latin.common.Constants; import com.android.inputmethod.latin.common.LocaleUtils; import com.android.inputmethod.latin.utils.SubtypeLocaleUtils; import java.util.HashMap; import java.util.Locale; import javax.annotation.Nonnull; Loading @@ -40,14 +43,29 @@ import javax.annotation.Nullable; public class RichInputMethodSubtype { private static final String TAG = RichInputMethodSubtype.class.getSimpleName(); private static final HashMap<Locale, Locale> sLocaleMap = initializeLocaleMap(); private static final HashMap<Locale, Locale> initializeLocaleMap() { final HashMap<Locale, Locale> map = new HashMap<>(); if (BuildCompatUtils.EFFECTIVE_SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // Locale#forLanguageTag is available on API Level 21+. // TODO: Remove this workaround once when we become able to deal with "sr-Latn". map.put(Locale.forLanguageTag("sr-Latn"), new Locale("sr_ZZ")); } return map; } @Nonnull private final InputMethodSubtype mSubtype; @Nonnull private final Locale mLocale; @Nonnull private final Locale mOriginalLocale; public RichInputMethodSubtype(@Nonnull final InputMethodSubtype subtype) { mSubtype = subtype; mLocale = InputMethodSubtypeCompatUtils.getLocaleObject(mSubtype); mOriginalLocale = InputMethodSubtypeCompatUtils.getLocaleObject(mSubtype); final Locale mappedLocale = sLocaleMap.get(mOriginalLocale); mLocale = mappedLocale != null ? mappedLocale : mOriginalLocale; } // Extra values are determined by the primary subtype. This is probably right, but Loading Loading @@ -128,6 +146,11 @@ public class RichInputMethodSubtype { return mLocale; } @Nonnull public Locale getOriginalLocale() { return mOriginalLocale; } public boolean isRtlSubtype() { // The subtype is considered RTL if the language of the main subtype is RTL. return LocaleUtils.isRtlLanguage(mLocale); Loading