summaryrefslogtreecommitdiff
path: root/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2014-02-09 23:24:02 +0900
committerTadashi G. Takaoka <takaoka@google.com>2014-02-10 11:14:35 +0900
commitf70bcf3d323b13b60c0567c69768ed986647f86a (patch)
tree1ecc03cd189b2db3867d0f847c994e0618deb5f8 /java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
parente592c1b291b9eba807b0ee888a3944555d296877 (diff)
Refactor Key constructors
This is a followup of I76432556ca. Change-Id: Ie2c8f7c23352a33db28e89ee8e6ebaba9eb760a3
Diffstat (limited to 'java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java')
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java28
1 files changed, 23 insertions, 5 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
index 47e9142e2..340d184b6 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
@@ -21,6 +21,7 @@ import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
import android.os.Build;
+import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.Log;
import android.util.TypedValue;
@@ -37,6 +38,7 @@ import com.android.inputmethod.latin.utils.RunInLocale;
import com.android.inputmethod.latin.utils.StringUtils;
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
import com.android.inputmethod.latin.utils.XmlParseUtils;
+import com.android.inputmethod.latin.utils.XmlParseUtils.ParseException;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -455,11 +457,15 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
if (Build.VERSION.SDK_INT < supportedMinSdkVersion) {
continue;
}
+ final int labelFlags = row.getDefaultKeyLabelFlags();
+ final int backgroundType = row.getDefaultBackgroundType();
final int x = (int)row.getKeyX(null);
final int y = row.getKeyY();
- final Key key = new Key(mParams, label, null /* hintLabel */, 0 /* iconId */,
- code, outputText, x, y, (int)keyWidth, row.getRowHeight(),
- row.getDefaultKeyLabelFlags(), row.getDefaultBackgroundType());
+ final int width = (int)keyWidth;
+ final int height = row.getRowHeight();
+ final Key key = new Key(label, KeyboardIconsSet.ICON_UNDEFINED, code, outputText,
+ null /* hintLabel */, labelFlags, backgroundType, x, y, width, height,
+ mParams.mHorizontalGap, mParams.mVerticalGap);
endKey(key);
row.advanceXPos(keyWidth);
}
@@ -476,7 +482,15 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
if (DEBUG) startEndTag("<%s /> skipped", TAG_KEY);
return;
}
- final Key key = new Key(mResources, mParams, row, parser);
+ final TypedArray keyAttr = mResources.obtainAttributes(
+ Xml.asAttributeSet(parser), R.styleable.Keyboard_Key);
+ final KeyStyle keyStyle = mParams.mKeyStyles.getKeyStyle(keyAttr, parser);
+ final String keySpec = keyStyle.getString(keyAttr, R.styleable.Keyboard_Key_keySpec);
+ if (TextUtils.isEmpty(keySpec)) {
+ throw new ParseException("Empty keySpec", parser);
+ }
+ final Key key = new Key(keySpec, keyAttr, keyStyle, mParams, row);
+ keyAttr.recycle();
if (DEBUG) {
startEndTag("<%s%s %s moreKeys=%s />", TAG_KEY, (key.isEnabled() ? "" : " disabled"),
key, Arrays.toString(key.getMoreKeys()));
@@ -492,7 +506,11 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
if (DEBUG) startEndTag("<%s /> skipped", TAG_SPACER);
return;
}
- final Key.Spacer spacer = new Key.Spacer(mResources, mParams, row, parser);
+ final TypedArray keyAttr = mResources.obtainAttributes(
+ Xml.asAttributeSet(parser), R.styleable.Keyboard_Key);
+ final KeyStyle keyStyle = mParams.mKeyStyles.getKeyStyle(keyAttr, parser);
+ final Key spacer = new Key.Spacer(keyAttr, keyStyle, mParams, row);
+ keyAttr.recycle();
if (DEBUG) startEndTag("<%s />", TAG_SPACER);
XmlParseUtils.checkEndTag(TAG_SPACER, parser);
endKey(spacer);