Add "languageCode" attribute to "case" tag in Keyboard XML

bug: 3451586
Change-Id: I08ca80e48648ba18543e9b8ca7362c06bb61a826
main
Tadashi G. Takaoka 2011-02-18 15:33:44 +09:00
parent d9c52ba623
commit ea6c2e3350
2 changed files with 13 additions and 2 deletions

View File

@ -182,6 +182,7 @@
<flag name="actionDone" value="6" /> <flag name="actionDone" value="6" />
<flag name="actionPrevious" value="7" /> <flag name="actionPrevious" value="7" />
</attr> </attr>
<attr name="languageCode" format="string" />
</declare-styleable> </declare-styleable>
<declare-styleable name="Keyboard_KeyStyle"> <declare-styleable name="Keyboard_KeyStyle">

View File

@ -433,10 +433,13 @@ public class KeyboardParser {
// this attribute with id.mImeOptions as integer value is enough for our purpose. // this attribute with id.mImeOptions as integer value is enough for our purpose.
final boolean imeActionMatched = matchInteger(a, final boolean imeActionMatched = matchInteger(a,
R.styleable.Keyboard_Case_imeAction, id.mImeAction); R.styleable.Keyboard_Case_imeAction, id.mImeAction);
final boolean languageCodeMatched = matchString(a,
R.styleable.Keyboard_Case_languageCode, id.mLocale.getLanguage());
final boolean selected = modeMatched && settingsKeyMatched && voiceEnabledMatched final boolean selected = modeMatched && settingsKeyMatched && voiceEnabledMatched
&& voiceKeyMatched && colorSchemeMatched && imeActionMatched; && voiceKeyMatched && colorSchemeMatched && imeActionMatched
&& languageCodeMatched;
if (DEBUG) Log.d(TAG, String.format("<%s%s%s%s%s%s%s> %s", TAG_CASE, if (DEBUG) Log.d(TAG, String.format("<%s%s%s%s%s%s%s%s> %s", TAG_CASE,
textAttr(KeyboardId.modeName( textAttr(KeyboardId.modeName(
a.getInt(R.styleable.Keyboard_Case_mode, -1)), "mode"), a.getInt(R.styleable.Keyboard_Case_mode, -1)), "mode"),
textAttr(KeyboardId.colorSchemeName( textAttr(KeyboardId.colorSchemeName(
@ -446,6 +449,7 @@ public class KeyboardParser {
booleanAttr(a, R.styleable.Keyboard_Case_hasVoiceKey, "hasVoiceKey"), booleanAttr(a, R.styleable.Keyboard_Case_hasVoiceKey, "hasVoiceKey"),
textAttr(KeyboardId.imeOptionsName( textAttr(KeyboardId.imeOptionsName(
a.getInt(R.styleable.Keyboard_Case_imeAction, -1)), "imeAction"), a.getInt(R.styleable.Keyboard_Case_imeAction, -1)), "imeAction"),
textAttr(a.getString(R.styleable.Keyboard_Case_languageCode), "languageCode"),
Boolean.toString(selected))); Boolean.toString(selected)));
return selected; return selected;
@ -467,6 +471,12 @@ public class KeyboardParser {
return !a.hasValue(index) || a.getBoolean(index, false) == value; return !a.hasValue(index) || a.getBoolean(index, false) == value;
} }
private static boolean matchString(TypedArray a, int index, String value) {
// If <case> does not have "index" attribute, that means this <case> is wild-card for the
// attribute.
return !a.hasValue(index) || a.getString(index).equals(value);
}
private boolean parseDefault(XmlResourceParser parser, Row row, List<Key> keys) private boolean parseDefault(XmlResourceParser parser, Row row, List<Key> keys)
throws XmlPullParserException, IOException { throws XmlPullParserException, IOException {
if (DEBUG) Log.d(TAG, String.format("<%s>", TAG_DEFAULT)); if (DEBUG) Log.d(TAG, String.format("<%s>", TAG_DEFAULT));