diff options
author | 2012-03-12 01:48:05 -0700 | |
---|---|---|
committer | 2012-03-12 01:48:05 -0700 | |
commit | 546692daacfb30a63798cb052b42857419814287 (patch) | |
tree | 5554e06c167c41dfa6a7bd0c0e56880c07a4ef42 /java/src | |
parent | a3f2ce1f3150a01471f2996ae07fb21a2f857b58 (diff) | |
parent | b03529aa0119d38054fe825156669c45f7a6c8c3 (diff) | |
download | latinime-546692daacfb30a63798cb052b42857419814287.tar.gz latinime-546692daacfb30a63798cb052b42857419814287.tar.xz latinime-546692daacfb30a63798cb052b42857419814287.zip |
Merge "Support disableAdditionalMoreKeys and disableKeyLabelHint"
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/Key.java | 22 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/Keyboard.java | 22 |
2 files changed, 38 insertions, 6 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java index 6b4de184f..b09a27540 100644 --- a/java/src/com/android/inputmethod/keyboard/Key.java +++ b/java/src/com/android/inputmethod/keyboard/Key.java @@ -73,6 +73,8 @@ public class Key { private static final int LABEL_FLAGS_PRESERVE_CASE = 0x8000; private static final int LABEL_FLAGS_SHIFTED_LETTER_ACTIVATED = 0x10000; private static final int LABEL_FLAGS_FROM_CUSTOM_ACTION_LABEL = 0x20000; + private static final int LABEL_FLAGS_DISABLE_HINT_LABEL = 0x40000000; + private static final int LABEL_FLAGS_DISABLE_ADDITIONAL_MORE_KEYS = 0x80000000; /** Icon to display instead of a label. Icon takes precedence over a label */ private final int mIconId; @@ -240,7 +242,8 @@ public class Key { mDisabledIconId = style.getInt(keyAttr, R.styleable.Keyboard_Key_keyIconDisabled, KeyboardIconsSet.ICON_UNDEFINED); - mLabelFlags = style.getFlag(keyAttr, R.styleable.Keyboard_Key_keyLabelFlags); + mLabelFlags = style.getFlag(keyAttr, R.styleable.Keyboard_Key_keyLabelFlags) + | row.getDefaultKeyLabelFlags(); final boolean preserveCase = (mLabelFlags & LABEL_FLAGS_PRESERVE_CASE) != 0; int actionFlags = style.getFlag(keyAttr, R.styleable.Keyboard_Key_keyActionFlags); String[] moreKeys = style.getStringArray(keyAttr, R.styleable.Keyboard_Key_moreKeys); @@ -265,8 +268,13 @@ public class Key { } mMoreKeysColumnAndFlags = moreKeysColumn; - final String[] additionalMoreKeys = style.getStringArray( - keyAttr, R.styleable.Keyboard_Key_additionalMoreKeys); + final String[] additionalMoreKeys; + if ((mLabelFlags & LABEL_FLAGS_DISABLE_ADDITIONAL_MORE_KEYS) != 0) { + additionalMoreKeys = null; + } else { + additionalMoreKeys = style.getStringArray( + keyAttr, R.styleable.Keyboard_Key_additionalMoreKeys); + } moreKeys = KeySpecParser.insertAddtionalMoreKeys(moreKeys, additionalMoreKeys); if (moreKeys != null) { actionFlags |= ACTION_FLAGS_ENABLE_LONG_PRESS; @@ -284,8 +292,12 @@ public class Key { mLabel = adjustCaseOfStringForKeyboardId(style.getString( keyAttr, R.styleable.Keyboard_Key_keyLabel), preserveCase, params.mId); } - mHintLabel = adjustCaseOfStringForKeyboardId(style.getString( - keyAttr, R.styleable.Keyboard_Key_keyHintLabel), preserveCase, params.mId); + if ((mLabelFlags & LABEL_FLAGS_DISABLE_HINT_LABEL) != 0) { + mHintLabel = null; + } else { + mHintLabel = adjustCaseOfStringForKeyboardId(style.getString( + keyAttr, R.styleable.Keyboard_Key_keyHintLabel), preserveCase, params.mId); + } String outputText = adjustCaseOfStringForKeyboardId(style.getString( keyAttr, R.styleable.Keyboard_Key_keyOutputText), preserveCase, params.mId); final int code = style.getInt( diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java index 689e322ce..53467122a 100644 --- a/java/src/com/android/inputmethod/keyboard/Keyboard.java +++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java @@ -505,6 +505,8 @@ public class Keyboard { private float mDefaultKeyWidth; /** Default height of a key in this row. */ public final int mRowHeight; + /** Default keyLabelFlags in this row. */ + private int mDefaultKeyLabelFlags; private final int mCurrentY; // Will be updated by {@link Key}'s constructor. @@ -525,6 +527,7 @@ public class Keyboard { params.mBaseWidth, params.mDefaultKeyWidth); keyAttr.recycle(); + mDefaultKeyLabelFlags = 0; mCurrentY = y; mCurrentX = 0.0f; } @@ -537,6 +540,14 @@ public class Keyboard { mDefaultKeyWidth = defaultKeyWidth; } + public int getDefaultKeyLabelFlags() { + return mDefaultKeyLabelFlags; + } + + public void setDefaultKeyLabelFlags(int keyLabelFlags) { + mDefaultKeyLabelFlags = keyLabelFlags; + } + public void setXPos(float keyXPos) { mCurrentX = keyXPos; } @@ -927,6 +938,7 @@ public class Keyboard { R.styleable.Keyboard_Key); int keyboardLayout = 0; float savedDefaultKeyWidth = 0; + int savedDefaultKeyLabelFlags = 0; try { XmlParseUtils.checkAttributeExists(keyboardAttr, R.styleable.Keyboard_Include_keyboardLayout, "keyboardLayout", @@ -935,6 +947,7 @@ public class Keyboard { R.styleable.Keyboard_Include_keyboardLayout, 0); if (row != null) { savedDefaultKeyWidth = row.getDefaultKeyWidth(); + savedDefaultKeyLabelFlags = row.getDefaultKeyLabelFlags(); if (keyAttr.hasValue(R.styleable.Keyboard_Key_keyXPos)) { // Override current x coordinate. row.setXPos(row.getKeyX(keyAttr)); @@ -943,6 +956,12 @@ public class Keyboard { // Override default key width. row.setDefaultKeyWidth(row.getKeyWidth(keyAttr)); } + if (keyAttr.hasValue(R.styleable.Keyboard_Key_keyLabelFlags)) { + // Override default key label flags. + row.setDefaultKeyLabelFlags( + keyAttr.getInt(R.styleable.Keyboard_Key_keyLabelFlags, 0) + | savedDefaultKeyLabelFlags); + } } } finally { keyboardAttr.recycle(); @@ -959,8 +978,9 @@ public class Keyboard { parseMerge(parserForInclude, row, skip); } finally { if (row != null) { - // Restore default key width. + // Restore default key width and key label flags. row.setDefaultKeyWidth(savedDefaultKeyWidth); + row.setDefaultKeyLabelFlags(savedDefaultKeyLabelFlags); } parserForInclude.close(); } |