diff options
author | 2012-04-20 06:24:51 +0900 | |
---|---|---|
committer | 2012-04-20 15:31:42 +0900 | |
commit | cf41aff251ecc94b729307ede05208a104fcd8b0 (patch) | |
tree | 5181ed357f57f35b7ebef56a709f390496b9d03e /java | |
parent | 050b577bfb9a033cfa049b2d4be2a15609ea7ce2 (diff) | |
download | latinime-cf41aff251ecc94b729307ede05208a104fcd8b0.tar.gz latinime-cf41aff251ecc94b729307ede05208a104fcd8b0.tar.xz latinime-cf41aff251ecc94b729307ede05208a104fcd8b0.zip |
Use string attribute for icon name
Change-Id: I336acf33c7e6bc993b9da9b17ec689975fa8127d
Diffstat (limited to 'java')
-rw-r--r-- | java/res/values/attrs.xml | 41 | ||||
-rw-r--r-- | java/res/values/keyboard-icons-black.xml | 6 | ||||
-rw-r--r-- | java/res/values/keyboard-icons-ics.xml | 6 | ||||
-rw-r--r-- | java/res/values/keyboard-icons-white.xml | 6 | ||||
-rw-r--r-- | java/res/xml-sw600dp/key_styles_common.xml | 26 | ||||
-rw-r--r-- | java/res/xml-sw768dp/key_styles_common.xml | 18 | ||||
-rw-r--r-- | java/res/xml/key_styles_common.xml | 28 | ||||
-rw-r--r-- | java/res/xml/key_styles_enter.xml | 6 | ||||
-rw-r--r-- | java/res/xml/key_styles_number.xml | 2 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/Key.java | 76 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java | 16 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java | 6 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java | 70 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/internal/KeyboardLabelsSet.java | 4 |
14 files changed, 144 insertions, 167 deletions
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index 4ec184334..c78013f73 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -209,20 +209,21 @@ <attr name="verticalGap" format="dimension|fraction" /> <!-- More keys keyboard layout template --> <attr name="moreKeysTemplate" format="reference" /> - <!-- Icon set for key top and key preview. --> + <!-- Icon set for key top and key preview. + These should be aligned with KeyboardIconsSet.NAMES_AND_ATTR_IDS[] --> <attr name="iconShiftKey" format="reference" /> <attr name="iconDeleteKey" format="reference" /> <attr name="iconSettingsKey" format="reference" /> <attr name="iconSpaceKey" format="reference" /> - <attr name="iconReturnKey" format="reference" /> + <attr name="iconEnterKey" format="reference" /> <attr name="iconSearchKey" format="reference" /> <attr name="iconTabKey" format="reference" /> <attr name="iconShortcutKey" format="reference" /> <attr name="iconShortcutForLabel" format="reference" /> <attr name="iconSpaceKeyForNumberLayout" format="reference" /> <attr name="iconShiftKeyShifted" format="reference" /> - <attr name="iconDisabledShortcutKey" format="reference" /> - <attr name="iconPreviewTabKey" format="reference" /> + <attr name="iconShortcutKeyDisabled" format="reference" /> + <attr name="iconTabKeyPreview" format="reference" /> <attr name="iconLanguageSwitchKey" format="reference" /> <attr name="iconZwnjKey" format="reference" /> <attr name="iconZwjKey" format="reference" /> @@ -301,37 +302,11 @@ <flag name="disableAdditionalMoreKeys" value="0x80000000" /> </attr> <!-- The icon to display on the key instead of the label. --> - <!-- TODO: Use string format !icon/name. --> - <attr name="keyIcon" format="enum"> - <!-- This should be aligned with the KeyboardIconsSet.ICON_* --> - <enum name="iconUndefined" value="0" /> - <enum name="iconShiftKey" value="1" /> - <enum name="iconDeleteKey" value="2" /> - <enum name="iconSettingsKey" value="3" /> - <enum name="iconSpaceKey" value="4" /> - <enum name="iconReturnKey" value="5" /> - <enum name="iconSearchKey" value="6" /> - <enum name="iconTabKey" value="7" /> - <enum name="iconShortcutKey" value="8" /> - <enum name="iconShortcutForLabel" value="9" /> - <enum name="iconSpaceKeyForNumberLayout" value="10" /> - <enum name="iconShiftKeyShifted" value="11" /> - <enum name="iconLanguageSwitchKey" value="14" /> - <enum name="iconZwnjKey" value="15" /> - <enum name="iconZwjKey" value="16" /> - </attr> + <attr name="keyIcon" format="string" /> <!-- The icon for disabled key --> - <!-- TODO: Use string format !icon/name. --> - <attr name="keyIconDisabled" format="enum"> - <!-- This should be aligned with the KeyboardIconsSet.ICON_* --> - <enum name="iconDisabledShortcutKey" value="12" /> - </attr> + <attr name="keyIconDisabled" format="string" /> <!-- The icon to show in the popup preview. --> - <!-- TODO: Use string format !icon/name. --> - <attr name="keyIconPreview" format="enum"> - <!-- This should be aligned with the KeyboardIconsSet.ICON_* --> - <enum name="iconPreviewTabKey" value="13" /> - </attr> + <attr name="keyIconPreview" format="string" /> <!-- The key style to specify a set of key attributes defined by <key_style/> --> <attr name="keyStyle" format="string" /> <!-- Visual insets --> diff --git a/java/res/values/keyboard-icons-black.xml b/java/res/values/keyboard-icons-black.xml index 1ff597a49..e9c5733b5 100644 --- a/java/res/values/keyboard-icons-black.xml +++ b/java/res/values/keyboard-icons-black.xml @@ -25,15 +25,15 @@ <item name="iconDeleteKey">@drawable/sym_bkeyboard_delete</item> <item name="iconSettingsKey">@drawable/sym_bkeyboard_settings</item> <item name="iconSpaceKey">@drawable/sym_bkeyboard_space</item> - <item name="iconReturnKey">@drawable/sym_bkeyboard_return</item> + <item name="iconEnterKey">@drawable/sym_bkeyboard_return</item> <item name="iconSearchKey">@drawable/sym_bkeyboard_search</item> <item name="iconTabKey">@drawable/sym_bkeyboard_tab</item> <item name="iconShortcutKey">@drawable/sym_bkeyboard_mic</item> <item name="iconShortcutForLabel">@drawable/sym_bkeyboard_label_mic</item> <item name="iconSpaceKeyForNumberLayout">@drawable/sym_bkeyboard_space</item> <item name="iconShiftKeyShifted">@drawable/sym_bkeyboard_shift_locked</item> - <item name="iconDisabledShortcutKey">@drawable/sym_bkeyboard_voice_off</item> - <item name="iconPreviewTabKey">@drawable/sym_keyboard_feedback_tab</item> + <item name="iconShortcutKeyDisabled">@drawable/sym_bkeyboard_voice_off</item> + <item name="iconTabKeyPreview">@drawable/sym_keyboard_feedback_tab</item> <!-- TODO: Needs dedicated black theme globe icon --> <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch</item> <!-- TODO: Needs dedicated black theme ZWNJ and ZWJ icons --> diff --git a/java/res/values/keyboard-icons-ics.xml b/java/res/values/keyboard-icons-ics.xml index 0774d57ac..8eba196de 100644 --- a/java/res/values/keyboard-icons-ics.xml +++ b/java/res/values/keyboard-icons-ics.xml @@ -24,15 +24,15 @@ <item name="iconDeleteKey">@drawable/sym_keyboard_delete_holo</item> <item name="iconSettingsKey">@drawable/sym_keyboard_settings_holo</item> <item name="iconSpaceKey">@null</item> - <item name="iconReturnKey">@drawable/sym_keyboard_return_holo</item> + <item name="iconEnterKey">@drawable/sym_keyboard_return_holo</item> <item name="iconSearchKey">@drawable/sym_keyboard_search_holo</item> <item name="iconTabKey">@drawable/sym_keyboard_tab_holo</item> <item name="iconShortcutKey">@drawable/sym_keyboard_voice_holo</item> <item name="iconShortcutForLabel">@drawable/sym_keyboard_label_mic_holo</item> <item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space_holo</item> <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked_holo</item> - <item name="iconDisabledShortcutKey">@drawable/sym_keyboard_voice_off_holo</item> - <item name="iconPreviewTabKey">@drawable/sym_keyboard_feedback_tab</item> + <item name="iconShortcutKeyDisabled">@drawable/sym_keyboard_voice_off_holo</item> + <item name="iconTabKeyPreview">@drawable/sym_keyboard_feedback_tab</item> <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch</item> <item name="iconZwnjKey">@drawable/sym_keyboard_zwnj_holo</item> <item name="iconZwjKey">@drawable/sym_keyboard_zwj_holo</item> diff --git a/java/res/values/keyboard-icons-white.xml b/java/res/values/keyboard-icons-white.xml index 5798786f8..e52099867 100644 --- a/java/res/values/keyboard-icons-white.xml +++ b/java/res/values/keyboard-icons-white.xml @@ -21,7 +21,7 @@ <item name="iconDeleteKey">@drawable/sym_keyboard_delete</item> <item name="iconSettingsKey">@drawable/sym_keyboard_settings</item> <item name="iconSpaceKey">@drawable/sym_keyboard_space</item> - <item name="iconReturnKey">@drawable/sym_keyboard_return</item> + <item name="iconEnterKey">@drawable/sym_keyboard_return</item>ZZ <item name="iconSearchKey">@drawable/sym_keyboard_search</item> <item name="iconTabKey">@drawable/sym_keyboard_tab</item> <item name="iconShortcutKey">@drawable/sym_keyboard_mic</item> @@ -29,8 +29,8 @@ <item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space</item> <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked</item> <!-- TODO: Needs non-holo disabled shortcut icon drawable --> - <item name="iconDisabledShortcutKey">@drawable/sym_keyboard_voice_off_holo</item> - <item name="iconPreviewTabKey">@drawable/sym_keyboard_feedback_tab</item> + <item name="iconShortcutKeyDisabled">@drawable/sym_keyboard_voice_off_holo</item> + <item name="iconTabKeyPreview">@drawable/sym_keyboard_feedback_tab</item> <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch</item> <!-- TODO: Needs dedicated black theme ZWNJ and ZWJ icons --> <item name="iconZwnjKey">@drawable/sym_keyboard_zwnj_holo</item> diff --git a/java/res/xml-sw600dp/key_styles_common.xml b/java/res/xml-sw600dp/key_styles_common.xml index 0d54dfedb..d2e523f11 100644 --- a/java/res/xml-sw600dp/key_styles_common.xml +++ b/java/res/xml-sw600dp/key_styles_common.xml @@ -43,7 +43,7 @@ <key-style latin:styleName="shiftKeyStyle" latin:code="!code/key_shift" - latin:keyIcon="iconShiftKeyShifted" + latin:keyIcon="!icon/shift_key_shifted" latin:keyActionFlags="noKeyPreview" latin:backgroundType="stickyOff" /> </case> @@ -53,7 +53,7 @@ <key-style latin:styleName="shiftKeyStyle" latin:code="!code/key_shift" - latin:keyIcon="iconShiftKeyShifted" + latin:keyIcon="!icon/shift_key_shifted" latin:keyActionFlags="noKeyPreview" latin:backgroundType="stickyOn" /> </case> @@ -61,7 +61,7 @@ <key-style latin:styleName="shiftKeyStyle" latin:code="!code/key_shift" - latin:keyIcon="iconShiftKey" + latin:keyIcon="!icon/shift_key" latin:keyActionFlags="noKeyPreview" latin:backgroundType="stickyOff" /> </default> @@ -69,7 +69,7 @@ <key-style latin:styleName="deleteKeyStyle" latin:code="!code/key_delete" - latin:keyIcon="iconDeleteKey" + latin:keyIcon="!icon/delete_key" latin:keyActionFlags="isRepeatable|noKeyPreview" latin:backgroundType="functional" /> <include @@ -83,8 +83,8 @@ <key-style latin:styleName="zwnjKeyStyle" latin:code="0x200C" - latin:keyIcon="iconZwnjKey" - latin:moreKeys="!icon/zwjKey|‍" + latin:keyIcon="!icon/zwnj_key" + latin:moreKeys="!icon/zwj_key|‍" latin:keyLabelFlags="hasPopupHint" latin:keyActionFlags="noKeyPreview" /> <key-style @@ -96,14 +96,14 @@ <key-style latin:styleName="shortcutKeyStyle" latin:code="!code/key_shortcut" - latin:keyIcon="iconShortcutKey" - latin:keyIconDisabled="iconDisabledShortcutKey" + latin:keyIcon="!icon/shortcut_key" + latin:keyIconDisabled="!icon/shortcut_key_disabled" latin:keyActionFlags="noKeyPreview|altCodeWhileTyping" latin:backgroundType="functional" /> <key-style latin:styleName="settingsKeyStyle" latin:code="!code/key_settings" - latin:keyIcon="iconSettingsKey" + latin:keyIcon="!icon/settings_key" latin:keyActionFlags="noKeyPreview|altCodeWhileTyping" latin:backgroundType="functional" /> <switch> @@ -114,16 +114,16 @@ <key-style latin:styleName="tabKeyStyle" latin:code="!code/key_action_previous" - latin:keyIcon="iconTabKey" - latin:keyIconPreview="iconPreviewTabKey" + latin:keyIcon="!icon/tab_key" + latin:keyIconPreview="!icon/tab_key_preview" latin:backgroundType="functional" /> </case> <default> <key-style latin:styleName="tabKeyStyle" latin:code="!code/key_tab" - latin:keyIcon="iconTabKey" - latin:keyIconPreview="iconPreviewTabKey" + latin:keyIcon="!icon/tab_key" + latin:keyIconPreview="!icon/tab_key_preview" latin:backgroundType="functional" /> </default> </switch> diff --git a/java/res/xml-sw768dp/key_styles_common.xml b/java/res/xml-sw768dp/key_styles_common.xml index 596bccb47..f4cca30d9 100644 --- a/java/res/xml-sw768dp/key_styles_common.xml +++ b/java/res/xml-sw768dp/key_styles_common.xml @@ -42,7 +42,7 @@ <key-style latin:styleName="shiftKeyStyle" latin:code="!code/key_shift" - latin:keyIcon="iconShiftKeyShifted" + latin:keyIcon="!icon/shift_key_shifted" latin:keyActionFlags="noKeyPreview" latin:backgroundType="stickyOff" /> </case> @@ -52,7 +52,7 @@ <key-style latin:styleName="shiftKeyStyle" latin:code="!code/key_shift" - latin:keyIcon="iconShiftKeyShifted" + latin:keyIcon="!icon/shift_key_shifted" latin:keyActionFlags="noKeyPreview" latin:backgroundType="stickyOn" /> </case> @@ -60,7 +60,7 @@ <key-style latin:styleName="shiftKeyStyle" latin:code="!code/key_shift" - latin:keyIcon="iconShiftKey" + latin:keyIcon="!icon/shift_key" latin:keyActionFlags="noKeyPreview" latin:backgroundType="stickyOff" /> </default> @@ -68,7 +68,7 @@ <key-style latin:styleName="deleteKeyStyle" latin:code="!code/key_delete" - latin:keyIcon="iconDeleteKey" + latin:keyIcon="!icon/delete_key" latin:keyActionFlags="isRepeatable|noKeyPreview" latin:backgroundType="functional" /> <include @@ -82,8 +82,8 @@ <key-style latin:styleName="zwnjKeyStyle" latin:code="0x200C" - latin:keyIcon="iconZwnjKey" - latin:moreKeys="!icon/zwjKey|‍" + latin:keyIcon="!icon/zwnj_key" + latin:moreKeys="!icon/zwj_key|‍" latin:keyLabelFlags="hasPopupHint" latin:keyActionFlags="noKeyPreview" /> <key-style @@ -95,14 +95,14 @@ <key-style latin:styleName="shortcutKeyStyle" latin:code="!code/key_shortcut" - latin:keyIcon="iconShortcutKey" - latin:keyIconDisabled="iconDisabledShortcutKey" + latin:keyIcon="!icon/shortcut_key" + latin:keyIconDisabled="!icon/shortcut_key_disabled" latin:keyActionFlags="noKeyPreview|altCodeWhileTyping" latin:backgroundType="functional" /> <key-style latin:styleName="settingsKeyStyle" latin:code="!code/key_settings" - latin:keyIcon="iconSettingsKey" + latin:keyIcon="!icon/settings_key" latin:keyActionFlags="noKeyPreview|altCodeWhileTyping" latin:backgroundType="functional" /> <switch> diff --git a/java/res/xml/key_styles_common.xml b/java/res/xml/key_styles_common.xml index f8b6e37fc..35abb4fba 100644 --- a/java/res/xml/key_styles_common.xml +++ b/java/res/xml/key_styles_common.xml @@ -47,7 +47,7 @@ <key-style latin:styleName="shiftKeyStyle" latin:code="!code/key_shift" - latin:keyIcon="iconShiftKeyShifted" + latin:keyIcon="!icon/shift_key_shifted" latin:keyActionFlags="noKeyPreview" latin:backgroundType="stickyOff" /> </case> @@ -57,7 +57,7 @@ <key-style latin:styleName="shiftKeyStyle" latin:code="!code/key_shift" - latin:keyIcon="iconShiftKeyShifted" + latin:keyIcon="!icon/shift_key_shifted" latin:keyActionFlags="noKeyPreview" latin:backgroundType="stickyOn" /> </case> @@ -65,7 +65,7 @@ <key-style latin:styleName="shiftKeyStyle" latin:code="!code/key_shift" - latin:keyIcon="iconShiftKey" + latin:keyIcon="!icon/shift_key" latin:keyActionFlags="noKeyPreview" latin:backgroundType="stickyOff" /> </default> @@ -73,7 +73,7 @@ <key-style latin:styleName="deleteKeyStyle" latin:code="!code/key_delete" - latin:keyIcon="iconDeleteKey" + latin:keyIcon="!icon/delete_key" latin:keyActionFlags="isRepeatable|noKeyPreview" latin:backgroundType="functional" /> <include @@ -112,39 +112,39 @@ <key-style latin:styleName="zwnjKeyStyle" latin:code="0x200C" - latin:keyIcon="iconZwnjKey" - latin:moreKeys="!icon/zwjKey|‍" + latin:keyIcon="!icon/zwnj_key" + latin:moreKeys="!icon/zwj_key|‍" latin:keyLabelFlags="hasPopupHint" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" /> <key-style latin:styleName="shortcutKeyStyle" latin:code="!code/key_shortcut" - latin:keyIcon="iconShortcutKey" - latin:keyIconDisabled="iconDisabledShortcutKey" + latin:keyIcon="!icon/shortcut_key" + latin:keyIconDisabled="!icon/shortcut_key_disabled" latin:keyActionFlags="noKeyPreview|altCodeWhileTyping" latin:altCode="!code/key_space" latin:parentStyle="f1MoreKeysStyle" /> <key-style latin:styleName="languageSwitchKeyStyle" latin:code="!code/key_language_switch" - latin:keyIcon="iconLanguageSwitchKey" + latin:keyIcon="!icon/language_switch_key" latin:keyActionFlags="noKeyPreview|altCodeWhileTyping|enableLongPress" latin:altCode="!code/key_space" latin:backgroundType="functional" /> <key-style latin:styleName="tabKeyStyle" latin:code="!code/key_tab" - latin:keyIcon="iconTabKey" - latin:keyIconPreview="iconPreviewTabKey" + latin:keyIcon="!icon/tab_key" + latin:keyIconPreview="!icon/tab_key_preview" latin:backgroundType="functional" /> <!-- Note: This key style is not for functional tab key. This is used for the tab key which is laid out as normal letter key. --> <key-style latin:styleName="nonSpecialBackgroundTabKeyStyle" latin:code="!code/key_tab" - latin:keyIcon="iconTabKey" - latin:keyIconPreview="iconPreviewTabKey" /> + latin:keyIcon="!icon/tab_key" + latin:keyIconPreview="!icon/tab_key_preview" /> <switch> <!-- When this qwerty keyboard has no shortcut keys but shortcut key is enabled, then symbol keyboard will have a shortcut key. That means we should use @@ -156,7 +156,7 @@ <key-style latin:styleName="toSymbolKeyStyle" latin:code="!code/key_switch_alpha_symbol" - latin:keyIcon="iconShortcutForLabel" + latin:keyIcon="!icon/shortcut_for_label" latin:keyLabel="!label/label_to_symbol_with_microphone_key" latin:keyLabelFlags="withIconRight" latin:keyActionFlags="noKeyPreview" diff --git a/java/res/xml/key_styles_enter.xml b/java/res/xml/key_styles_enter.xml index 506ed47d6..88777dca3 100644 --- a/java/res/xml/key_styles_enter.xml +++ b/java/res/xml/key_styles_enter.xml @@ -93,7 +93,7 @@ <key-style latin:styleName="defaultEnterKeyStyle" latin:code="!code/key_enter" - latin:keyIcon="iconReturnKey" + latin:keyIcon="!icon/enter_key" latin:keyLabelFlags="autoXScale|followKeyLabelRatio" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" @@ -101,7 +101,7 @@ <key-style latin:styleName="defaultActionKeyStyle" latin:code="!code/key_action_enter" - latin:keyIcon="iconUndefined" + latin:keyIcon="!icon/undefined" latin:backgroundType="action" latin:parentStyle="defaultEnterKeyStyle" /> <switch> @@ -159,7 +159,7 @@ > <key-style latin:styleName="enterKeyStyle" - latin:keyIcon="iconSearchKey" + latin:keyIcon="!icon/search_key" latin:parentStyle="defaultActionKeyStyle" /> </case> <case diff --git a/java/res/xml/key_styles_number.xml b/java/res/xml/key_styles_number.xml index 16cfa8492..1b029216d 100644 --- a/java/res/xml/key_styles_number.xml +++ b/java/res/xml/key_styles_number.xml @@ -128,7 +128,7 @@ <key-style latin:styleName="numSpaceKeyStyle" latin:code="!code/key_space" - latin:keyIcon="iconSpaceKeyForNumberLayout" + latin:keyIcon="!icon/space_key_for_number_layout" latin:keyActionFlags="enableLongPress" latin:parentStyle="numKeyBaseStyle" /> </merge> diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java index 68858e5bf..0d78c39f2 100644 --- a/java/src/com/android/inputmethod/keyboard/Key.java +++ b/java/src/com/android/inputmethod/keyboard/Key.java @@ -16,6 +16,12 @@ package com.android.inputmethod.keyboard; +import static com.android.inputmethod.keyboard.Keyboard.CODE_OUTPUT_TEXT; +import static com.android.inputmethod.keyboard.Keyboard.CODE_SHIFT; +import static com.android.inputmethod.keyboard.Keyboard.CODE_SWITCH_ALPHA_SYMBOL; +import static com.android.inputmethod.keyboard.Keyboard.CODE_UNSPECIFIED; +import static com.android.inputmethod.keyboard.internal.KeyboardIconsSet.ICON_UNDEFINED; + import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Rect; @@ -170,11 +176,11 @@ public class Key { mLabel = label; mOutputText = outputText; mCode = code; - mEnabled = (code != Keyboard.CODE_UNSPECIFIED); - mAltCode = Keyboard.CODE_UNSPECIFIED; + mEnabled = (code != CODE_UNSPECIFIED); + mAltCode = CODE_UNSPECIFIED; mIconId = iconId; - mDisabledIconId = KeyboardIconsSet.ICON_UNDEFINED; - mPreviewIconId = KeyboardIconsSet.ICON_UNDEFINED; + mDisabledIconId = ICON_UNDEFINED; + mPreviewIconId = ICON_UNDEFINED; // Horizontal gap is divided equally to both sides of the key. mX = x + mHorizontalGap / 2; mY = y; @@ -208,9 +214,9 @@ public class Key { if (keyAttr.hasValue(R.styleable.Keyboard_Key_keyStyle)) { String styleName = keyAttr.getString(R.styleable.Keyboard_Key_keyStyle); style = keyStyles.getKeyStyle(styleName); - if (style == null) - throw new XmlParseUtils.ParseException( - "Unknown key style: " + styleName, parser); + if (style == null) { + throw new XmlParseUtils.ParseException("Unknown key style: " + styleName, parser); + } } else { style = keyStyles.getEmptyKeyStyle(); } @@ -235,12 +241,12 @@ public class Key { R.styleable.Keyboard_Key_visualInsetsLeft, params.mBaseWidth, 0); mVisualInsetsRight = (int) Keyboard.Builder.getDimensionOrFraction(keyAttr, R.styleable.Keyboard_Key_visualInsetsRight, params.mBaseWidth, 0); - mPreviewIconId = style.getInt(keyAttr, - R.styleable.Keyboard_Key_keyIconPreview, KeyboardIconsSet.ICON_UNDEFINED); - mIconId = style.getInt(keyAttr, - R.styleable.Keyboard_Key_keyIcon, KeyboardIconsSet.ICON_UNDEFINED); - mDisabledIconId = style.getInt(keyAttr, - R.styleable.Keyboard_Key_keyIconDisabled, KeyboardIconsSet.ICON_UNDEFINED); + mIconId = KeySpecParser.getIconId(style.getString(keyAttr, + R.styleable.Keyboard_Key_keyIcon)); + mDisabledIconId = KeySpecParser.getIconId(style.getString(keyAttr, + R.styleable.Keyboard_Key_keyIconDisabled)); + mPreviewIconId = KeySpecParser.getIconId(style.getString(keyAttr, + R.styleable.Keyboard_Key_keyIconPreview)); mLabelFlags = style.getFlag(keyAttr, R.styleable.Keyboard_Key_keyLabelFlags) | row.getDefaultKeyLabelFlags(); @@ -272,8 +278,8 @@ public class Key { if ((mLabelFlags & LABEL_FLAGS_DISABLE_ADDITIONAL_MORE_KEYS) != 0) { additionalMoreKeys = null; } else { - additionalMoreKeys = style.getStringArray( - keyAttr, R.styleable.Keyboard_Key_additionalMoreKeys); + additionalMoreKeys = style.getStringArray(keyAttr, + R.styleable.Keyboard_Key_additionalMoreKeys); } moreKeys = KeySpecParser.insertAdditionalMoreKeys(moreKeys, additionalMoreKeys); if (moreKeys != null) { @@ -291,22 +297,21 @@ public class Key { if ((mLabelFlags & LABEL_FLAGS_FROM_CUSTOM_ACTION_LABEL) != 0) { mLabel = params.mId.mCustomActionLabel; } else { - mLabel = adjustCaseOfStringForKeyboardId(style.getString( - keyAttr, R.styleable.Keyboard_Key_keyLabel), preserveCase, params.mId); + mLabel = adjustCaseOfStringForKeyboardId(style.getString(keyAttr, + R.styleable.Keyboard_Key_keyLabel), 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); + 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 = KeySpecParser.parseCode(style.getString( - keyAttr, R.styleable.Keyboard_Key_code), - params.mCodesSet, Keyboard.CODE_UNSPECIFIED); + String outputText = adjustCaseOfStringForKeyboardId(style.getString(keyAttr, + R.styleable.Keyboard_Key_keyOutputText), preserveCase, params.mId); + final int code = KeySpecParser.parseCode(style.getString(keyAttr, + R.styleable.Keyboard_Key_code), params.mCodesSet, CODE_UNSPECIFIED); // Choose the first letter of the label as primary code if not specified. - if (code == Keyboard.CODE_UNSPECIFIED && TextUtils.isEmpty(outputText) + if (code == CODE_UNSPECIFIED && TextUtils.isEmpty(outputText) && !TextUtils.isEmpty(mLabel)) { if (StringUtils.codePointCount(mLabel) == 1) { // Use the first letter of the hint label if shiftedLetterActivated flag is @@ -321,22 +326,21 @@ public class Key { // In some locale and case, the character might be represented by multiple code // points, such as upper case Eszett of German alphabet. outputText = mLabel; - mCode = Keyboard.CODE_OUTPUT_TEXT; + mCode = CODE_OUTPUT_TEXT; } - } else if (code == Keyboard.CODE_UNSPECIFIED && outputText != null) { + } else if (code == CODE_UNSPECIFIED && outputText != null) { if (StringUtils.codePointCount(outputText) == 1) { mCode = outputText.codePointAt(0); outputText = null; } else { - mCode = Keyboard.CODE_OUTPUT_TEXT; + mCode = CODE_OUTPUT_TEXT; } } else { mCode = adjustCaseOfCodeForKeyboardId(code, preserveCase, params.mId); } mOutputText = outputText; - mAltCode = adjustCaseOfCodeForKeyboardId(KeySpecParser.parseCode(style.getString( - keyAttr, R.styleable.Keyboard_Key_altCode), - params.mCodesSet, Keyboard.CODE_UNSPECIFIED), + mAltCode = adjustCaseOfCodeForKeyboardId(KeySpecParser.parseCode(style.getString(keyAttr, + R.styleable.Keyboard_Key_altCode), params.mCodesSet, CODE_UNSPECIFIED), preserveCase, params.mId); mHashCode = computeHashCode(this); @@ -353,7 +357,7 @@ public class Key { final String text = new String(new int[] { code } , 0, 1); final String casedText = adjustCaseOfStringForKeyboardId(text, preserveCase, id); return StringUtils.codePointCount(casedText) == 1 - ? casedText.codePointAt(0) : Keyboard.CODE_UNSPECIFIED; + ? casedText.codePointAt(0) : CODE_UNSPECIFIED; } private static String adjustCaseOfStringForKeyboardId(String text, boolean preserveCase, @@ -463,11 +467,11 @@ public class Key { } public boolean isShift() { - return mCode == Keyboard.CODE_SHIFT; + return mCode == CODE_SHIFT; } public boolean isModifier() { - return mCode == Keyboard.CODE_SHIFT || mCode == Keyboard.CODE_SWITCH_ALPHA_SYMBOL; + return mCode == CODE_SHIFT || mCode == CODE_SWITCH_ALPHA_SYMBOL; } public boolean isRepeatable() { @@ -586,7 +590,7 @@ public class Key { } public Drawable getPreviewIcon(KeyboardIconsSet iconSet) { - return mPreviewIconId != KeyboardIconsSet.ICON_UNDEFINED + return mPreviewIconId != ICON_UNDEFINED ? iconSet.getIconDrawable(mPreviewIconId) : iconSet.getIconDrawable(mIconId); } @@ -726,7 +730,7 @@ public class Key { * This constructor is being used only for divider in more keys keyboard. */ protected Spacer(Keyboard.Params params, int x, int y, int width, int height) { - super(params, null, null, KeyboardIconsSet.ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED, + super(params, null, null, ICON_UNDEFINED, CODE_UNSPECIFIED, null, x, y, width, height, 0); } } diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java index e24cfa0e7..97e360e0b 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java @@ -76,14 +76,7 @@ public class KeySpecParser { } private static boolean hasIcon(String moreKeySpec) { - if (moreKeySpec.regionMatches(true, 0, PREFIX_ICON, 0, PREFIX_ICON.length())) { - final int end = indexOfLabelEnd(moreKeySpec, 0); - if (end > 0) { - return true; - } - throw new KeySpecParserError("outputText or code not specified: " + moreKeySpec); - } - return false; + return moreKeySpec.regionMatches(true, 0, PREFIX_ICON, 0, PREFIX_ICON.length()); } private static boolean hasCode(String moreKeySpec) { @@ -219,10 +212,11 @@ public class KeySpecParser { } } - static int getIconId(String moreKeySpec) { - if (hasIcon(moreKeySpec)) { + public static int getIconId(String moreKeySpec) { + if (moreKeySpec != null && hasIcon(moreKeySpec)) { final int end = moreKeySpec.indexOf(LABEL_END, PREFIX_ICON.length()); - final String name = moreKeySpec.substring(PREFIX_ICON.length(), end); + final String name = (end < 0) ? moreKeySpec.substring(PREFIX_ICON.length()) + : moreKeySpec.substring(PREFIX_ICON.length(), end); return KeyboardIconsSet.getIconId(name); } return KeyboardIconsSet.ICON_UNDEFINED; diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java b/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java index 8e0b21607..922a44158 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java @@ -145,9 +145,9 @@ public class KeyStyles { readStringArray(keyAttr, R.styleable.Keyboard_Key_moreKeys); readStringArray(keyAttr, R.styleable.Keyboard_Key_additionalMoreKeys); readFlag(keyAttr, R.styleable.Keyboard_Key_keyLabelFlags); - readInt(keyAttr, R.styleable.Keyboard_Key_keyIcon); - readInt(keyAttr, R.styleable.Keyboard_Key_keyIconDisabled); - readInt(keyAttr, R.styleable.Keyboard_Key_keyIconPreview); + readString(keyAttr, R.styleable.Keyboard_Key_keyIcon); + readString(keyAttr, R.styleable.Keyboard_Key_keyIconDisabled); + readString(keyAttr, R.styleable.Keyboard_Key_keyIconPreview); readInt(keyAttr, R.styleable.Keyboard_Key_maxMoreKeysColumn); readInt(keyAttr, R.styleable.Keyboard_Key_backgroundType); readFlag(keyAttr, R.styleable.Keyboard_Key_keyActionFlags); diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java index 07636249f..a86a9577f 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java @@ -28,48 +28,52 @@ import java.util.HashMap; public class KeyboardIconsSet { private static final String TAG = KeyboardIconsSet.class.getSimpleName(); - // The value should be aligned with the enum value of Key.keyIcon. public static final int ICON_UNDEFINED = 0; - private static final int NUM_ICONS = 16; - - private final Drawable[] mIcons = new Drawable[NUM_ICONS + 1]; + private static final int ATTR_UNDEFINED = 0; private static final HashMap<Integer, Integer> ATTR_ID_TO_ICON_ID = new HashMap<Integer, Integer>(); + // Lower case icon name to icon id map. private static final HashMap<String, Integer> sLowerCaseNameToIdsMap = new HashMap<String, Integer>(); - private static final String[] ICON_NAMES = new String[NUM_ICONS + 1]; - private static final int ATTR_UNDEFINED = 0; - static { - // The key value should be aligned with the enum value of Key.keyIcon. - addIconIdMap(0, "undefined", ATTR_UNDEFINED); - addIconIdMap(1, "shiftKey", R.styleable.Keyboard_iconShiftKey); - addIconIdMap(2, "deleteKey", R.styleable.Keyboard_iconDeleteKey); - addIconIdMap(3, "settingsKey", R.styleable.Keyboard_iconSettingsKey); - addIconIdMap(4, "spaceKey", R.styleable.Keyboard_iconSpaceKey); - addIconIdMap(5, "returnKey", R.styleable.Keyboard_iconReturnKey); - addIconIdMap(6, "searchKey", R.styleable.Keyboard_iconSearchKey); - addIconIdMap(7, "tabKey", R.styleable.Keyboard_iconTabKey); - addIconIdMap(8, "shortcutKey", R.styleable.Keyboard_iconShortcutKey); - addIconIdMap(9, "shortcutForLabel", R.styleable.Keyboard_iconShortcutForLabel); - addIconIdMap(10, "spaceKeyForNumberLayout", - R.styleable.Keyboard_iconSpaceKeyForNumberLayout); - addIconIdMap(11, "shiftKeyShifted", R.styleable.Keyboard_iconShiftKeyShifted); - addIconIdMap(12, "disabledShortcurKey", R.styleable.Keyboard_iconDisabledShortcutKey); - addIconIdMap(13, "previewTabKey", R.styleable.Keyboard_iconPreviewTabKey); - addIconIdMap(14, "languageSwitchKey", R.styleable.Keyboard_iconLanguageSwitchKey); - addIconIdMap(15, "zwnjKey", R.styleable.Keyboard_iconZwnjKey); - addIconIdMap(16, "zwjKey", R.styleable.Keyboard_iconZwjKey); - } + private static final Object[] NAMES_AND_ATTR_IDS = { + "undefined", ATTR_UNDEFINED, + "shift_key", R.styleable.Keyboard_iconShiftKey, + "delete_key", R.styleable.Keyboard_iconDeleteKey, + "settings_key", R.styleable.Keyboard_iconSettingsKey, + "space_key", R.styleable.Keyboard_iconSpaceKey, + "enter_key", R.styleable.Keyboard_iconEnterKey, + "search_key", R.styleable.Keyboard_iconSearchKey, + "tab_key", R.styleable.Keyboard_iconTabKey, + "shortcut_key", R.styleable.Keyboard_iconShortcutKey, + "shortcut_for_label", R.styleable.Keyboard_iconShortcutForLabel, + "space_key_for_number_layout", R.styleable.Keyboard_iconSpaceKeyForNumberLayout, + "shift_key_shifted", R.styleable.Keyboard_iconShiftKeyShifted, + "shortcut_key_disabled", R.styleable.Keyboard_iconShortcutKeyDisabled, + "tab_key_preview", R.styleable.Keyboard_iconTabKeyPreview, + "language_switch_key", R.styleable.Keyboard_iconLanguageSwitchKey, + "zwnj_key", R.styleable.Keyboard_iconZwnjKey, + "zwj_key", R.styleable.Keyboard_iconZwjKey, + }; + + private static int NUM_ICONS = NAMES_AND_ATTR_IDS.length / 2; + private static final String[] ICON_NAMES = new String[NUM_ICONS]; + private final Drawable[] mIcons = new Drawable[NUM_ICONS]; - private static void addIconIdMap(int iconId, String name, int attrId) { - if (attrId != ATTR_UNDEFINED) { - ATTR_ID_TO_ICON_ID.put(attrId, iconId); + static { + int iconId = ICON_UNDEFINED; + for (int i = 0; i < NAMES_AND_ATTR_IDS.length; i += 2) { + final String name = (String)NAMES_AND_ATTR_IDS[i]; + final Integer attrId = (Integer)NAMES_AND_ATTR_IDS[i + 1]; + if (attrId != ATTR_UNDEFINED) { + ATTR_ID_TO_ICON_ID.put(attrId, iconId); + } + sLowerCaseNameToIdsMap.put(name, iconId); + ICON_NAMES[iconId] = name; + iconId++; } - sLowerCaseNameToIdsMap.put(name.toLowerCase(), iconId); - ICON_NAMES[iconId] = name; } public void loadIcons(final TypedArray keyboardAttrs) { @@ -95,7 +99,7 @@ public class KeyboardIconsSet { return isValidIconId(iconId) ? ICON_NAMES[iconId] : "unknown<" + iconId + ">"; } - public static int getIconId(final String name) { + static int getIconId(final String name) { Integer iconId = sLowerCaseNameToIdsMap.get(name); if (iconId == null) { iconId = sLowerCaseNameToIdsMap.get(name.toLowerCase()); diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardLabelsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardLabelsSet.java index bd95848a9..1ba84e505 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardLabelsSet.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardLabelsSet.java @@ -345,8 +345,8 @@ public final class KeyboardLabelsSet { // U+2663: "♣" BLACK CLUB SUIT /* 108 */ "\u266A,\u2665,\u2660,\u2666,\u2663", /* 109 */ "!fixedColumnOrder!2,!hasLabels!,!label/label_time_am,!label/label_time_pm", - /* 110 */ "!icon/settingsKey|!code/key_settings", - /* 111 */ "!icon/shortcutKey|!code/key_shortcut", + /* 110 */ "!icon/settings_key|!code/key_settings", + /* 111 */ "!icon/shortcut_key|!code/key_shortcut", /* 112 */ "!hasLabels!,!label/label_next_key|!code/key_action_next", /* 113 */ "!hasLabels!,!label/label_previous_key|!code/key_action_previous", // Label for "switch to more symbol" modifier key. Must be short to fit on key! |