Merge "Add isIconDefined predicate to Keyboard_Case attribute"
commit
9e39c603d3
|
@ -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" />
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue