aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2012-01-27 04:33:48 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-01-27 04:33:48 -0800
commited50cf005b120cba87dc229b7d58b3d982297420 (patch)
tree6233a54a3c94d3c204b6c6606ebb5abe153fb4a8 /java/src
parent566cded5e75bbb0250009183c79f14c23b3a6bb6 (diff)
parenta1e370ee4fd033fae0f783d9120f6ab75d1ce711 (diff)
downloadlatinime-ed50cf005b120cba87dc229b7d58b3d982297420.tar.gz
latinime-ed50cf005b120cba87dc229b7d58b3d982297420.tar.xz
latinime-ed50cf005b120cba87dc229b7d58b3d982297420.zip
Merge "Support keyXPos/keyWidth override in <include>"
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/Keyboard.java43
1 files changed, 38 insertions, 5 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index abe5b62ee..dd882098d 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -21,6 +21,7 @@ import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
import android.text.TextUtils;
+import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
@@ -571,7 +572,7 @@ public class Keyboard {
private final Params mParams;
/** Default width of a key in this row. */
- public final float mDefaultKeyWidth;
+ private float mDefaultKeyWidth;
/** Default height of a key in this row. */
public final int mRowHeight;
@@ -598,6 +599,14 @@ public class Keyboard {
mCurrentX = 0.0f;
}
+ public float getDefaultKeyWidth() {
+ return mDefaultKeyWidth;
+ }
+
+ public void setDefaultKeyWidth(float defaultKeyWidth) {
+ mDefaultKeyWidth = defaultKeyWidth;
+ }
+
public void setXPos(float keyXPos) {
mCurrentX = keyXPos;
}
@@ -638,6 +647,10 @@ public class Keyboard {
return mCurrentX;
}
+ public float getKeyWidth(TypedArray keyAttr) {
+ return getKeyWidth(keyAttr, mCurrentX);
+ }
+
public float getKeyWidth(TypedArray keyAttr, float keyXPos) {
final int widthType = Builder.getEnumValue(keyAttr,
R.styleable.Keyboard_Key_keyWidth, KEYWIDTH_NOT_ENUM);
@@ -937,17 +950,33 @@ public class Keyboard {
if (skip) {
XmlParseUtils.checkEndTag(TAG_INCLUDE, parser);
} else {
- final TypedArray a = mResources.obtainAttributes(Xml.asAttributeSet(parser),
+ final AttributeSet attr = Xml.asAttributeSet(parser);
+ final TypedArray keyboardAttr = mResources.obtainAttributes(attr,
R.styleable.Keyboard_Include);
+ final TypedArray keyAttr = mResources.obtainAttributes(attr,
+ R.styleable.Keyboard_Key);
int keyboardLayout = 0;
+ float savedDefaultKeyWidth = 0;
try {
- XmlParseUtils.checkAttributeExists(a,
+ XmlParseUtils.checkAttributeExists(keyboardAttr,
R.styleable.Keyboard_Include_keyboardLayout, "keyboardLayout",
TAG_INCLUDE, parser);
- keyboardLayout = a.getResourceId(
+ keyboardLayout = keyboardAttr.getResourceId(
R.styleable.Keyboard_Include_keyboardLayout, 0);
+ if (row != null) {
+ savedDefaultKeyWidth = row.getDefaultKeyWidth();
+ if (keyAttr.hasValue(R.styleable.Keyboard_Key_keyXPos)) {
+ // Override current x coordinate.
+ row.setXPos(row.getKeyX(keyAttr));
+ }
+ if (keyAttr.hasValue(R.styleable.Keyboard_Key_keyWidth)) {
+ // Override default key width.
+ row.setDefaultKeyWidth(row.getKeyWidth(keyAttr));
+ }
+ }
} finally {
- a.recycle();
+ keyboardAttr.recycle();
+ keyAttr.recycle();
}
XmlParseUtils.checkEndTag(TAG_INCLUDE, parser);
@@ -957,6 +986,10 @@ public class Keyboard {
try {
parseMerge(parserForInclude, row, skip);
} finally {
+ if (row != null) {
+ // Restore default key width.
+ row.setDefaultKeyWidth(savedDefaultKeyWidth);
+ }
parserForInclude.close();
}
}