Add isIconDefined predicate to Keyboard_Case attribute

Bug: 14259323
Change-Id: I9450a5125b1809b9fada6ee6e6b253cabfa2e2b4
main
Tadashi G. Takaoka 2014-05-12 18:50:51 +09:00
parent 61ddac28de
commit 1c8e069d3c
2 changed files with 18 additions and 2 deletions

View File

@ -431,6 +431,7 @@
<!-- This should be aligned with KeyboardId.IME_ACTION_* --> <!-- This should be aligned with KeyboardId.IME_ACTION_* -->
<enum name="actionCustomLabel" value="0x100" /> <enum name="actionCustomLabel" value="0x100" />
</attr> </attr>
<attr name="isIconDefined" format="string" />
<attr name="localeCode" format="string" /> <attr name="localeCode" format="string" />
<attr name="languageCode" format="string" /> <attr name="languageCode" format="string" />
<attr name="countryCode" format="string" /> <attr name="countryCode" format="string" />

View File

@ -664,6 +664,8 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
R.styleable.Keyboard_Case_isMultiLine, id.isMultiLine()); R.styleable.Keyboard_Case_isMultiLine, id.isMultiLine());
final boolean imeActionMatched = matchInteger(caseAttr, final boolean imeActionMatched = matchInteger(caseAttr,
R.styleable.Keyboard_Case_imeAction, id.imeAction()); R.styleable.Keyboard_Case_imeAction, id.imeAction());
final boolean isIconDefinedMatched = isIconDefined(caseAttr,
R.styleable.Keyboard_Case_isIconDefined, mParams.mIconsSet);
final boolean localeCodeMatched = matchString(caseAttr, final boolean localeCodeMatched = matchString(caseAttr,
R.styleable.Keyboard_Case_localeCode, id.mLocale.toString()); R.styleable.Keyboard_Case_localeCode, id.mLocale.toString());
final boolean languageCodeMatched = matchString(caseAttr, final boolean languageCodeMatched = matchString(caseAttr,
@ -675,10 +677,11 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
&& passwordInputMatched && clobberSettingsKeyMatched && passwordInputMatched && clobberSettingsKeyMatched
&& supportsSwitchingToShortcutImeMatched && hasShortcutKeyMatched && supportsSwitchingToShortcutImeMatched && hasShortcutKeyMatched
&& languageSwitchKeyEnabledMatched && isMultiLineMatched && imeActionMatched && languageSwitchKeyEnabledMatched && isMultiLineMatched && imeActionMatched
&& localeCodeMatched && languageCodeMatched && countryCodeMatched; && isIconDefinedMatched && localeCodeMatched && languageCodeMatched
&& countryCodeMatched;
if (DEBUG) { if (DEBUG) {
startTag("<%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s>%s", TAG_CASE, startTag("<%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s>%s", TAG_CASE,
textAttr(caseAttr.getString( textAttr(caseAttr.getString(
R.styleable.Keyboard_Case_keyboardLayoutSet), "keyboardLayoutSet"), R.styleable.Keyboard_Case_keyboardLayoutSet), "keyboardLayoutSet"),
textAttr(caseAttr.getString( textAttr(caseAttr.getString(
@ -704,6 +707,8 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
"languageSwitchKeyEnabled"), "languageSwitchKeyEnabled"),
booleanAttr(caseAttr, R.styleable.Keyboard_Case_isMultiLine, booleanAttr(caseAttr, R.styleable.Keyboard_Case_isMultiLine,
"isMultiLine"), "isMultiLine"),
textAttr(caseAttr.getString(R.styleable.Keyboard_Case_isIconDefined),
"isIconDefined"),
textAttr(caseAttr.getString(R.styleable.Keyboard_Case_localeCode), textAttr(caseAttr.getString(R.styleable.Keyboard_Case_localeCode),
"localeCode"), "localeCode"),
textAttr(caseAttr.getString(R.styleable.Keyboard_Case_languageCode), textAttr(caseAttr.getString(R.styleable.Keyboard_Case_languageCode),
@ -755,6 +760,16 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
return false; return false;
} }
private static boolean isIconDefined(final TypedArray a, final int index,
final KeyboardIconsSet iconsSet) {
if (!a.hasValue(index)) {
return true;
}
final String iconName = a.getString(index);
final int iconId = KeyboardIconsSet.getIconId(iconName);
return iconsSet.getIconDrawable(iconId) != null;
}
private boolean parseDefault(final XmlPullParser parser, final KeyboardRow row, private boolean parseDefault(final XmlPullParser parser, final KeyboardRow row,
final boolean skip) throws XmlPullParserException, IOException { final boolean skip) throws XmlPullParserException, IOException {
if (DEBUG) startTag("<%s>", TAG_DEFAULT); if (DEBUG) startTag("<%s>", TAG_DEFAULT);