aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/Key.java14
-rw-r--r--java/src/com/android/inputmethod/keyboard/Keyboard.java4
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardId.java52
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardSet.java89
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardView.java40
-rw-r--r--java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java25
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java43
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java2
-rw-r--r--java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java2
9 files changed, 143 insertions, 128 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index 3a9423f4b..b3c5ed75d 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -52,9 +52,9 @@ public class Key {
public final int mAltCode;
/** Label to display */
- public final CharSequence mLabel;
+ public final String mLabel;
/** Hint label to display on the key in conjunction with the label */
- public final CharSequence mHintLabel;
+ public final String mHintLabel;
/** Flags of the label */
private final int mLabelFlags;
private static final int LABEL_FLAGS_ALIGN_LEFT = 0x01;
@@ -187,7 +187,7 @@ public class Key {
/**
* This constructor is being used only for key in popup suggestions pane.
*/
- public Key(Keyboard.Params params, CharSequence label, CharSequence hintLabel, Drawable icon,
+ public Key(Keyboard.Params params, String label, String hintLabel, Drawable icon,
int code, CharSequence outputText, int x, int y, int width, int height) {
mHeight = height - params.mVerticalGap;
mHorizontalGap = params.mHorizontalGap;
@@ -260,7 +260,7 @@ public class Key {
// Update row to have current x coordinate.
row.setXPos(keyXPos + keyWidth);
- final String[] moreKeys = style.getTextArray(keyAttr,
+ final String[] moreKeys = style.getStringArray(keyAttr,
R.styleable.Keyboard_Key_moreKeys);
// In Arabic symbol layouts, we'd like to keep digits in more keys regardless of
// config_digit_more_keys_enabled.
@@ -291,11 +291,11 @@ public class Key {
final int disabledIconAttrId = KeyboardIconsSet.getIconAttrId(style.getInt(keyAttr,
R.styleable.Keyboard_Key_keyIconDisabled, KeyboardIconsSet.ICON_UNDEFINED));
mDisabledIcon = iconsSet.getIconByAttrId(disabledIconAttrId);
- mHintLabel = style.getText(keyAttr, R.styleable.Keyboard_Key_keyHintLabel);
+ mHintLabel = style.getString(keyAttr, R.styleable.Keyboard_Key_keyHintLabel);
- mLabel = style.getText(keyAttr, R.styleable.Keyboard_Key_keyLabel);
+ mLabel = style.getString(keyAttr, R.styleable.Keyboard_Key_keyLabel);
mLabelFlags = style.getFlag(keyAttr, R.styleable.Keyboard_Key_keyLabelFlags, 0);
- mOutputText = style.getText(keyAttr, R.styleable.Keyboard_Key_keyOutputText);
+ mOutputText = style.getString(keyAttr, R.styleable.Keyboard_Key_keyOutputText);
// Choose the first letter of the label as primary code if not
// specified.
final int code = style.getInt(keyAttr, R.styleable.Keyboard_Key_code,
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index c548f1145..8c386dad2 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -245,10 +245,10 @@ public class Keyboard {
}
// TODO: Remove this method.
- public CharSequence adjustLabelCase(CharSequence label) {
+ public String adjustLabelCase(String label) {
if (mId.isAlphabetKeyboard() && isShiftedOrShiftLocked() && !TextUtils.isEmpty(label)
&& label.length() < 3 && Character.isLowerCase(label.charAt(0))) {
- return label.toString().toUpperCase(mId.mLocale);
+ return label.toUpperCase(mId.mLocale);
}
return label;
}
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardId.java b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
index d95c3b3af..8db8c9460 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardId.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
@@ -39,16 +39,14 @@ public class KeyboardId {
public static final int MODE_NUMBER = 5;
public static final int ELEMENT_ALPHABET = 0;
- /* TODO: Implement alphabet variant shift keyboard.
- public static final int ELEMENT_ALPHABET_MANUAL_TEMPORARY_SHIFT = 1;
- public static final int ELEMENT_ALPHABET_AUTOMATIC_TEMPORARY_SHIFT = 2;
- public static final int ELEMENT_ALPHABET_SHIFT_LOCK = 3;
- public static final int ELEMENT_ALPHABET_SHIFT_LOCK_SHIFT = 4;
- */
+ public static final int ELEMENT_ALPHABET_MANUAL_SHIFTED = 1;
+ public static final int ELEMENT_ALPHABET_AUTOMATIC_SHIFTED = 2;
+ public static final int ELEMENT_ALPHABET_SHIFT_LOCKED = 3;
+ public static final int ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED = 4;
public static final int ELEMENT_SYMBOLS = 5;
- public static final int ELEMENT_SYMBOLS_SHIFT = 6;
+ public static final int ELEMENT_SYMBOLS_SHIFTED = 6;
public static final int ELEMENT_PHONE = 7;
- public static final int ELEMENT_PHONE_SHIFT = 8;
+ public static final int ELEMENT_PHONE_SHIFTED = 8;
public static final int ELEMENT_NUMBER = 9;
private static final int F2KEY_MODE_NONE = 0;
@@ -60,7 +58,7 @@ public class KeyboardId {
public final int mOrientation;
public final int mWidth;
public final int mMode;
- public final int mElementState;
+ public final int mElementId;
private final int mInputType;
private final int mImeOptions;
private final boolean mSettingsKeyEnabled;
@@ -70,14 +68,14 @@ public class KeyboardId {
private final int mHashCode;
- public KeyboardId(int elementState, Locale locale, int orientation, int width, int mode,
+ public KeyboardId(int elementId, Locale locale, int orientation, int width, int mode,
int inputType, int imeOptions, boolean settingsKeyEnabled, boolean clobberSettingsKey,
boolean shortcutKeyEnabled, boolean hasShortcutKey) {
this.mLocale = locale;
this.mOrientation = orientation;
this.mWidth = width;
this.mMode = mode;
- this.mElementState = elementState;
+ this.mElementId = elementId;
this.mInputType = inputType;
this.mImeOptions = imeOptions;
this.mSettingsKeyEnabled = settingsKeyEnabled;
@@ -91,7 +89,7 @@ public class KeyboardId {
private static int hashCode(KeyboardId id) {
return Arrays.hashCode(new Object[] {
id.mOrientation,
- id.mElementState,
+ id.mElementId,
id.mMode,
id.mWidth,
id.navigateAction(),
@@ -109,7 +107,7 @@ public class KeyboardId {
if (other == this)
return true;
return other.mOrientation == this.mOrientation
- && other.mElementState == this.mElementState
+ && other.mElementId == this.mElementId
&& other.mMode == this.mMode
&& other.mWidth == this.mWidth
&& other.navigateAction() == this.navigateAction()
@@ -123,19 +121,19 @@ public class KeyboardId {
}
public boolean isAlphabetKeyboard() {
- return mElementState < ELEMENT_SYMBOLS;
+ return mElementId < ELEMENT_SYMBOLS;
}
public boolean isSymbolsKeyboard() {
- return mElementState == ELEMENT_SYMBOLS || mElementState == ELEMENT_SYMBOLS_SHIFT;
+ return mElementId == ELEMENT_SYMBOLS || mElementId == ELEMENT_SYMBOLS_SHIFTED;
}
public boolean isPhoneKeyboard() {
- return mElementState == ELEMENT_PHONE || mElementState == ELEMENT_PHONE_SHIFT;
+ return mElementId == ELEMENT_PHONE || mElementId == ELEMENT_PHONE_SHIFTED;
}
public boolean isPhoneShiftKeyboard() {
- return mElementState == ELEMENT_PHONE_SHIFT;
+ return mElementId == ELEMENT_PHONE_SHIFTED;
}
public boolean navigateAction() {
@@ -190,7 +188,7 @@ public class KeyboardId {
@Override
public String toString() {
return String.format("[%s %s %s%d %s %s %s%s%s%s%s%s%s]",
- elementStateToString(mElementState),
+ elementIdToName(mElementId),
mLocale,
(mOrientation == 1 ? "port" : "land"), mWidth,
modeName(mMode),
@@ -213,19 +211,17 @@ public class KeyboardId {
&& TextUtils.equals(a.privateImeOptions, b.privateImeOptions);
}
- public static String elementStateToString(int elementState) {
- switch (elementState) {
+ public static String elementIdToName(int elementId) {
+ switch (elementId) {
case ELEMENT_ALPHABET: return "alphabet";
- /* TODO: Implement alphabet variant shift keyboard.
- case ELEMENT_ALPHABET_MANUAL_TEMPORARY_SHIFT: return "alphabetManualTemporaryShift";
- case ELEMENT_ALPHABET_AUTOMATIC_TEMPORARY_SHIFT: return "alphabetAutomaticTemporaryShift";
- case ELEMENT_ALPHABET_SHIFT_LOCK: return "alphabetShiftLock";
- case ELEMENT_ALPHABET_SHIFT_LOCK_SHIFT: return "alphabetShiftLockShift";
- */
+ case ELEMENT_ALPHABET_MANUAL_SHIFTED: return "alphabetManualShifted";
+ case ELEMENT_ALPHABET_AUTOMATIC_SHIFTED: return "alphabetAutomaticShifted";
+ case ELEMENT_ALPHABET_SHIFT_LOCKED: return "alphabetShiftLocked";
+ case ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED: return "alphabetShiftLockShifted";
case ELEMENT_SYMBOLS: return "symbols";
- case ELEMENT_SYMBOLS_SHIFT: return "symbolsShift";
+ case ELEMENT_SYMBOLS_SHIFTED: return "symbolsShifted";
case ELEMENT_PHONE: return "phone";
- case ELEMENT_PHONE_SHIFT: return "phoneShift";
+ case ELEMENT_PHONE_SHIFTED: return "phoneShifted";
case ELEMENT_NUMBER: return "number";
default: return null;
}
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSet.java b/java/src/com/android/inputmethod/keyboard/KeyboardSet.java
index 285252044..c7f964aaa 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSet.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSet.java
@@ -40,6 +40,7 @@ import java.io.IOException;
import java.lang.ref.SoftReference;
import java.util.HashMap;
import java.util.Locale;
+import java.util.Map;
/**
* This class represents a set of keyboards. Each of them represents a different keyboard
@@ -57,7 +58,18 @@ public class KeyboardSet {
private final Context mContext;
private final Params mParams;
- private static class Params {
+ static class KeyboardElement {
+ final int mElementId;
+ final int mLayoutId;
+ final boolean mAutoGenerate;
+ KeyboardElement(int elementId, int layoutId, boolean autoGenerate) {
+ mElementId = elementId;
+ mLayoutId = layoutId;
+ mAutoGenerate = autoGenerate;
+ }
+ }
+
+ static class Params {
int mMode;
int mInputType;
int mImeOptions;
@@ -69,7 +81,8 @@ public class KeyboardSet {
Locale mLocale;
int mOrientation;
int mWidth;
- final HashMap<Integer, Integer> mElementKeyboards = new HashMap<Integer, Integer>();
+ final Map<Integer, KeyboardElement> mElementKeyboards =
+ new HashMap<Integer, KeyboardElement>();
Params() {}
}
@@ -104,16 +117,18 @@ public class KeyboardSet {
}
private Keyboard getKeyboard(boolean isSymbols, boolean isShift) {
- final int elementState = Builder.getElementState(mParams.mMode, isSymbols, isShift);
- final int xmlId = mParams.mElementKeyboards.get(elementState);
- final KeyboardId id = Builder.getKeyboardId(elementState, isSymbols, mParams);
- final Keyboard keyboard = getKeyboard(mContext, xmlId, id);
+ final int elementId = KeyboardSet.getElementId(mParams.mMode, isSymbols, isShift);
+ final KeyboardElement keyboardElement = mParams.mElementKeyboards.get(elementId);
+ // TODO: If keyboardElement.mAutoGenerate is true, the keyboard will be auto generated
+ // based on keyboardElement.mKayoutId Keyboard XML definition.
+ final KeyboardId id = KeyboardSet.getKeyboardId(elementId, isSymbols, mParams);
+ final Keyboard keyboard = getKeyboard(mContext, keyboardElement.mLayoutId, id);
return keyboard;
}
public KeyboardId getMainKeyboardId() {
- final int elementState = Builder.getElementState(mParams.mMode, false, false);
- return Builder.getKeyboardId(elementState, false, mParams);
+ final int elementId = KeyboardSet.getElementId(mParams.mMode, false, false);
+ return KeyboardSet.getKeyboardId(elementId, false, mParams);
}
private Keyboard getKeyboard(Context context, int xmlId, KeyboardId id) {
@@ -147,6 +162,30 @@ public class KeyboardSet {
return keyboard;
}
+ private static int getElementId(int mode, boolean isSymbols, boolean isShift) {
+ switch (mode) {
+ case KeyboardId.MODE_PHONE:
+ return (isSymbols && isShift)
+ ? KeyboardId.ELEMENT_PHONE_SHIFTED : KeyboardId.ELEMENT_PHONE;
+ case KeyboardId.MODE_NUMBER:
+ return KeyboardId.ELEMENT_NUMBER;
+ default:
+ if (isSymbols) {
+ return isShift
+ ? KeyboardId.ELEMENT_SYMBOLS_SHIFTED : KeyboardId.ELEMENT_SYMBOLS;
+ }
+ return KeyboardId.ELEMENT_ALPHABET;
+ }
+ }
+
+ private static KeyboardId getKeyboardId(int elementId, boolean isSymbols, Params params) {
+ final boolean hasShortcutKey = params.mVoiceKeyEnabled
+ && (isSymbols != params.mVoiceKeyOnMain);
+ return new KeyboardId(elementId, params.mLocale, params.mOrientation, params.mWidth,
+ params.mMode, params.mInputType, params.mImeOptions, params.mSettingsKeyEnabled,
+ params.mNoSettingsKey, params.mVoiceKeyEnabled, hasShortcutKey);
+ }
+
public static class Builder {
private final Context mContext;
private final String mPackageName;
@@ -211,38 +250,15 @@ public class KeyboardSet {
try {
parseKeyboardSet(mResources, R.xml.keyboard_set);
} catch (Exception e) {
- //
+ throw new RuntimeException(e.getMessage() + " in "
+ + mResources.getResourceName(R.xml.keyboard_set)
+ + " of locale " + mParams.mLocale);
} finally {
LocaleUtils.setSystemLocale(mResources, savedLocale);
}
return new KeyboardSet(mContext, mParams);
}
- // TODO: Move this method to KeyboardSet
- static KeyboardId getKeyboardId(int elementState, boolean isSymbols, Params params) {
- final boolean hasShortcutKey = params.mVoiceKeyEnabled
- && (isSymbols != params.mVoiceKeyOnMain);
- return new KeyboardId(elementState, params.mLocale, params.mOrientation, params.mWidth,
- params.mMode, params.mInputType, params.mImeOptions, params.mSettingsKeyEnabled,
- params.mNoSettingsKey, params.mVoiceKeyEnabled, hasShortcutKey);
- }
-
- // TODO: Move this method to KeyboardSet
- static int getElementState(int mode, boolean isSymbols, boolean isShift) {
- switch (mode) {
- case KeyboardId.MODE_PHONE:
- return (isSymbols && isShift)
- ? KeyboardId.ELEMENT_PHONE_SHIFT : KeyboardId.ELEMENT_PHONE;
- case KeyboardId.MODE_NUMBER:
- return KeyboardId.ELEMENT_NUMBER;
- default:
- if (isSymbols) {
- return isShift ? KeyboardId.ELEMENT_SYMBOLS_SHIFT : KeyboardId.ELEMENT_SYMBOLS;
- }
- return KeyboardId.ELEMENT_ALPHABET;
- }
- }
-
private void parseKeyboardSet(Resources res, int resId) throws XmlPullParserException,
IOException {
final XmlResourceParser parser = res.getXml(resId);
@@ -302,7 +318,10 @@ public class KeyboardSet {
R.styleable.KeyboardSet_Element_elementName, 0);
final int elementKeyboard = a.getResourceId(
R.styleable.KeyboardSet_Element_elementKeyboard, 0);
- mParams.mElementKeyboards.put(elementName, elementKeyboard);
+ final boolean elementAutoGenerate = a.getBoolean(
+ R.styleable.KeyboardSet_Element_elementAutoGenerate, false);
+ mParams.mElementKeyboards.put(elementName, new KeyboardElement(
+ elementName, elementKeyboard, elementAutoGenerate));
} finally {
a.recycle();
}
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index abc220e34..732c8afb0 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -373,7 +373,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
}
// Read fraction value in TypedArray as float.
- private static float getRatio(TypedArray a, int index) {
+ /* package */ static float getRatio(TypedArray a, int index) {
return a.getFraction(index, 1000, 1000, 1) / 1000.0f;
}
@@ -519,7 +519,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
}
// Draw key background.
- /* package */ void onDrawKeyBackground(Key key, Canvas canvas, KeyDrawParams params) {
+ protected void onDrawKeyBackground(Key key, Canvas canvas, KeyDrawParams params) {
final int bgWidth = key.mWidth - key.mVisualInsetsLeft - key.mVisualInsetsRight
+ params.mPadding.left + params.mPadding.right;
final int bgHeight = key.mHeight + params.mPadding.top + params.mPadding.bottom;
@@ -541,8 +541,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
}
// Draw key top visuals.
- /* package */ void onDrawKeyTopVisuals(Key key, Canvas canvas, Paint paint,
- KeyDrawParams params) {
+ protected void onDrawKeyTopVisuals(Key key, Canvas canvas, Paint paint, KeyDrawParams params) {
final int keyWidth = key.mWidth - key.mVisualInsetsLeft - key.mVisualInsetsRight;
final int keyHeight = key.mHeight;
final float centerX = keyWidth * 0.5f;
@@ -557,7 +556,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
float positionX = centerX;
if (key.mLabel != null) {
// Switch the character to uppercase if shift is pressed
- final CharSequence label = mKeyboard.adjustLabelCase(key.mLabel);
+ final String label = mKeyboard.adjustLabelCase(key.mLabel);
// For characters, use large font. For labels like "Done", use smaller font.
paint.setTypeface(key.selectTypeface(params.mKeyTextStyle));
final int labelSize = key.selectTextSize(params.mKeyLetterSize,
@@ -639,7 +638,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
// Draw hint label.
if (key.mHintLabel != null) {
- final CharSequence hint = key.mHintLabel;
+ final String hint = key.mHintLabel;
final int hintColor;
final int hintSize;
if (key.hasHintLabel()) {
@@ -718,7 +717,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
}
// Draw popup hint "..." at the bottom right corner of the key.
- /* package */ void drawKeyPopupHint(Key key, Canvas canvas, Paint paint, KeyDrawParams params) {
+ protected void drawKeyPopupHint(Key key, Canvas canvas, Paint paint, KeyDrawParams params) {
final int keyWidth = key.mWidth - key.mVisualInsetsLeft - key.mVisualInsetsRight;
final int keyHeight = key.mHeight;
@@ -737,8 +736,6 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
}
}
- private static final Rect sTextBounds = new Rect();
-
private static int getCharGeometryCacheKey(char reference, Paint paint) {
final int labelSize = (int)paint.getTextSize();
final Typeface face = paint.getTypeface();
@@ -754,42 +751,45 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
}
}
- private static float getCharHeight(char[] character, Paint paint) {
+ // Working variable for the following methods.
+ private final Rect mTextBounds = new Rect();
+
+ private float getCharHeight(char[] character, Paint paint) {
final Integer key = getCharGeometryCacheKey(character[0], paint);
final Float cachedValue = sTextHeightCache.get(key);
if (cachedValue != null)
return cachedValue;
- paint.getTextBounds(character, 0, 1, sTextBounds);
- final float height = sTextBounds.height();
+ paint.getTextBounds(character, 0, 1, mTextBounds);
+ final float height = mTextBounds.height();
sTextHeightCache.put(key, height);
return height;
}
- private static float getCharWidth(char[] character, Paint paint) {
+ private float getCharWidth(char[] character, Paint paint) {
final Integer key = getCharGeometryCacheKey(character[0], paint);
final Float cachedValue = sTextWidthCache.get(key);
if (cachedValue != null)
return cachedValue;
- paint.getTextBounds(character, 0, 1, sTextBounds);
- final float width = sTextBounds.width();
+ paint.getTextBounds(character, 0, 1, mTextBounds);
+ final float width = mTextBounds.width();
sTextWidthCache.put(key, width);
return width;
}
- private static float getLabelWidth(CharSequence label, Paint paint) {
- paint.getTextBounds(label.toString(), 0, label.length(), sTextBounds);
- return sTextBounds.width();
+ protected float getLabelWidth(CharSequence label, Paint paint) {
+ paint.getTextBounds(label.toString(), 0, label.length(), mTextBounds);
+ return mTextBounds.width();
}
- public float getDefaultLabelWidth(CharSequence label, Paint paint) {
+ public float getDefaultLabelWidth(String label, Paint paint) {
paint.setTextSize(mKeyDrawParams.mKeyLabelSize);
paint.setTypeface(mKeyDrawParams.mKeyTextStyle);
return getLabelWidth(label, paint);
}
- private static void drawIcon(Canvas canvas, Drawable icon, int x, int y, int width,
+ protected static void drawIcon(Canvas canvas, Drawable icon, int x, int y, int width,
int height) {
canvas.translate(x, y);
icon.setBounds(0, 0, width, height);
diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java
index aa0f9751d..6dcc1dc36 100644
--- a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java
@@ -222,7 +222,8 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
if (ENABLE_CAPSLOCK_BY_DOUBLETAP && keyboard.mId.isAlphabetKeyboard()) {
final int pointerIndex = firstDown.getActionIndex();
final int id = firstDown.getPointerId(pointerIndex);
- final PointerTracker tracker = getPointerTracker(id);
+ final PointerTracker tracker = PointerTracker.getPointerTracker(
+ id, LatinKeyboardView.this);
final Key key = tracker.getKeyOn((int)firstDown.getX(), (int)firstDown.getY());
// If the first down event is on shift key.
if (key != null && key.isShift()) {
@@ -241,7 +242,8 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
final MotionEvent secondDown = secondTap;
final int pointerIndex = secondDown.getActionIndex();
final int id = secondDown.getPointerId(pointerIndex);
- final PointerTracker tracker = getPointerTracker(id);
+ final PointerTracker tracker = PointerTracker.getPointerTracker(
+ id, LatinKeyboardView.this);
final Key key = tracker.getKeyOn((int)secondDown.getX(), (int)secondDown.getY());
// If the second down event is also on shift key.
if (key != null && key.isShift()) {
@@ -522,10 +524,6 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
return true;
}
- private PointerTracker getPointerTracker(final int id) {
- return PointerTracker.getPointerTracker(id, this);
- }
-
public boolean isInSlidingKeyInput() {
if (mMoreKeysPanel != null) {
return true;
@@ -609,7 +607,7 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
}
if (mKeyTimerHandler.isInKeyRepeat()) {
- final PointerTracker tracker = getPointerTracker(id);
+ final PointerTracker tracker = PointerTracker.getPointerTracker(id, this);
// Key repeating timer will be canceled if 2 or more keys are in action, and current
// event (UP or DOWN) is non-modifier key.
if (pointerCount > 1 && !tracker.isModifier()) {
@@ -623,7 +621,7 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
// multi-touch panel.
if (nonDistinctMultitouch) {
// Use only main (id=0) pointer tracker.
- PointerTracker tracker = getPointerTracker(0);
+ final PointerTracker tracker = PointerTracker.getPointerTracker(0, this);
if (pointerCount == 1 && oldPointerCount == 2) {
// Multi-touch to single touch transition.
// Send a down event for the latest pointer if the key is different from the
@@ -652,7 +650,8 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
if (action == MotionEvent.ACTION_MOVE) {
for (int i = 0; i < pointerCount; i++) {
- final PointerTracker tracker = getPointerTracker(me.getPointerId(i));
+ final PointerTracker tracker = PointerTracker.getPointerTracker(
+ me.getPointerId(i), this);
final int px, py;
if (mMoreKeysPanel != null
&& tracker.mPointerId == mMoreKeysPanelPointerTrackerId) {
@@ -669,7 +668,8 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
}
}
} else {
- getPointerTracker(id).processMotionEvent(action, x, y, eventTime, this);
+ final PointerTracker tracker = PointerTracker.getPointerTracker(id, this);
+ tracker.processMotionEvent(action, x, y, eventTime, this);
}
return true;
@@ -739,7 +739,7 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
*/
public boolean dispatchHoverEvent(MotionEvent event) {
if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) {
- final PointerTracker tracker = getPointerTracker(0);
+ final PointerTracker tracker = PointerTracker.getPointerTracker(0, this);
return AccessibleKeyboardViewProxy.getInstance().dispatchHoverEvent(event, tracker);
}
@@ -771,8 +771,7 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
}
@Override
- /* package */ void onDrawKeyTopVisuals(Key key, Canvas canvas, Paint paint,
- KeyDrawParams params) {
+ protected void onDrawKeyTopVisuals(Key key, Canvas canvas, Paint paint, KeyDrawParams params) {
super.onDrawKeyTopVisuals(key, canvas, paint, params);
if (key.mCode == Keyboard.CODE_SPACE) {
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java b/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java
index faea38941..b7215ec1b 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java
@@ -40,8 +40,8 @@ public class KeyStyles {
private static final KeyStyle EMPTY_KEY_STYLE = new EmptyKeyStyle();
public interface KeyStyle {
- public String[] getTextArray(TypedArray a, int index);
- public CharSequence getText(TypedArray a, int index);
+ 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);
}
@@ -52,13 +52,13 @@ public class KeyStyles {
}
@Override
- public String[] getTextArray(TypedArray a, int index) {
- return parseTextArray(a, index);
+ public String[] getStringArray(TypedArray a, int index) {
+ return parseStringArray(a, index);
}
@Override
- public CharSequence getText(TypedArray a, int index) {
- return a.getText(index);
+ public String getString(TypedArray a, int index) {
+ return a.getString(index);
}
@Override
@@ -71,16 +71,15 @@ public class KeyStyles {
return a.getInt(index, defaultValue);
}
- protected static String[] parseTextArray(TypedArray a, int index) {
+ protected static String[] parseStringArray(TypedArray a, int index) {
if (!a.hasValue(index))
return null;
- final CharSequence text = a.getText(index);
- return parseCsvText(text.toString(), a.getResources(), R.string.english_ime_name);
+ return parseCsvString(a.getString(index), a.getResources(), R.string.english_ime_name);
}
}
/* package for test */
- static String[] parseCsvText(String rawText, Resources res, int packageNameResId) {
+ static String[] parseCsvString(String rawText, Resources res, int packageNameResId) {
final String text = Utils.resolveStringResource(rawText, res, packageNameResId);
final int size = text.length();
if (size == 0) {
@@ -139,15 +138,15 @@ public class KeyStyles {
private final HashMap<Integer, Object> mAttributes = new HashMap<Integer, Object>();
@Override
- public String[] getTextArray(TypedArray a, int index) {
+ public String[] getStringArray(TypedArray a, int index) {
return a.hasValue(index)
- ? super.getTextArray(a, index) : (String[])mAttributes.get(index);
+ ? super.getStringArray(a, index) : (String[])mAttributes.get(index);
}
@Override
- public CharSequence getText(TypedArray a, int index) {
+ public String getString(TypedArray a, int index) {
return a.hasValue(index)
- ? super.getText(a, index) : (CharSequence)mAttributes.get(index);
+ ? super.getString(a, index) : (String)mAttributes.get(index);
}
@Override
@@ -170,10 +169,10 @@ public class KeyStyles {
// 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);
- readText(keyAttr, R.styleable.Keyboard_Key_keyLabel);
- readText(keyAttr, R.styleable.Keyboard_Key_keyOutputText);
- readText(keyAttr, R.styleable.Keyboard_Key_keyHintLabel);
- readTextArray(keyAttr, R.styleable.Keyboard_Key_moreKeys);
+ readString(keyAttr, R.styleable.Keyboard_Key_keyLabel);
+ readString(keyAttr, R.styleable.Keyboard_Key_keyOutputText);
+ readString(keyAttr, R.styleable.Keyboard_Key_keyHintLabel);
+ readStringArray(keyAttr, R.styleable.Keyboard_Key_moreKeys);
readFlag(keyAttr, R.styleable.Keyboard_Key_keyLabelFlags);
readInt(keyAttr, R.styleable.Keyboard_Key_keyIcon);
readInt(keyAttr, R.styleable.Keyboard_Key_keyIconDisabled);
@@ -183,9 +182,9 @@ public class KeyStyles {
readFlag(keyAttr, R.styleable.Keyboard_Key_keyActionFlags);
}
- private void readText(TypedArray a, int index) {
+ private void readString(TypedArray a, int index) {
if (a.hasValue(index))
- mAttributes.put(index, a.getText(index));
+ mAttributes.put(index, a.getString(index));
}
private void readInt(TypedArray a, int index) {
@@ -199,8 +198,8 @@ public class KeyStyles {
mAttributes.put(index, a.getInt(index, 0) | (value != null ? value : 0));
}
- private void readTextArray(TypedArray a, int index) {
- final CharSequence[] value = parseTextArray(a, index);
+ private void readStringArray(TypedArray a, int index) {
+ final String[] value = parseStringArray(a, index);
if (value != null)
mAttributes.put(index, value);
}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java
index bc8b7e3f7..38c31adce 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java
@@ -43,6 +43,8 @@ public class KeyboardState {
public void setAlphabetManualShiftedKeyboard();
public void setAlphabetAutomaticShiftedKeyboard();
public void setAlphabetShiftLockedKeyboard();
+ // TODO: Add this.
+ //public void setAlphabetShiftLockShiftedKeyboard();
public void setSymbolsKeyboard();
public void setSymbolsShiftedKeyboard();
diff --git a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java
index 3d26d972d..f42b8e681 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java
@@ -72,7 +72,7 @@ public class MoreSuggestions extends Keyboard {
int pos = fromPos, rowStartPos = fromPos;
final int size = Math.min(suggestions.size(), SuggestionsView.MAX_SUGGESTIONS);
while (pos < size) {
- final CharSequence word = suggestions.getWord(pos);
+ final String word = suggestions.getWord(pos).toString();
// TODO: Should take care of text x-scaling.
mWidths[pos] = (int)view.getDefaultLabelWidth(word, paint) + padding;
final int numColumn = pos - rowStartPos + 1;