aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/EmojiLayoutParams.java4
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/CodesArrayParser.java32
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java8
4 files changed, 37 insertions, 9 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/EmojiLayoutParams.java b/java/src/com/android/inputmethod/keyboard/EmojiLayoutParams.java
index 267fad5cd..71790b7d6 100644
--- a/java/src/com/android/inputmethod/keyboard/EmojiLayoutParams.java
+++ b/java/src/com/android/inputmethod/keyboard/EmojiLayoutParams.java
@@ -75,9 +75,7 @@ public class EmojiLayoutParams {
public void setActionBarProperties(LinearLayout ll) {
final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) ll.getLayoutParams();
- lp.height = mEmojiActionBarHeight;
- lp.topMargin = 0;
- lp.bottomMargin = mBottomPadding;
+ lp.height = mEmojiActionBarHeight - mBottomPadding;
ll.setLayoutParams(lp);
}
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index 74edd87cf..ad6e2c0f2 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -155,7 +155,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
}
public void saveKeyboardState() {
- if (getKeyboard() != null) {
+ if (getKeyboard() != null || isShowingEmojiKeyboard()) {
mState.onSaveKeyboardState();
}
}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/CodesArrayParser.java b/java/src/com/android/inputmethod/keyboard/internal/CodesArrayParser.java
index c10fdbace..4ccecb2f0 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/CodesArrayParser.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/CodesArrayParser.java
@@ -18,6 +18,8 @@ package com.android.inputmethod.keyboard.internal;
import com.android.inputmethod.latin.Constants;
+import android.text.TextUtils;
+
/**
* The string parser of codesArray specification for <GridRows />. The attribute codesArray is an
* array of string.
@@ -34,7 +36,7 @@ import com.android.inputmethod.latin.Constants;
public final class CodesArrayParser {
// Constants for parsing.
private static final char COMMA = ',';
- private static final char VERTICAL_BAR = '|';
+ private static final String VERTICAL_BAR_STRING = "\\|";
private static final String COMMA_STRING = ",";
private static final int BASE_HEX = 16;
@@ -43,8 +45,11 @@ public final class CodesArrayParser {
}
private static String getLabelSpec(final String codesArraySpec) {
- final int pos = codesArraySpec.indexOf(VERTICAL_BAR);
- return (pos < 0) ? codesArraySpec : codesArraySpec.substring(0, pos);
+ final String[] strs = codesArraySpec.split(VERTICAL_BAR_STRING, -1);
+ if (strs.length <= 1) {
+ return codesArraySpec;
+ }
+ return strs[0];
}
public static String parseLabel(final String codesArraySpec) {
@@ -58,8 +63,25 @@ public final class CodesArrayParser {
}
private static String getCodeSpec(final String codesArraySpec) {
- final int pos = codesArraySpec.indexOf(VERTICAL_BAR);
- return (pos < 0) ? codesArraySpec : codesArraySpec.substring(pos + 1);
+ final String[] strs = codesArraySpec.split(VERTICAL_BAR_STRING, -1);
+ if (strs.length <= 1) {
+ return codesArraySpec;
+ }
+ return TextUtils.isEmpty(strs[1]) ? strs[0] : strs[1];
+ }
+
+ // codesArraySpec consists of:
+ // <label>|<code0>,<code1>,...|<minSupportSdkVersion>
+ public static int getMinSupportSdkVersion(final String codesArraySpec) {
+ final String[] strs = codesArraySpec.split(VERTICAL_BAR_STRING, -1);
+ if (strs.length <= 2) {
+ return 0;
+ }
+ try {
+ return Integer.parseInt(strs[2]);
+ } catch (NumberFormatException e) {
+ return 0;
+ }
}
public static int parseCode(final String codesArraySpec) {
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
index 22f7a83fc..c1ae65695 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
@@ -20,6 +20,7 @@ import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
+import android.os.Build;
import android.util.AttributeSet;
import android.util.Log;
import android.util.TypedValue;
@@ -436,17 +437,24 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
final String label;
final int code;
final String outputText;
+ final int supportedMinSdkVersion;
if (codesArrayId != 0) {
final String codeArraySpec = array[i];
label = CodesArrayParser.parseLabel(codeArraySpec);
code = CodesArrayParser.parseCode(codeArraySpec);
outputText = CodesArrayParser.parseOutputText(codeArraySpec);
+ supportedMinSdkVersion =
+ CodesArrayParser.getMinSupportSdkVersion(codeArraySpec);
} else {
final String textArraySpec = array[i];
// TODO: Utilize KeySpecParser or write more generic TextsArrayParser.
label = textArraySpec;
code = Constants.CODE_OUTPUT_TEXT;
outputText = textArraySpec + (char)Constants.CODE_SPACE;
+ supportedMinSdkVersion = 0;
+ }
+ if (Build.VERSION.SDK_INT < supportedMinSdkVersion) {
+ continue;
}
final int x = (int)row.getKeyX(null);
final int y = row.getKeyY();