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

Commit 9ecdb831 authored by Satoshi Kataoka's avatar Satoshi Kataoka
Browse files

Fix the subtype id of the additional subtypes

Bug: 11032428
Change-Id: I5d422f1c15a582015770ef9a652348ca6eb8ab85
parent 1bbd4933
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();
    }
}