Loading java/src/com/android/inputmethod/keyboard/Key.java +2 −2 Original line number Diff line number Diff line Loading @@ -228,9 +228,9 @@ public class Key { mDisabledIconId = style.getInt(keyAttr, R.styleable.Keyboard_Key_keyIconDisabled, KeyboardIconsSet.ICON_UNDEFINED); mLabelFlags = style.getFlag(keyAttr, R.styleable.Keyboard_Key_keyLabelFlags, 0); mLabelFlags = style.getFlag(keyAttr, R.styleable.Keyboard_Key_keyLabelFlags); final boolean preserveCase = (mLabelFlags & LABEL_FLAGS_PRESERVE_CASE) != 0; int actionFlags = style.getFlag(keyAttr, R.styleable.Keyboard_Key_keyActionFlags, 0); int actionFlags = style.getFlag(keyAttr, R.styleable.Keyboard_Key_keyActionFlags); final String[] additionalMoreKeys = style.getStringArray( keyAttr, R.styleable.Keyboard_Key_additionalMoreKeys); final String[] moreKeys = KeySpecParser.insertAddtionalMoreKeys(style.getStringArray( Loading java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java +58 −49 Original line number Diff line number Diff line Loading @@ -40,17 +40,13 @@ public class KeyStyles { public String[] getStringArray(TypedArray a, int index); public String getString(TypedArray a, int index); public int getInt(TypedArray a, int index, int defaultValue); public int getFlag(TypedArray a, int index, int defaultValue); } private static class EmptyKeyStyle implements KeyStyle { EmptyKeyStyle() { // Nothing to do. public int getFlag(TypedArray a, int index); } static class EmptyKeyStyle implements KeyStyle { @Override public String[] getStringArray(TypedArray a, int index) { return parseStringArray(a, index); return KeyStyles.parseStringArray(a, index); } @Override Loading @@ -64,50 +60,47 @@ public class KeyStyles { } @Override public int getFlag(TypedArray a, int index, int defaultValue) { return a.getInt(index, defaultValue); } protected static String[] parseStringArray(TypedArray a, int index) { if (!a.hasValue(index)) return null; return KeySpecParser.parseCsvString( a.getString(index), a.getResources(), R.string.english_ime_name); public int getFlag(TypedArray a, int index) { return a.getInt(index, 0); } } private static class DeclaredKeyStyle extends EmptyKeyStyle { private final HashMap<Integer, Object> mAttributes = new HashMap<Integer, Object>(); static class DeclaredKeyStyle implements KeyStyle { private final HashMap<Integer, Object> mStyleAttributes = new HashMap<Integer, Object>(); @Override public String[] getStringArray(TypedArray a, int index) { return a.hasValue(index) ? super.getStringArray(a, index) : (String[])mAttributes.get(index); if (a.hasValue(index)) { return parseStringArray(a, index); } return (String[])mStyleAttributes.get(index); } @Override public String getString(TypedArray a, int index) { return a.hasValue(index) ? super.getString(a, index) : (String)mAttributes.get(index); if (a.hasValue(index)) { return a.getString(index); } return (String)mStyleAttributes.get(index); } @Override public int getInt(TypedArray a, int index, int defaultValue) { final Integer value = (Integer)mAttributes.get(index); return super.getInt(a, index, (value != null) ? value : defaultValue); if (a.hasValue(index)) { return a.getInt(index, defaultValue); } @Override public int getFlag(TypedArray a, int index, int defaultValue) { final Integer value = (Integer)mAttributes.get(index); return super.getFlag(a, index, defaultValue) | (value != null ? value : 0); final Integer styleValue = (Integer)mStyleAttributes.get(index); return styleValue != null ? styleValue : defaultValue; } DeclaredKeyStyle() { super(); @Override public int getFlag(TypedArray a, int index) { final int value = a.getInt(index, 0); final Integer styleValue = (Integer)mStyleAttributes.get(index); return (styleValue != null ? styleValue : 0) | value; } void parseKeyStyleAttributes(TypedArray keyAttr) { void readKeyAttributes(TypedArray keyAttr) { // TODO: Currently not all Key attributes can be declared as style. readInt(keyAttr, R.styleable.Keyboard_Key_code); readInt(keyAttr, R.styleable.Keyboard_Key_altCode); Loading @@ -126,52 +119,68 @@ public class KeyStyles { } private void readString(TypedArray a, int index) { if (a.hasValue(index)) mAttributes.put(index, a.getString(index)); if (a.hasValue(index)) { mStyleAttributes.put(index, a.getString(index)); } } private void readInt(TypedArray a, int index) { if (a.hasValue(index)) mAttributes.put(index, a.getInt(index, 0)); if (a.hasValue(index)) { mStyleAttributes.put(index, a.getInt(index, 0)); } } private void readFlag(TypedArray a, int index) { final Integer value = (Integer)mAttributes.get(index); if (a.hasValue(index)) mAttributes.put(index, a.getInt(index, 0) | (value != null ? value : 0)); final Integer value = (Integer)mStyleAttributes.get(index); if (a.hasValue(index)) { mStyleAttributes.put(index, a.getInt(index, 0) | (value != null ? value : 0)); } } private void readStringArray(TypedArray a, int index) { final String[] value = parseStringArray(a, index); if (value != null) mAttributes.put(index, value); if (value != null) { mStyleAttributes.put(index, value); } } void addParent(DeclaredKeyStyle parentStyle) { mAttributes.putAll(parentStyle.mAttributes); void addParentStyleAttributes(DeclaredKeyStyle parentStyle) { mStyleAttributes.putAll(parentStyle.mStyleAttributes); } } static String[] parseStringArray(TypedArray a, int index) { if (a.hasValue(index)) { return KeySpecParser.parseCsvString( a.getString(index), a.getResources(), R.string.english_ime_name); } return null; } public void parseKeyStyleAttributes(TypedArray keyStyleAttr, TypedArray keyAttrs, XmlPullParser parser) throws XmlPullParserException { final String styleName = keyStyleAttr.getString(R.styleable.Keyboard_KeyStyle_styleName); if (DEBUG) Log.d(TAG, String.format("<%s styleName=%s />", if (DEBUG) { Log.d(TAG, String.format("<%s styleName=%s />", Keyboard.Builder.TAG_KEY_STYLE, styleName)); if (mStyles.containsKey(styleName)) } if (mStyles.containsKey(styleName)) { throw new XmlParseUtils.ParseException( "duplicate key style declared: " + styleName, parser); } final DeclaredKeyStyle style = new DeclaredKeyStyle(); if (keyStyleAttr.hasValue(R.styleable.Keyboard_KeyStyle_parentStyle)) { final String parentStyle = keyStyleAttr.getString( R.styleable.Keyboard_KeyStyle_parentStyle); final DeclaredKeyStyle parent = mStyles.get(parentStyle); if (parent == null) if (parent == null) { throw new XmlParseUtils.ParseException( "Unknown parentStyle " + parentStyle, parser); style.addParent(parent); } style.parseKeyStyleAttributes(keyAttrs); style.addParentStyleAttributes(parent); } style.readKeyAttributes(keyAttrs); mStyles.put(styleName, style); } Loading Loading
java/src/com/android/inputmethod/keyboard/Key.java +2 −2 Original line number Diff line number Diff line Loading @@ -228,9 +228,9 @@ public class Key { mDisabledIconId = style.getInt(keyAttr, R.styleable.Keyboard_Key_keyIconDisabled, KeyboardIconsSet.ICON_UNDEFINED); mLabelFlags = style.getFlag(keyAttr, R.styleable.Keyboard_Key_keyLabelFlags, 0); mLabelFlags = style.getFlag(keyAttr, R.styleable.Keyboard_Key_keyLabelFlags); final boolean preserveCase = (mLabelFlags & LABEL_FLAGS_PRESERVE_CASE) != 0; int actionFlags = style.getFlag(keyAttr, R.styleable.Keyboard_Key_keyActionFlags, 0); int actionFlags = style.getFlag(keyAttr, R.styleable.Keyboard_Key_keyActionFlags); final String[] additionalMoreKeys = style.getStringArray( keyAttr, R.styleable.Keyboard_Key_additionalMoreKeys); final String[] moreKeys = KeySpecParser.insertAddtionalMoreKeys(style.getStringArray( Loading
java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java +58 −49 Original line number Diff line number Diff line Loading @@ -40,17 +40,13 @@ public class KeyStyles { public String[] getStringArray(TypedArray a, int index); public String getString(TypedArray a, int index); public int getInt(TypedArray a, int index, int defaultValue); public int getFlag(TypedArray a, int index, int defaultValue); } private static class EmptyKeyStyle implements KeyStyle { EmptyKeyStyle() { // Nothing to do. public int getFlag(TypedArray a, int index); } static class EmptyKeyStyle implements KeyStyle { @Override public String[] getStringArray(TypedArray a, int index) { return parseStringArray(a, index); return KeyStyles.parseStringArray(a, index); } @Override Loading @@ -64,50 +60,47 @@ public class KeyStyles { } @Override public int getFlag(TypedArray a, int index, int defaultValue) { return a.getInt(index, defaultValue); } protected static String[] parseStringArray(TypedArray a, int index) { if (!a.hasValue(index)) return null; return KeySpecParser.parseCsvString( a.getString(index), a.getResources(), R.string.english_ime_name); public int getFlag(TypedArray a, int index) { return a.getInt(index, 0); } } private static class DeclaredKeyStyle extends EmptyKeyStyle { private final HashMap<Integer, Object> mAttributes = new HashMap<Integer, Object>(); static class DeclaredKeyStyle implements KeyStyle { private final HashMap<Integer, Object> mStyleAttributes = new HashMap<Integer, Object>(); @Override public String[] getStringArray(TypedArray a, int index) { return a.hasValue(index) ? super.getStringArray(a, index) : (String[])mAttributes.get(index); if (a.hasValue(index)) { return parseStringArray(a, index); } return (String[])mStyleAttributes.get(index); } @Override public String getString(TypedArray a, int index) { return a.hasValue(index) ? super.getString(a, index) : (String)mAttributes.get(index); if (a.hasValue(index)) { return a.getString(index); } return (String)mStyleAttributes.get(index); } @Override public int getInt(TypedArray a, int index, int defaultValue) { final Integer value = (Integer)mAttributes.get(index); return super.getInt(a, index, (value != null) ? value : defaultValue); if (a.hasValue(index)) { return a.getInt(index, defaultValue); } @Override public int getFlag(TypedArray a, int index, int defaultValue) { final Integer value = (Integer)mAttributes.get(index); return super.getFlag(a, index, defaultValue) | (value != null ? value : 0); final Integer styleValue = (Integer)mStyleAttributes.get(index); return styleValue != null ? styleValue : defaultValue; } DeclaredKeyStyle() { super(); @Override public int getFlag(TypedArray a, int index) { final int value = a.getInt(index, 0); final Integer styleValue = (Integer)mStyleAttributes.get(index); return (styleValue != null ? styleValue : 0) | value; } void parseKeyStyleAttributes(TypedArray keyAttr) { void readKeyAttributes(TypedArray keyAttr) { // TODO: Currently not all Key attributes can be declared as style. readInt(keyAttr, R.styleable.Keyboard_Key_code); readInt(keyAttr, R.styleable.Keyboard_Key_altCode); Loading @@ -126,52 +119,68 @@ public class KeyStyles { } private void readString(TypedArray a, int index) { if (a.hasValue(index)) mAttributes.put(index, a.getString(index)); if (a.hasValue(index)) { mStyleAttributes.put(index, a.getString(index)); } } private void readInt(TypedArray a, int index) { if (a.hasValue(index)) mAttributes.put(index, a.getInt(index, 0)); if (a.hasValue(index)) { mStyleAttributes.put(index, a.getInt(index, 0)); } } private void readFlag(TypedArray a, int index) { final Integer value = (Integer)mAttributes.get(index); if (a.hasValue(index)) mAttributes.put(index, a.getInt(index, 0) | (value != null ? value : 0)); final Integer value = (Integer)mStyleAttributes.get(index); if (a.hasValue(index)) { mStyleAttributes.put(index, a.getInt(index, 0) | (value != null ? value : 0)); } } private void readStringArray(TypedArray a, int index) { final String[] value = parseStringArray(a, index); if (value != null) mAttributes.put(index, value); if (value != null) { mStyleAttributes.put(index, value); } } void addParent(DeclaredKeyStyle parentStyle) { mAttributes.putAll(parentStyle.mAttributes); void addParentStyleAttributes(DeclaredKeyStyle parentStyle) { mStyleAttributes.putAll(parentStyle.mStyleAttributes); } } static String[] parseStringArray(TypedArray a, int index) { if (a.hasValue(index)) { return KeySpecParser.parseCsvString( a.getString(index), a.getResources(), R.string.english_ime_name); } return null; } public void parseKeyStyleAttributes(TypedArray keyStyleAttr, TypedArray keyAttrs, XmlPullParser parser) throws XmlPullParserException { final String styleName = keyStyleAttr.getString(R.styleable.Keyboard_KeyStyle_styleName); if (DEBUG) Log.d(TAG, String.format("<%s styleName=%s />", if (DEBUG) { Log.d(TAG, String.format("<%s styleName=%s />", Keyboard.Builder.TAG_KEY_STYLE, styleName)); if (mStyles.containsKey(styleName)) } if (mStyles.containsKey(styleName)) { throw new XmlParseUtils.ParseException( "duplicate key style declared: " + styleName, parser); } final DeclaredKeyStyle style = new DeclaredKeyStyle(); if (keyStyleAttr.hasValue(R.styleable.Keyboard_KeyStyle_parentStyle)) { final String parentStyle = keyStyleAttr.getString( R.styleable.Keyboard_KeyStyle_parentStyle); final DeclaredKeyStyle parent = mStyles.get(parentStyle); if (parent == null) if (parent == null) { throw new XmlParseUtils.ParseException( "Unknown parentStyle " + parentStyle, parser); style.addParent(parent); } style.parseKeyStyleAttributes(keyAttrs); style.addParentStyleAttributes(parent); } style.readKeyAttributes(keyAttrs); mStyles.put(styleName, style); } Loading