Add "languageCode" attribute to "case" tag in Keyboard XML
bug: 3451586 Change-Id: I08ca80e48648ba18543e9b8ca7362c06bb61a826main
parent
d9c52ba623
commit
ea6c2e3350
|
@ -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">
|
||||||
|
|
|
@ -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));
|
||||||
|
|
Loading…
Reference in New Issue