aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/res/values/strings.xml18
-rw-r--r--java/res/xml-sw600dp-land/kbd_number.xml2
-rw-r--r--java/res/xml-sw600dp-land/kbd_phone.xml2
-rw-r--r--java/res/xml-sw600dp-land/kbd_phone_symbols.xml2
-rw-r--r--java/res/xml-sw600dp/kbd_number.xml2
-rw-r--r--java/res/xml-sw600dp/kbd_phone.xml2
-rw-r--r--java/res/xml-sw600dp/kbd_phone_symbols.xml2
-rw-r--r--java/res/xml-sw600dp/rows_number_normal.xml51
-rw-r--r--java/res/xml-sw600dp/rows_number_password.xml21
-rw-r--r--java/res/xml-sw600dp/rows_phone.xml48
-rw-r--r--java/src/com/android/inputmethod/keyboard/Key.java15
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java88
12 files changed, 108 insertions, 145 deletions
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index e258f3bff..69fdea79f 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -248,23 +248,23 @@
<!-- Title of the item to change the keyboard theme [CHAR LIMIT=20]-->
<string name="keyboard_layout">Keyboard theme</string>
- <!-- Description for English (United Kingdom) keyboard subtype [CHAR LIMIT=22] -->
+ <!-- Description for English (United Kingdom) keyboard subtype [CHAR LIMIT=25] -->
<string name="subtype_en_GB">English (UK)</string>
- <!-- Description for English (United States) keyboard subtype [CHAR LIMIT=22] -->
+ <!-- Description for English (United States) keyboard subtype [CHAR LIMIT=25] -->
<string name="subtype_en_US">English (US)</string>
- <!-- Description for language agnostic keyboard subtype [CHAR LIMIT=22] -->
+ <!-- Description for language agnostic keyboard subtype [CHAR LIMIT=25] -->
<string name="subtype_no_language">No language</string>
- <!-- Description for language agnostic QWERTY keyboard subtype [CHAR LIMIT=22] -->
+ <!-- Description for language agnostic QWERTY keyboard subtype [CHAR LIMIT=25] -->
<string name="subtype_no_language_qwerty">No language (QWERTY)</string>
- <!-- Description for language agnostic QWERTZ keyboard subtype [CHAR LIMIT=22] -->
+ <!-- Description for language agnostic QWERTZ keyboard subtype [CHAR LIMIT=25] -->
<string name="subtype_no_language_qwertz">No language (QWERTZ)</string>
- <!-- Description for language agnostic AZERTY keyboard subtype [CHAR LIMIT=22] -->
+ <!-- Description for language agnostic AZERTY keyboard subtype [CHAR LIMIT=25] -->
<string name="subtype_no_language_azerty">No language (AZERTY)</string>
- <!-- Description for language agnostic Dvorak keyboard subtype [CHAR LIMIT=22] -->
+ <!-- Description for language agnostic Dvorak keyboard subtype [CHAR LIMIT=25] -->
<string name="subtype_no_language_dvorak">No language (Dvorak)</string>
- <!-- Description for language agnostic Colemak keyboard subtype [CHAR LIMIT=22] -->
+ <!-- Description for language agnostic Colemak keyboard subtype [CHAR LIMIT=25] -->
<string name="subtype_no_language_colemak">No language (Colemak)</string>
- <!-- Description for language agnostic PC QWERTY keyboard subtype [CHAR LIMIT=22] -->
+ <!-- Description for language agnostic PC QWERTY keyboard subtype [CHAR LIMIT=25] -->
<string name="subtype_no_language_pcqwerty">No language (PC)</string>
<!-- Title of the preference settings for custom input styles (language and keyboard layout pairs) [CHAR LIMIT=35]-->
diff --git a/java/res/xml-sw600dp-land/kbd_number.xml b/java/res/xml-sw600dp-land/kbd_number.xml
index 9d358b678..cb86b3b2f 100644
--- a/java/res/xml-sw600dp-land/kbd_number.xml
+++ b/java/res/xml-sw600dp-land/kbd_number.xml
@@ -21,7 +21,7 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHorizontalEdgesPadding="10%p"
- latin:keyWidth="15.00%p"
+ latin:keyWidth="18%p"
>
<include
latin:keyboardLayout="@xml/rows_number" />
diff --git a/java/res/xml-sw600dp-land/kbd_phone.xml b/java/res/xml-sw600dp-land/kbd_phone.xml
index abac6bd4f..71c7c04a1 100644
--- a/java/res/xml-sw600dp-land/kbd_phone.xml
+++ b/java/res/xml-sw600dp-land/kbd_phone.xml
@@ -21,7 +21,7 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHorizontalEdgesPadding="10%p"
- latin:keyWidth="15.00%p"
+ latin:keyWidth="18%p"
>
<include
latin:keyboardLayout="@xml/rows_phone" />
diff --git a/java/res/xml-sw600dp-land/kbd_phone_symbols.xml b/java/res/xml-sw600dp-land/kbd_phone_symbols.xml
index e3f56bce7..39bdae3c7 100644
--- a/java/res/xml-sw600dp-land/kbd_phone_symbols.xml
+++ b/java/res/xml-sw600dp-land/kbd_phone_symbols.xml
@@ -21,7 +21,7 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyboardHorizontalEdgesPadding="10%p"
- latin:keyWidth="15.00%p"
+ latin:keyWidth="18%p"
>
<!-- Tablet doesn't have phone symbols keyboard -->
<include
diff --git a/java/res/xml-sw600dp/kbd_number.xml b/java/res/xml-sw600dp/kbd_number.xml
index 70cf6a2ca..4a8b08c2a 100644
--- a/java/res/xml-sw600dp/kbd_number.xml
+++ b/java/res/xml-sw600dp/kbd_number.xml
@@ -20,7 +20,7 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyWidth="15.00%p"
+ latin:keyWidth="18%p"
>
<include
latin:keyboardLayout="@xml/rows_number" />
diff --git a/java/res/xml-sw600dp/kbd_phone.xml b/java/res/xml-sw600dp/kbd_phone.xml
index 72acef21c..f63f1c648 100644
--- a/java/res/xml-sw600dp/kbd_phone.xml
+++ b/java/res/xml-sw600dp/kbd_phone.xml
@@ -20,7 +20,7 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyWidth="15.00%p"
+ latin:keyWidth="18%p"
>
<include
latin:keyboardLayout="@xml/rows_phone" />
diff --git a/java/res/xml-sw600dp/kbd_phone_symbols.xml b/java/res/xml-sw600dp/kbd_phone_symbols.xml
index 9faeaf4e0..a0f55b732 100644
--- a/java/res/xml-sw600dp/kbd_phone_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_phone_symbols.xml
@@ -20,7 +20,7 @@
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyWidth="15.00%p"
+ latin:keyWidth="18%p"
>
<!-- Tablet doesn't have phone symbols keyboard -->
<include
diff --git a/java/res/xml-sw600dp/rows_number_normal.xml b/java/res/xml-sw600dp/rows_number_normal.xml
index 04d295336..3954b000e 100644
--- a/java/res/xml-sw600dp/rows_number_normal.xml
+++ b/java/res/xml-sw600dp/rows_number_normal.xml
@@ -22,25 +22,22 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
<Row>
- <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
- <Spacer
- latin:keyWidth="12.75%p" />
<Key
latin:keyLabel="-"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="9.25%p" />
+ latin:keyWidth="10%p" />
<Key
latin:keyLabel="+"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="9.25%p" />
+ latin:keyWidth="10%p" />
<Key
latin:keyLabel="."
latin:keyStyle="numKeyStyle"
- latin:keyWidth="9.25%p" />
+ latin:keyWidth="10%p" />
<Key
latin:keyLabel="1"
latin:keyStyle="numKeyStyle"
- latin:keyXPos="42.25%p" />
+ latin:keyXPos="31%p" />
<Key
latin:keyLabel="2"
latin:keyStyle="numKeyStyle" />
@@ -49,20 +46,17 @@
latin:keyStyle="numKeyStyle" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyXPos="-11.00%p"
+ latin:keyXPos="-14%p"
latin:keyWidth="fillRight" />
</Row>
<Row>
- <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
- <Spacer
- latin:keyWidth="12.75%p" />
<Key
latin:keyStyle="numStarKeyStyle"
- latin:keyWidth="9.25%p" />
+ latin:keyWidth="10%p" />
<Key
latin:keyLabel="/"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="9.25%p" />
+ latin:keyWidth="10%p" />
<switch>
<case
latin:mode="time|datetime"
@@ -72,19 +66,19 @@
latin:keyLabelFlags="hasPopupHint"
latin:moreKeys="!text/more_keys_for_am_pm"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="9.25%p" />
+ latin:keyWidth="10%p" />
</case>
<default>
<Key
latin:keyLabel=","
latin:keyStyle="numKeyStyle"
- latin:keyWidth="9.25%p" />
+ latin:keyWidth="10%p" />
</default>
</switch>
<Key
latin:keyLabel="4"
latin:keyStyle="numKeyStyle"
- latin:keyXPos="42.25%p" />
+ latin:keyXPos="31%p" />
<Key
latin:keyLabel="5"
latin:keyStyle="numKeyStyle" />
@@ -93,21 +87,18 @@
latin:keyStyle="numKeyStyle" />
<Key
latin:keyStyle="enterKeyStyle"
- latin:keyXPos="-11.00%p"
+ latin:keyXPos="-14%p"
latin:keyWidth="fillRight" />
</Row>
<Row>
- <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
- <Spacer
- latin:keyWidth="12.75%p" />
<Key
latin:keyLabel="("
latin:keyStyle="numKeyStyle"
- latin:keyWidth="9.25%p" />
+ latin:keyWidth="10%p" />
<Key
latin:keyLabel=")"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="9.25%p" />
+ latin:keyWidth="10%p" />
<switch>
<case
latin:mode="time|datetime"
@@ -115,19 +106,19 @@
<Key
latin:keyLabel=":"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="9.25%p" />
+ latin:keyWidth="10%p" />
</case>
<default>
<Key
latin:keyLabel="="
latin:keyStyle="numKeyStyle"
- latin:keyWidth="9.25%p" />
+ latin:keyWidth="10%p" />
</default>
</switch>
<Key
latin:keyLabel="7"
latin:keyStyle="numKeyStyle"
- latin:keyXPos="42.25%p" />
+ latin:keyXPos="31%p" />
<Key
latin:keyLabel="8"
latin:keyStyle="numKeyStyle" />
@@ -139,15 +130,11 @@
</Row>
<Row>
<Key
- latin:keyStyle="numTabKeyStyle"
- latin:keyWidth="11.00%p" />
- <Key
latin:keyStyle="spaceKeyStyle"
- latin:keyWidth="27.75%p"
- latin:keyXPos="12.75%p" />
+ latin:keyWidth="30%p" />
<Key
latin:keyStyle="numStarKeyStyle"
- latin:keyXPos="42.25%p" />
+ latin:keyXPos="31%p" />
<Key
latin:keyLabel="0"
latin:keyStyle="numKeyStyle" />
@@ -155,7 +142,7 @@
latin:keyLabel="#"
latin:keyStyle="numKeyStyle" />
<include
- latin:keyXPos="-11.0%p"
+ latin:keyXPos="-10%p"
latin:keyWidth="fillRight"
latin:keyboardLayout="@xml/key_shortcut" />
</Row>
diff --git a/java/res/xml-sw600dp/rows_number_password.xml b/java/res/xml-sw600dp/rows_number_password.xml
index 2a2c33d93..36f4bba46 100644
--- a/java/res/xml-sw600dp/rows_number_password.xml
+++ b/java/res/xml-sw600dp/rows_number_password.xml
@@ -24,7 +24,7 @@
<Row>
<!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
<Spacer
- latin:keyWidth="27.50%p" />
+ latin:keyWidth="23%p" />
<Key
latin:keyStyle="num1KeyStyle" />
<Key
@@ -33,13 +33,13 @@
latin:keyStyle="num3KeyStyle" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyXPos="-11.00%p"
+ latin:keyXPos="-16%p"
latin:keyWidth="fillRight" />
</Row>
<Row>
<!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
<Spacer
- latin:keyWidth="27.50%p" />
+ latin:keyWidth="23%p" />
<Key
latin:keyStyle="num4KeyStyle" />
<Key
@@ -48,13 +48,13 @@
latin:keyStyle="num6KeyStyle" />
<Key
latin:keyStyle="enterKeyStyle"
- latin:keyXPos="-11.00%p"
+ latin:keyXPos="-16%p"
latin:keyWidth="fillRight" />
</Row>
<Row>
<!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
<Spacer
- latin:keyWidth="27.50%p" />
+ latin:keyWidth="23%p" />
<Key
latin:keyStyle="num7KeyStyle" />
<Key
@@ -65,14 +65,13 @@
<Spacer />
</Row>
<Row>
+ <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
+ <Spacer
+ latin:keyWidth="41%p" />
<Key
- latin:keyStyle="tabKeyStyle"
- latin:keyWidth="11.00%p" />
- <Key
- latin:keyStyle="num0KeyStyle"
- latin:keyXPos="42.50%p"/>
+ latin:keyStyle="num0KeyStyle" />
<include
- latin:keyXPos="-11.00%p"
+ latin:keyXPos="-10%p"
latin:keyWidth="fillRight"
latin:keyboardLayout="@xml/key_shortcut" />
</Row>
diff --git a/java/res/xml-sw600dp/rows_phone.xml b/java/res/xml-sw600dp/rows_phone.xml
index 687cadb87..113ce1fa6 100644
--- a/java/res/xml-sw600dp/rows_phone.xml
+++ b/java/res/xml-sw600dp/rows_phone.xml
@@ -26,79 +26,69 @@
<include
latin:keyboardLayout="@xml/key_styles_number" />
<Row>
- <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
- <Spacer
- latin:keyWidth="12.75%p" />
<Key
latin:keyLabel="-"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="9.25%p" />
+ latin:keyWidth="10%p" />
<Key
latin:keyLabel="+"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="9.25%p" />
+ latin:keyWidth="10%p" />
<Key
latin:keyStyle="numPauseKeyStyle"
- latin:keyWidth="9.25%p" />
+ latin:keyWidth="10%p" />
<Key
latin:keyStyle="num1KeyStyle"
- latin:keyXPos="42.25%p" />
+ latin:keyXPos="31%p" />
<Key
latin:keyStyle="num2KeyStyle" />
<Key
latin:keyStyle="num3KeyStyle" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyXPos="-11.00%p"
+ latin:keyXPos="-14%p"
latin:keyWidth="fillRight" />
</Row>
<Row>
- <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
- <Spacer
- latin:keyWidth="12.75%p" />
<Key
latin:keyLabel=","
latin:keyStyle="numKeyStyle"
- latin:keyWidth="9.25%p" />
+ latin:keyWidth="10%p" />
<Key
latin:keyLabel="."
latin:keyStyle="numKeyStyle"
- latin:keyWidth="9.25%p" />
+ latin:keyWidth="10%p" />
<Key
latin:keyStyle="numWaitKeyStyle"
- latin:keyWidth="9.25%p" />
+ latin:keyWidth="10%p" />
<Key
latin:keyStyle="num4KeyStyle"
- latin:keyXPos="42.25%p" />
+ latin:keyXPos="31%p" />
<Key
latin:keyStyle="num5KeyStyle" />
<Key
latin:keyStyle="num6KeyStyle" />
<Key
latin:keyStyle="enterKeyStyle"
- latin:keyXPos="-11.00%p"
+ latin:keyXPos="-14%p"
latin:keyWidth="fillRight" />
</Row>
<Row>
- <!-- Note: This Spacer prevents the below key from being marked as a left edge key. -->
- <Spacer
- latin:keyWidth="12.75%p" />
<Key
latin:keyLabel="("
latin:keyStyle="numKeyStyle"
- latin:keyWidth="9.25%p"
- latin:keyXPos="12.75%p" />
+ latin:keyWidth="10%p" />
<Key
latin:keyLabel=")"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="9.25%p" />
+ latin:keyWidth="10%p" />
<Key
latin:keyLabel="N"
latin:keyStyle="numKeyStyle"
- latin:keyWidth="9.25%p" />
+ latin:keyWidth="10%p" />
<Key
latin:keyStyle="num7KeyStyle"
- latin:keyXPos="42.25%p" />
+ latin:keyXPos="31%p" />
<Key
latin:keyStyle="num8KeyStyle" />
<Key
@@ -108,22 +98,18 @@
</Row>
<Row>
<Key
- latin:keyStyle="numTabKeyStyle"
- latin:keyWidth="11.00%p" />
- <Key
latin:keyStyle="spaceKeyStyle"
- latin:keyWidth="27.75%p"
- latin:keyXPos="12.75%p" />
+ latin:keyWidth="30%p" />
<Key
latin:keyStyle="numStarKeyStyle"
- latin:keyXPos="42.25%p" />
+ latin:keyXPos="31%p" />
<Key
latin:keyStyle="num0KeyStyle" />
<Key
latin:keyLabel="#"
latin:keyStyle="numKeyStyle" />
<include
- latin:keyXPos="-11.0%p"
+ latin:keyXPos="-10%p"
latin:keyWidth="fillRight"
latin:keyboardLayout="@xml/key_shortcut" />
</Row>
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index 0d78c39f2..4d7fe3d8e 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -33,12 +33,10 @@ import android.util.Xml;
import com.android.inputmethod.keyboard.internal.KeySpecParser;
import com.android.inputmethod.keyboard.internal.KeySpecParser.MoreKeySpec;
-import com.android.inputmethod.keyboard.internal.KeyStyles;
import com.android.inputmethod.keyboard.internal.KeyStyles.KeyStyle;
import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.StringUtils;
-import com.android.inputmethod.latin.XmlParseUtils;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -201,7 +199,6 @@ public class Key {
*/
public Key(Resources res, Keyboard.Params params, Keyboard.Builder.Row row,
XmlPullParser parser) throws XmlPullParserException {
- final KeyStyles keyStyles = params.mKeyStyles;
final float horizontalGap = isSpacer() ? 0 : params.mHorizontalGap;
final int keyHeight = row.mRowHeight;
mVerticalGap = params.mVerticalGap;
@@ -210,17 +207,7 @@ public class Key {
final TypedArray keyAttr = res.obtainAttributes(Xml.asAttributeSet(parser),
R.styleable.Keyboard_Key);
- final KeyStyle style;
- if (keyAttr.hasValue(R.styleable.Keyboard_Key_keyStyle)) {
- String styleName = keyAttr.getString(R.styleable.Keyboard_Key_keyStyle);
- style = keyStyles.getKeyStyle(styleName);
- if (style == null) {
- throw new XmlParseUtils.ParseException("Unknown key style: " + styleName, parser);
- }
- } else {
- style = keyStyles.getEmptyKeyStyle();
- }
-
+ final KeyStyle style = params.mKeyStyles.getKeyStyle(keyAttr, parser);
final float keyXPos = row.getKeyX(keyAttr);
final float keyWidth = row.getKeyWidth(keyAttr, keyXPos);
final int keyYPos = row.getKeyY();
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java b/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java
index b32172ebe..80f4f259b 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java
@@ -32,24 +32,19 @@ public class KeyStyles {
private static final String TAG = KeyStyles.class.getSimpleName();
private static final boolean DEBUG = false;
- private final HashMap<String, DeclaredKeyStyle> mStyles =
- new HashMap<String, DeclaredKeyStyle>();
+ final HashMap<String, KeyStyle> mStyles = new HashMap<String, KeyStyle>();
- private final KeyboardTextsSet mTextsSet;
+ final KeyboardTextsSet mTextsSet;
private final KeyStyle mEmptyKeyStyle;
+ private static final String EMPTY_STYLE_NAME = "<empty>";
public KeyStyles(KeyboardTextsSet textsSet) {
mTextsSet = textsSet;
- mEmptyKeyStyle = new EmptyKeyStyle(textsSet);
+ mEmptyKeyStyle = new EmptyKeyStyle();
+ mStyles.put(EMPTY_STYLE_NAME, mEmptyKeyStyle);
}
- public static abstract class KeyStyle {
- protected final KeyboardTextsSet mTextsSet;
-
- public KeyStyle(KeyboardTextsSet textsSet) {
- mTextsSet = textsSet;
- }
-
+ public abstract class KeyStyle {
public abstract String[] getStringArray(TypedArray a, int index);
public abstract String getString(TypedArray a, int index);
public abstract int getInt(TypedArray a, int index, int defaultValue);
@@ -70,11 +65,7 @@ public class KeyStyles {
}
}
- private static class EmptyKeyStyle extends KeyStyle {
- public EmptyKeyStyle(KeyboardTextsSet textsSet) {
- super(textsSet);
- }
-
+ class EmptyKeyStyle extends KeyStyle {
@Override
public String[] getStringArray(TypedArray a, int index) {
return parseStringArray(a, index);
@@ -96,11 +87,12 @@ public class KeyStyles {
}
}
- private static class DeclaredKeyStyle extends KeyStyle {
+ private class DeclaredKeyStyle extends KeyStyle {
+ private final String mParentStyleName;
private final HashMap<Integer, Object> mStyleAttributes = new HashMap<Integer, Object>();
- public DeclaredKeyStyle(KeyboardTextsSet textsSet) {
- super(textsSet);
+ public DeclaredKeyStyle(String parentStyleName) {
+ mParentStyleName = parentStyleName;
}
@Override
@@ -108,7 +100,11 @@ public class KeyStyles {
if (a.hasValue(index)) {
return parseStringArray(a, index);
}
- return (String[])mStyleAttributes.get(index);
+ if (mStyleAttributes.containsKey(index)) {
+ return (String[])mStyleAttributes.get(index);
+ }
+ final KeyStyle parentStyle = mStyles.get(mParentStyleName);
+ return parentStyle.getStringArray(a, index);
}
@Override
@@ -116,7 +112,11 @@ public class KeyStyles {
if (a.hasValue(index)) {
return parseString(a, index);
}
- return (String)mStyleAttributes.get(index);
+ if (mStyleAttributes.containsKey(index)) {
+ return (String)mStyleAttributes.get(index);
+ }
+ final KeyStyle parentStyle = mStyles.get(mParentStyleName);
+ return parentStyle.getString(a, index);
}
@Override
@@ -124,15 +124,21 @@ public class KeyStyles {
if (a.hasValue(index)) {
return a.getInt(index, defaultValue);
}
- final Integer styleValue = (Integer)mStyleAttributes.get(index);
- return styleValue != null ? styleValue : defaultValue;
+ if (mStyleAttributes.containsKey(index)) {
+ return (Integer)mStyleAttributes.get(index);
+ }
+ final KeyStyle parentStyle = mStyles.get(mParentStyleName);
+ return parentStyle.getInt(a, index, defaultValue);
}
@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;
+ int value = a.getInt(index, 0);
+ if (mStyleAttributes.containsKey(index)) {
+ value |= (Integer)mStyleAttributes.get(index);
+ }
+ final KeyStyle parentStyle = mStyles.get(mParentStyleName);
+ return value | parentStyle.getFlag(a, index);
}
void readKeyAttributes(TypedArray keyAttr) {
@@ -177,10 +183,6 @@ public class KeyStyles {
mStyleAttributes.put(index, parseStringArray(a, index));
}
}
-
- void addParentStyleAttributes(DeclaredKeyStyle parentStyle) {
- mStyleAttributes.putAll(parentStyle.mStyleAttributes);
- }
}
public void parseKeyStyleAttributes(TypedArray keyStyleAttr, TypedArray keyAttrs,
@@ -195,26 +197,28 @@ public class KeyStyles {
}
}
- final DeclaredKeyStyle style = new DeclaredKeyStyle(mTextsSet);
+ String parentStyleName = EMPTY_STYLE_NAME;
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) {
+ parentStyleName = keyStyleAttr.getString(R.styleable.Keyboard_KeyStyle_parentStyle);
+ if (!mStyles.containsKey(parentStyleName)) {
throw new XmlParseUtils.ParseException(
- "Unknown parentStyle " + parentStyle, parser);
+ "Unknown parentStyle " + parentStyleName, parser);
}
- style.addParentStyleAttributes(parent);
}
+ final DeclaredKeyStyle style = new DeclaredKeyStyle(parentStyleName);
style.readKeyAttributes(keyAttrs);
mStyles.put(styleName, style);
}
- public KeyStyle getKeyStyle(String styleName) {
+ public KeyStyle getKeyStyle(TypedArray keyAttr, XmlPullParser parser)
+ throws XmlParseUtils.ParseException {
+ if (!keyAttr.hasValue(R.styleable.Keyboard_Key_keyStyle)) {
+ return mEmptyKeyStyle;
+ }
+ final String styleName = keyAttr.getString(R.styleable.Keyboard_Key_keyStyle);
+ if (!mStyles.containsKey(styleName)) {
+ throw new XmlParseUtils.ParseException("Unknown key style: " + styleName, parser);
+ }
return mStyles.get(styleName);
}
-
- public KeyStyle getEmptyKeyStyle() {
- return mEmptyKeyStyle;
- }
}