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

Commit e5cbc94d authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka Committed by Android (Google) Code Review
Browse files

Merge "Support embedded more key"

parents 895b70b8 e491be6e
Loading
Loading
Loading
Loading
+1 −6
Original line number Diff line number Diff line
@@ -41,14 +41,9 @@
        latin:styleName="numberKeyStyle"
        latin:keyLabelFlags="alignLeftOfCenter|hasHintLabel"
        latin:parentStyle="numKeyStyle" />
    <!-- U+0030: "0" DIGIT ZERO
         U+002B: "+" PLUS SIGN -->
    <key-style
        latin:styleName="num0KeyStyle"
        latin:code="0x0030"
        latin:altCode="0x002B"
        latin:keyLabel="0 +"
        latin:keyActionFlags="enableLongPress"
        latin:keyLabel="0"
        latin:parentStyle="numberKeyStyle" />
    <key-style
        latin:styleName="num1KeyStyle"
+2 −4
Original line number Diff line number Diff line
@@ -111,13 +111,11 @@
            <case
                latin:mode="datetime"
            >
                <!-- U+002F: "/" SOLIDUS
                     U+003A: ":" COLON -->
                <!-- U+002F: "/" SOLIDUS -->
                <Key
                    latin:code="0x002F"
                    latin:altCode="0x003A"
                    latin:keyLabel="/ :"
                    latin:keyActionFlags="enableLongPress"
                    latin:moreKeys="!embeddedMoreKey!,:"
                    latin:keyStyle="numKeyStyle" />
            </case>
            <default>
+5 −1
Original line number Diff line number Diff line
@@ -63,8 +63,12 @@
    <Row>
        <Key
            latin:keyStyle="numPhoneToSymbolKeyStyle" />
        <!-- U+0030: "0" DIGIT ZERO -->
        <Key
            latin:keyStyle="num0KeyStyle" />
            latin:keyStyle="num0KeyStyle"
            latin:code="0x0030"
            latin:keyLabel="0 +"
            latin:moreKeys="!embeddedMoreKey!,+" />
        <Key
            latin:keyStyle="numSpaceKeyStyle" />
        <Key
+9 −0
Original line number Diff line number Diff line
@@ -109,10 +109,12 @@ public class Key {
    private static final int MORE_KEYS_FLAGS_FIXED_COLUMN_ORDER = 0x80000000;
    private static final int MORE_KEYS_FLAGS_HAS_LABELS = 0x40000000;
    private static final int MORE_KEYS_FLAGS_NEEDS_DIVIDERS = 0x40000000;
    private static final int MORE_KEYS_FLAGS_EMBEDDED_MORE_KEY = 0x20000000;
    private static final String MORE_KEYS_AUTO_COLUMN_ORDER = "!autoColumnOrder!";
    private static final String MORE_KEYS_FIXED_COLUMN_ORDER = "!fixedColumnOrder!";
    private static final String MORE_KEYS_HAS_LABELS = "!hasLabels!";
    private static final String MORE_KEYS_NEEDS_DIVIDERS = "!needsDividers!";
    private static final String MORE_KEYS_EMBEDDED_MORE_KEY = "!embeddedMoreKey!";

    /** Background type that represents different key background visual than normal one. */
    public final int mBackgroundType;
@@ -258,6 +260,9 @@ public class Key {
        if (KeySpecParser.getBooleanValue(moreKeys, MORE_KEYS_NEEDS_DIVIDERS)) {
            moreKeysColumn |= MORE_KEYS_FLAGS_NEEDS_DIVIDERS;
        }
        if (KeySpecParser.getBooleanValue(moreKeys, MORE_KEYS_EMBEDDED_MORE_KEY)) {
            moreKeysColumn |= MORE_KEYS_FLAGS_EMBEDDED_MORE_KEY;
        }
        mMoreKeysColumnAndFlags = moreKeysColumn;

        final String[] additionalMoreKeys = style.getStringArray(
@@ -548,6 +553,10 @@ public class Key {
        return (mMoreKeysColumnAndFlags & MORE_KEYS_FLAGS_NEEDS_DIVIDERS) != 0;
    }

    public boolean hasEmbeddedMoreKey() {
        return (mMoreKeysColumnAndFlags & MORE_KEYS_FLAGS_EMBEDDED_MORE_KEY) != 0;
    }

    public Drawable getIcon(KeyboardIconsSet iconSet) {
        return iconSet.getIconDrawable(mIconId);
    }
+4 −6
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy;
import com.android.inputmethod.deprecated.VoiceProxy;
import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy;
import com.android.inputmethod.keyboard.PointerTracker.TimerProxy;
import com.android.inputmethod.keyboard.internal.KeySpecParser;
import com.android.inputmethod.latin.LatinIME;
import com.android.inputmethod.latin.LatinImeLogger;
import com.android.inputmethod.latin.R;
@@ -480,13 +481,10 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
     */
    protected boolean onLongPress(Key parentKey, PointerTracker tracker) {
        final int primaryCode = parentKey.mCode;
        if (parentKey.mMoreKeys == null && !parentKey.altCodeWhileTyping()
                && parentKey.mAltCode != Keyboard.CODE_UNSPECIFIED) {
            // Long press on a key that has no more keys and is not altCodeWhileTyping, but altCode
            // is defined, such as the "0 +" key on the phone layout and the "/ :" key on the
            // datetime layout.
        if (parentKey.hasEmbeddedMoreKey()) {
            final int embeddedCode = KeySpecParser.getCode(getResources(), parentKey.mMoreKeys[0]);
            tracker.onLongPressed();
            invokeCodeInput(parentKey.mAltCode);
            invokeCodeInput(embeddedCode);
            invokeReleaseKey(primaryCode);
            KeyboardSwitcher.getInstance().hapticAndAudioFeedback(primaryCode);
            return true;