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

Commit 85607c59 authored by Satoshi Kataoka's avatar Satoshi Kataoka Committed by Android (Google) Code Review
Browse files

Merge "Fix the subtype id of the additional subtypes"

parents c7f8d54d 9ecdb831
Loading
Loading
Loading
Loading
+25 −4
Original line number Diff line number Diff line
@@ -61,10 +61,8 @@ public final class AdditionalSubtypeUtils {
                StringUtils.appendToCommaSplittableTextIfNotExists(
                        IS_ADDITIONAL_SUBTYPE, layoutDisplayNameExtraValue);
        final int nameId = SubtypeLocaleUtils.getSubtypeNameId(localeString, keyboardLayoutSetName);
        return new InputMethodSubtype(nameId, R.drawable.ic_ime_switcher_dark,
                localeString, KEYBOARD_MODE, layoutExtraValue + "," + additionalSubtypeExtraValue
                        + "," + Constants.Subtype.ExtraValue.ASCII_CAPABLE
                        + "," + Constants.Subtype.ExtraValue.EMOJI_CAPABLE, false, false);
        return buildInputMethodSubtype(
                nameId, localeString, layoutExtraValue, additionalSubtypeExtraValue);
    }

    public static String getPrefSubtype(final InputMethodSubtype subtype) {
@@ -137,4 +135,27 @@ public final class AdditionalSubtypeUtils {
        }
        return sb.toString();
    }

    private static InputMethodSubtype buildInputMethodSubtype(int nameId, String localeString,
            String layoutExtraValue, String additionalSubtypeExtraValue) {
        // CAVEAT! If you want to change subtypeId after changing the extra values,
        // you must change "getInputMethodSubtypeId". But it will remove the additional keyboard
        // from the current users. So, you should be really careful to change it.
        final int subtypeId = getInputMethodSubtypeId(nameId, localeString, layoutExtraValue,
                additionalSubtypeExtraValue);
        // TODO: Use InputMethodSubtypeBuilder once we use SDK version 19.
        return new InputMethodSubtype(nameId, R.drawable.ic_ime_switcher_dark,
                localeString, KEYBOARD_MODE, layoutExtraValue + "," + additionalSubtypeExtraValue
                        + "," + Constants.Subtype.ExtraValue.ASCII_CAPABLE
                        + "," + Constants.Subtype.ExtraValue.EMOJI_CAPABLE, false, false,
                        subtypeId);
    }

    private static int getInputMethodSubtypeId(int nameId, String localeString,
            String layoutExtraValue, String additionalSubtypeExtraValue) {
        // TODO: Use InputMethodSubtypeBuilder once we use SDK version 19.
        return (new InputMethodSubtype(nameId, R.drawable.ic_ime_switcher_dark,
                localeString, KEYBOARD_MODE, layoutExtraValue + "," + additionalSubtypeExtraValue,
                        false, false)).hashCode();
    }
}