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

Commit 4731b676 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Add device form factor to KeyboardId

This is a groundword for optimizing keyboard parsing.

Bug: 6860259
Change-Id: Ie65aa502b18c920e25cf2998b79120b3cc835952
parent efd8b838
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -19,6 +19,8 @@
-->

<resources>
    <!-- Device form factor. This value must be aligned with {@link KeyboardId.DEVICE_FORM_FACTOR_TABLET7} -->
    <integer name="config_device_form_factor">1</integer>
    <bool name="config_enable_show_voice_key_option">false</bool>
    <bool name="config_enable_show_popup_on_keypress_option">false</bool>
    <bool name="config_enable_bigram_suggestions_option">false</bool>
+2 −0
Original line number Diff line number Diff line
@@ -19,6 +19,8 @@
-->

<resources>
    <!-- Device form factor. This value must be aligned with {@link KeyboardId.DEVICE_FORM_FACTOR_TABLET10} -->
    <integer name="config_device_form_factor">2</integer>
    <bool name="config_enable_show_voice_key_option">false</bool>
    <bool name="config_enable_show_popup_on_keypress_option">false</bool>
    <bool name="config_enable_bigram_suggestions_option">false</bool>
+2 −0
Original line number Diff line number Diff line
@@ -19,6 +19,8 @@
-->

<resources>
    <!-- Device form factor. This value must be aligned with {@link KeyboardId.DEVICE_FORM_FACTOR_PHONE} -->
    <integer name="config_device_form_factor">0</integer>
    <bool name="config_use_fullscreen_mode">false</bool>
    <bool name="config_enable_show_voice_key_option">true</bool>
    <bool name="config_enable_show_popup_on_keypress_option">true</bool>
+23 −6
Original line number Diff line number Diff line
@@ -55,10 +55,15 @@ public class KeyboardId {
    public static final int ELEMENT_PHONE_SYMBOLS = 8;
    public static final int ELEMENT_NUMBER = 9;

    public static final int FORM_FACTOR_PHONE = 0;
    public static final int FORM_FACTOR_TABLET7 = 1;
    public static final int FORM_FACTOR_TABLET10 = 2;

    private static final int IME_ACTION_CUSTOM_LABEL = EditorInfo.IME_MASK_ACTION + 1;

    public final InputMethodSubtype mSubtype;
    public final Locale mLocale;
    public final int mDeviceFormFactor;
    public final int mOrientation;
    public final int mWidth;
    public final int mMode;
@@ -72,11 +77,12 @@ public class KeyboardId {

    private final int mHashCode;

    public KeyboardId(int elementId, InputMethodSubtype subtype, int orientation, int width,
            int mode, EditorInfo editorInfo, boolean clobberSettingsKey, boolean shortcutKeyEnabled,
            boolean hasShortcutKey, boolean languageSwitchKeyEnabled) {
    public KeyboardId(int elementId, InputMethodSubtype subtype, int deviceFormFactor,
            int orientation, int width, int mode, EditorInfo editorInfo, boolean clobberSettingsKey,
            boolean shortcutKeyEnabled, boolean hasShortcutKey, boolean languageSwitchKeyEnabled) {
        mSubtype = subtype;
        mLocale = SubtypeLocale.getSubtypeLocale(subtype);
        mDeviceFormFactor = deviceFormFactor;
        mOrientation = orientation;
        mWidth = width;
        mMode = mode;
@@ -94,6 +100,7 @@ public class KeyboardId {

    private static int computeHashCode(KeyboardId id) {
        return Arrays.hashCode(new Object[] {
                id.mDeviceFormFactor,
                id.mOrientation,
                id.mElementId,
                id.mMode,
@@ -115,7 +122,8 @@ public class KeyboardId {
    private boolean equals(KeyboardId other) {
        if (other == this)
            return true;
        return other.mOrientation == mOrientation
        return other.mDeviceFormFactor == mDeviceFormFactor
                && other.mOrientation == mOrientation
                && other.mElementId == mElementId
                && other.mMode == mMode
                && other.mWidth == mWidth
@@ -184,11 +192,11 @@ public class KeyboardId {

    @Override
    public String toString() {
        return String.format("[%s %s:%s %s%d %s %s %s%s%s%s%s%s%s%s]",
        return String.format("[%s %s:%s %s-%s:%d %s %s %s%s%s%s%s%s%s%s]",
                elementIdToName(mElementId),
                mLocale,
                mSubtype.getExtraValueOf(KEYBOARD_LAYOUT_SET),
                (mOrientation == 1 ? "port" : "land"), mWidth,
                deviceFormFactor(mDeviceFormFactor), (mOrientation == 1 ? "port" : "land"), mWidth,
                modeName(mMode),
                imeAction(),
                (navigateNext() ? "navigateNext" : ""),
@@ -226,6 +234,15 @@ public class KeyboardId {
        }
    }

    public static String deviceFormFactor(int devoceFormFactor) {
        switch (devoceFormFactor) {
        case FORM_FACTOR_PHONE: return "phone";
        case FORM_FACTOR_TABLET7: return "tablet7";
        case FORM_FACTOR_TABLET10: return "tablet10";
        default: return null;
        }
    }

    public static String modeName(int mode) {
        switch (mode) {
        case MODE_TEXT: return "text";
+10 −6
Original line number Diff line number Diff line
@@ -115,6 +115,7 @@ public class KeyboardLayoutSet {
        boolean mNoSettingsKey;
        boolean mLanguageSwitchKeyEnabled;
        InputMethodSubtype mSubtype;
        int mDeviceFormFactor;
        int mOrientation;
        int mWidth;
        // Sparse array of KeyboardLayoutSet element parameters indexed by element's id.
@@ -211,9 +212,10 @@ public class KeyboardLayoutSet {
        final boolean noLanguage = SubtypeLocale.isNoLanguage(params.mSubtype);
        final boolean voiceKeyEnabled = params.mVoiceKeyEnabled && !noLanguage;
        final boolean hasShortcutKey = voiceKeyEnabled && (isSymbols != params.mVoiceKeyOnMain);
        return new KeyboardId(keyboardLayoutSetElementId, params.mSubtype, params.mOrientation,
                params.mWidth, params.mMode, params.mEditorInfo, params.mNoSettingsKey,
                voiceKeyEnabled, hasShortcutKey, params.mLanguageSwitchKeyEnabled);
        return new KeyboardId(keyboardLayoutSetElementId, params.mSubtype, params.mDeviceFormFactor,
                params.mOrientation, params.mWidth, params.mMode, params.mEditorInfo,
                params.mNoSettingsKey, voiceKeyEnabled, hasShortcutKey,
                params.mLanguageSwitchKeyEnabled);
    }

    public static class Builder {
@@ -239,9 +241,11 @@ public class KeyboardLayoutSet {
                    mPackageName, NO_SETTINGS_KEY, mEditorInfo);
        }

        public Builder setScreenGeometry(int orientation, int widthPixels) {
            mParams.mOrientation = orientation;
            mParams.mWidth = widthPixels;
        public Builder setScreenGeometry(int deviceFormFactor, int orientation, int widthPixels) {
            final Params params = mParams;
            params.mDeviceFormFactor = deviceFormFactor;
            params.mOrientation = orientation;
            params.mWidth = widthPixels;
            return this;
        }

Loading