aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2014-06-27 14:03:41 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-06-26 23:14:30 +0000
commit593009bc9fa40b9e4adb3cbe8b2f86019bfdaf8a (patch)
treea9662b1f4a6dea44c6a7df4770d36205ff35e36e
parent938bb4a4d50114eb741a128f7a75d50f1af55869 (diff)
parentaca2ef85e1af82ccadbd0cbdd691a680a03a824d (diff)
downloadlatinime-593009bc9fa40b9e4adb3cbe8b2f86019bfdaf8a.tar.gz
latinime-593009bc9fa40b9e4adb3cbe8b2f86019bfdaf8a.tar.xz
latinime-593009bc9fa40b9e4adb3cbe8b2f86019bfdaf8a.zip
Merge "[SD2] Add support for a new tag Feature in KeyboardLayoutSet"
-rw-r--r--java/res/values/attrs.xml11
-rw-r--r--java/res/xml/keyboard_layout_set_arabic.xml2
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java24
-rw-r--r--java/src/com/android/inputmethod/latin/utils/ScriptUtils.java3
4 files changed, 40 insertions, 0 deletions
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index fcb919d0b..7dda0a652 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -488,6 +488,17 @@
<attr name="enableProximityCharsCorrection" format="boolean" />
</declare-styleable>
+ <declare-styleable name="KeyboardLayoutSet_Feature">
+ <!-- This should be aligned with ScriptUtils.SCRIPT_* -->
+ <attr name="supportedScript" format="enum">
+ <enum name="latin" value="0" />
+ <enum name="cyrillic" value="1" />
+ <enum name="greek" value="2" />
+ <enum name="arabic" value="3" />
+ <enum name="hebrew" value="4" />
+ </attr>
+ </declare-styleable>
+
<declare-styleable name="SeekBarDialogPreference">
<attr name="maxValue" format="integer" />
<attr name="minValue" format="integer" />
diff --git a/java/res/xml/keyboard_layout_set_arabic.xml b/java/res/xml/keyboard_layout_set_arabic.xml
index 10e95bd30..1bf8c6295 100644
--- a/java/res/xml/keyboard_layout_set_arabic.xml
+++ b/java/res/xml/keyboard_layout_set_arabic.xml
@@ -20,6 +20,8 @@
<KeyboardLayoutSet
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+ <Feature
+ latin:supportedScript="arabic" />
<Element
latin:elementName="alphabet"
latin:elementKeyboard="@xml/kbd_arabic"
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java b/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
index 3e5cfc11a..7ba3b3bd5 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
@@ -40,6 +40,7 @@ import com.android.inputmethod.latin.LatinImeLogger;
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.SubtypeSwitcher;
import com.android.inputmethod.latin.utils.InputTypeUtils;
+import com.android.inputmethod.latin.utils.ScriptUtils;
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
import com.android.inputmethod.latin.utils.XmlParseUtils;
@@ -63,6 +64,7 @@ public final class KeyboardLayoutSet {
private static final String TAG_KEYBOARD_SET = "KeyboardLayoutSet";
private static final String TAG_ELEMENT = "Element";
+ private static final String TAG_FEATURE = "Feature";
private static final String KEYBOARD_LAYOUT_SET_RESOURCE_PREFIX = "keyboard_layout_set_";
@@ -111,6 +113,7 @@ public final class KeyboardLayoutSet {
boolean mIsSpellChecker;
int mKeyboardWidth;
int mKeyboardHeight;
+ int mScriptId;
// Sparse array of KeyboardLayoutSet element parameters indexed by element's id.
final SparseArray<ElementParams> mKeyboardLayoutSetElementIdToParamsMap =
new SparseArray<>();
@@ -275,6 +278,10 @@ public final class KeyboardLayoutSet {
mParams.mDisableTouchPositionCorrectionDataForTest = true;
}
+ public void setScriptId(final int scriptId) {
+ mParams.mScriptId = scriptId;
+ }
+
public KeyboardLayoutSet build() {
if (mParams.mSubtype == null)
throw new RuntimeException("KeyboardLayoutSet subtype is not specified");
@@ -320,6 +327,8 @@ public final class KeyboardLayoutSet {
final String tag = parser.getName();
if (TAG_ELEMENT.equals(tag)) {
parseKeyboardLayoutSetElement(parser);
+ } else if (TAG_FEATURE.equals(tag)) {
+ parseKeyboardLayoutSetFeature(parser);
} else {
throw new XmlParseUtils.IllegalStartTag(parser, tag, TAG_KEYBOARD_SET);
}
@@ -361,6 +370,21 @@ public final class KeyboardLayoutSet {
}
}
+ private void parseKeyboardLayoutSetFeature(final XmlPullParser parser)
+ throws XmlPullParserException, IOException {
+ final TypedArray a = mResources.obtainAttributes(Xml.asAttributeSet(parser),
+ R.styleable.KeyboardLayoutSet_Feature);
+ try {
+ final int scriptId = a.getInt(
+ R.styleable.KeyboardLayoutSet_Feature_supportedScript,
+ ScriptUtils.SCRIPT_LATIN);
+ XmlParseUtils.checkEndTag(TAG_FEATURE, parser);
+ setScriptId(scriptId);
+ } finally {
+ a.recycle();
+ }
+ }
+
private static int getKeyboardMode(final EditorInfo editorInfo) {
final int inputType = editorInfo.inputType;
final int variation = inputType & InputType.TYPE_MASK_VARIATION;
diff --git a/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java b/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java
index 4dfb38d80..00355c307 100644
--- a/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java
@@ -23,9 +23,12 @@ import java.util.TreeMap;
* A class to help with handling different writing scripts.
*/
public class ScriptUtils {
+ // TODO: should we use ISO 15924 identifiers instead?
public static final int SCRIPT_LATIN = 0;
public static final int SCRIPT_CYRILLIC = 1;
public static final int SCRIPT_GREEK = 2;
+ public static final int SCRIPT_ARABIC = 3;
+ public static final int SCRIPT_HEBREW = 4;
public static final TreeMap<String, Integer> mLanguageToScript;
static {
// List of the supported languages and their associated script. We won't check