Fix KeyboardCodesSet code mapping

This is a follow up for Icfd6d06f.

Change-Id: I9a11c6f1c8d9654e3fb004940791055c2bcf9f17
main
Tadashi G. Takaoka 2012-04-10 15:05:55 +09:00
parent 7f0c503afc
commit 8834e3dbce
3 changed files with 17 additions and 16 deletions

View File

@ -777,7 +777,7 @@ public class Keyboard {
params.mThemeId = keyboardAttr.getInt(R.styleable.Keyboard_themeId, 0);
params.mIconsSet.loadIcons(keyboardAttr);
params.mCodesSet.setLocale(params.mId.mLocale);
params.mCodesSet.setLanguage(params.mId.mLocale.getLanguage());
final int resourceId = keyboardAttr.getResourceId(
R.styleable.Keyboard_touchPositionCorrectionData, 0);

View File

@ -19,17 +19,16 @@ package com.android.inputmethod.keyboard.internal;
import com.android.inputmethod.keyboard.Keyboard;
import java.util.HashMap;
import java.util.Locale;
public class KeyboardCodesSet {
private static final HashMap<Locale, int[]> sLocaleToCodesMap =
new HashMap<Locale, int[]>();
private static final HashMap<String, int[]> sLanguageToCodesMap =
new HashMap<String, int[]>();
private static final HashMap<String, Integer> sNameToIdMap = new HashMap<String, Integer>();
private int[] mCodes = DEFAULT;
public void setLocale(final Locale locale) {
final int[] codes = sLocaleToCodesMap.get(locale);
public void setLanguage(final String language) {
final int[] codes = sLanguageToCodesMap.get(language);
mCodes = (codes != null) ? codes : DEFAULT;
}
@ -85,6 +84,7 @@ public class KeyboardCodesSet {
Keyboard.CODE_SHORTCUT,
Keyboard.CODE_ACTION_ENTER,
Keyboard.CODE_ACTION_NEXT,
Keyboard.CODE_ACTION_PREVIOUS,
Keyboard.CODE_LANGUAGE_SWITCH,
Keyboard.CODE_UNSPECIFIED,
CODE_LEFT_PARENTHESIS,
@ -111,6 +111,7 @@ public class KeyboardCodesSet {
DEFAULT[10],
DEFAULT[11],
DEFAULT[12],
DEFAULT[13],
CODE_RIGHT_PARENTHESIS,
CODE_LEFT_PARENTHESIS,
CODE_GREATER_THAN_SIGN,
@ -121,12 +122,12 @@ public class KeyboardCodesSet {
CODE_LEFT_CURLY_BRACKET,
};
private static final String LANGUAGE_DEFAULT = null;
private static final String LANGUAGE_DEFAULT = "DEFAULT";
private static final String LANGUAGE_ARABIC = "ar";
private static final String LANGUAGE_PERSIAN = "fa";
private static final String LANGUAGE_HEBREW = "iw";
private static final Object[] LOCALE_AND_CODES = {
private static final Object[] LANGUAGE_AND_CODES = {
LANGUAGE_DEFAULT, DEFAULT,
LANGUAGE_ARABIC, RTL,
LANGUAGE_PERSIAN, RTL,
@ -138,12 +139,10 @@ public class KeyboardCodesSet {
sNameToIdMap.put(ID_TO_NAME[i], i);
}
for (int i = 0; i < LOCALE_AND_CODES.length; i += 2) {
final String localeString = (String)LOCALE_AND_CODES[i];
final int[] codes = (int[])LOCALE_AND_CODES[i + 1];
final Locale locale = (localeString == LANGUAGE_DEFAULT)
? null : new Locale(localeString);
sLocaleToCodesMap.put(locale, codes);
for (int i = 0; i < LANGUAGE_AND_CODES.length; i += 2) {
final String language = (String)LANGUAGE_AND_CODES[i];
final int[] codes = (int[])LANGUAGE_AND_CODES[i + 1];
sLanguageToCodesMap.put(language, codes);
}
}
}

View File

@ -41,8 +41,10 @@ public class KeySpecParserTests extends AndroidTestCase {
private int mSettingsIconId;
@Override
protected void setUp() {
mCodesSet.setLocale(Locale.US);
protected void setUp() throws Exception {
super.setUp();
mCodesSet.setLanguage(Locale.ENGLISH.getLanguage());
mCodeSettings = mCodesSet.getCode(CODE_SETTINGS_NAME);
mSettingsIconId = KeyboardIconsSet.getIconId(ICON_SETTINGS_NAME);
}