aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorsatok <satok@google.com>2011-04-21 19:11:48 +0900
committersatok <satok@google.com>2011-04-21 19:11:48 +0900
commitbbb42bff9ea9a4ae992b3a6a5ed586de914ea4cd (patch)
treeba95d17cc205d830cabc05151349ae18b580d594 /java
parente75e4463cdd2b9ba672faa6b0b1a6e3083e61543 (diff)
parentc9c3aa219e56c4707215c28495210a2393ff50c7 (diff)
downloadlatinime-bbb42bff9ea9a4ae992b3a6a5ed586de914ea4cd.tar.gz
latinime-bbb42bff9ea9a4ae992b3a6a5ed586de914ea4cd.tar.xz
latinime-bbb42bff9ea9a4ae992b3a6a5ed586de914ea4cd.zip
Merge remote-tracking branch 'goog/master' into merge
Diffstat (limited to 'java')
-rw-r--r--java/AndroidManifest.xml2
-rw-r--r--java/res/values/attrs.xml2
-rw-r--r--java/res/values/donottranslate-altchars.xml4
-rw-r--r--java/res/xml-ar/kbd_qwerty.xml1
-rw-r--r--java/res/xml-cs/kbd_qwerty.xml1
-rw-r--r--java/res/xml-da/kbd_qwerty.xml1
-rw-r--r--java/res/xml-de/kbd_qwerty.xml1
-rw-r--r--java/res/xml-fi/kbd_qwerty.xml1
-rw-r--r--java/res/xml-fr-rCA/kbd_qwerty.xml1
-rw-r--r--java/res/xml-fr-rCH/kbd_qwerty.xml1
-rw-r--r--java/res/xml-fr/kbd_qwerty.xml1
-rw-r--r--java/res/xml-hu/kbd_qwerty.xml1
-rw-r--r--java/res/xml-iw/kbd_qwerty.xml1
-rw-r--r--java/res/xml-nb/kbd_qwerty.xml1
-rw-r--r--java/res/xml-ru/kbd_qwerty.xml1
-rw-r--r--java/res/xml-sr/kbd_qwerty.xml1
-rw-r--r--java/res/xml-sv/kbd_qwerty.xml1
-rw-r--r--java/res/xml-xlarge/kbd_qwerty.xml33
-rw-r--r--java/res/xml/kbd_qwerty.xml1
-rw-r--r--java/res/xml/prefs.xml7
-rw-r--r--java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java (renamed from java/src/com/android/inputmethod/latin/InputLanguageSelection.java)76
-rw-r--r--java/src/com/android/inputmethod/keyboard/Key.java4
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyDetector.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardParser.java22
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardView.java8
-rw-r--r--java/src/com/android/inputmethod/keyboard/PointerTracker.java42
-rw-r--r--java/src/com/android/inputmethod/latin/AutoDictionary.java1
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java12
-rw-r--r--java/src/com/android/inputmethod/latin/Settings.java6
-rw-r--r--java/src/com/android/inputmethod/latin/Suggest.java2
30 files changed, 147 insertions, 91 deletions
diff --git a/java/AndroidManifest.xml b/java/AndroidManifest.xml
index e0eecfc7d..2fbf4c2be 100644
--- a/java/AndroidManifest.xml
+++ b/java/AndroidManifest.xml
@@ -33,7 +33,7 @@
</intent-filter>
</activity>
- <activity android:name="InputLanguageSelection"
+ <activity android:name="com.android.inputmethod.deprecated.languageswitcher.InputLanguageSelection"
android:label="@string/language_selection_title">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 9b38139f0..e88b007a9 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -91,6 +91,8 @@
<attr name="verticalGap" format="dimension|fraction" />
<!-- Popup keyboard layout template -->
<attr name="popupKeyboardTemplate" format="reference" />
+ <!-- Locale of the keyboard layout -->
+ <attr name="keyboardLocale" format="string" />
</declare-styleable>
<declare-styleable name="Keyboard_Key">
diff --git a/java/res/values/donottranslate-altchars.xml b/java/res/values/donottranslate-altchars.xml
index 883ccb71d..e77957578 100644
--- a/java/res/values/donottranslate-altchars.xml
+++ b/java/res/values/donottranslate-altchars.xml
@@ -48,8 +48,8 @@
<string name="alternates_for_currency_euro">¢,£,$,¥,₱</string>
<string name="alternates_for_currency_pound">¢,$,€,¥,₱</string>
<string name="alternates_for_smiley">":-)|:-) ,:-(|:-( ,;-)|;-) ,:-P|:-P ,=-O|=-O ,:-*|:-* ,:O|:O ,B-)|B-) ,:-$|:-$ ,:-!|:-! ,:-[|:-[ ,O:-)|O:-) ,:-\\\\\\\\|:-\\\\\\\\ ,:\'(|:\'( ,:-D|:-D "</string>
- <string name="alternates_for_punctuation">"\?,!,\\,,:,-,\',\",(,),/,;,+,&amp;,\@"</string>
- <string name="alternates_for_web_tab_punctuation">".,\?,!,\\,,:,-,\',\",(,),/,;,+,&amp;,\@"</string>
+ <string name="alternates_for_punctuation">"\\,,\?,!,:,-,\',\",(,),/,;,+,&amp;,\@"</string>
+ <string name="alternates_for_web_tab_punctuation">".,\\,,\?,!,:,-,\',\",(,),/,;,+,&amp;,\@"</string>
<string name="keylabel_for_popular_domain">".com"</string>
<!-- popular web domains for the locale - most popular, displayed on the keyboard -->
<string name="alternates_for_popular_domain">".net,.org,.gov,.edu"</string>
diff --git a/java/res/xml-ar/kbd_qwerty.xml b/java/res/xml-ar/kbd_qwerty.xml
index 4c6a4f50a..5faf60336 100644
--- a/java/res/xml-ar/kbd_qwerty.xml
+++ b/java/res/xml-ar/kbd_qwerty.xml
@@ -28,6 +28,7 @@
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+ latin:keyboardLocale="ar"
>
<include
latin:keyboardLayout="@xml/kbd_ar_rows" />
diff --git a/java/res/xml-cs/kbd_qwerty.xml b/java/res/xml-cs/kbd_qwerty.xml
index 010bdb3f7..0e6e40d7c 100644
--- a/java/res/xml-cs/kbd_qwerty.xml
+++ b/java/res/xml-cs/kbd_qwerty.xml
@@ -28,6 +28,7 @@
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+ latin:keyboardLocale="cs"
>
<include
latin:keyboardLayout="@xml/kbd_qwertz_rows" />
diff --git a/java/res/xml-da/kbd_qwerty.xml b/java/res/xml-da/kbd_qwerty.xml
index 441b7cb17..d9847ae83 100644
--- a/java/res/xml-da/kbd_qwerty.xml
+++ b/java/res/xml-da/kbd_qwerty.xml
@@ -27,6 +27,7 @@
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+ latin:keyboardLocale="da"
>
<include
latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" />
diff --git a/java/res/xml-de/kbd_qwerty.xml b/java/res/xml-de/kbd_qwerty.xml
index a23e4fbf0..6b5c22391 100644
--- a/java/res/xml-de/kbd_qwerty.xml
+++ b/java/res/xml-de/kbd_qwerty.xml
@@ -28,6 +28,7 @@
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+ latin:keyboardLocale="de"
>
<include
latin:keyboardLayout="@xml/kbd_qwertz_rows" />
diff --git a/java/res/xml-fi/kbd_qwerty.xml b/java/res/xml-fi/kbd_qwerty.xml
index b0a7b3eb0..ea08d670b 100644
--- a/java/res/xml-fi/kbd_qwerty.xml
+++ b/java/res/xml-fi/kbd_qwerty.xml
@@ -27,6 +27,7 @@
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+ latin:keyboardLocale="fi"
>
<include
latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" />
diff --git a/java/res/xml-fr-rCA/kbd_qwerty.xml b/java/res/xml-fr-rCA/kbd_qwerty.xml
index 92d92f0e6..f9c29698b 100644
--- a/java/res/xml-fr-rCA/kbd_qwerty.xml
+++ b/java/res/xml-fr-rCA/kbd_qwerty.xml
@@ -28,6 +28,7 @@
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+ latin:keyboardLocale="fr_CA"
>
<include
latin:keyboardLayout="@xml/kbd_qwerty_rows" />
diff --git a/java/res/xml-fr-rCH/kbd_qwerty.xml b/java/res/xml-fr-rCH/kbd_qwerty.xml
index a23e4fbf0..e47cfd9b4 100644
--- a/java/res/xml-fr-rCH/kbd_qwerty.xml
+++ b/java/res/xml-fr-rCH/kbd_qwerty.xml
@@ -28,6 +28,7 @@
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+ latin:keyboardLocale="fr_CH"
>
<include
latin:keyboardLayout="@xml/kbd_qwertz_rows" />
diff --git a/java/res/xml-fr/kbd_qwerty.xml b/java/res/xml-fr/kbd_qwerty.xml
index 2d0b42baf..e4b73bf21 100644
--- a/java/res/xml-fr/kbd_qwerty.xml
+++ b/java/res/xml-fr/kbd_qwerty.xml
@@ -28,6 +28,7 @@
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+ latin:keyboardLocale="fr"
>
<include
latin:keyboardLayout="@xml/kbd_azerty_rows" />
diff --git a/java/res/xml-hu/kbd_qwerty.xml b/java/res/xml-hu/kbd_qwerty.xml
index 010bdb3f7..db729cf02 100644
--- a/java/res/xml-hu/kbd_qwerty.xml
+++ b/java/res/xml-hu/kbd_qwerty.xml
@@ -28,6 +28,7 @@
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+ latin:keyboardLocale="hu"
>
<include
latin:keyboardLayout="@xml/kbd_qwertz_rows" />
diff --git a/java/res/xml-iw/kbd_qwerty.xml b/java/res/xml-iw/kbd_qwerty.xml
index 72826d461..4cd565b88 100644
--- a/java/res/xml-iw/kbd_qwerty.xml
+++ b/java/res/xml-iw/kbd_qwerty.xml
@@ -28,6 +28,7 @@
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+ latin:keyboardLocale="iw"
>
<include
latin:keyboardLayout="@xml/kbd_iw_rows" />
diff --git a/java/res/xml-nb/kbd_qwerty.xml b/java/res/xml-nb/kbd_qwerty.xml
index 441b7cb17..7b20ca28d 100644
--- a/java/res/xml-nb/kbd_qwerty.xml
+++ b/java/res/xml-nb/kbd_qwerty.xml
@@ -27,6 +27,7 @@
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+ latin:keyboardLocale="nb"
>
<include
latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" />
diff --git a/java/res/xml-ru/kbd_qwerty.xml b/java/res/xml-ru/kbd_qwerty.xml
index 0eb311501..065cf3afc 100644
--- a/java/res/xml-ru/kbd_qwerty.xml
+++ b/java/res/xml-ru/kbd_qwerty.xml
@@ -27,6 +27,7 @@
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+ latin:keyboardLocale="ru"
>
<include
latin:keyboardLayout="@xml/kbd_ru_rows" />
diff --git a/java/res/xml-sr/kbd_qwerty.xml b/java/res/xml-sr/kbd_qwerty.xml
index 3995e4e27..9782cd5eb 100644
--- a/java/res/xml-sr/kbd_qwerty.xml
+++ b/java/res/xml-sr/kbd_qwerty.xml
@@ -27,6 +27,7 @@
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+ latin:keyboardLocale="sr"
>
<include
latin:keyboardLayout="@xml/kbd_sr_rows" />
diff --git a/java/res/xml-sv/kbd_qwerty.xml b/java/res/xml-sv/kbd_qwerty.xml
index 72bdc339e..3ff1679a2 100644
--- a/java/res/xml-sv/kbd_qwerty.xml
+++ b/java/res/xml-sv/kbd_qwerty.xml
@@ -27,6 +27,7 @@
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+ latin:keyboardLocale="sv"
>
<include
latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" />
diff --git a/java/res/xml-xlarge/kbd_qwerty.xml b/java/res/xml-xlarge/kbd_qwerty.xml
deleted file mode 100644
index 1c8d51ffe..000000000
--- a/java/res/xml-xlarge/kbd_qwerty.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2010, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-** http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<Keyboard
- xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyboardHeight="@dimen/keyboardHeight"
- latin:maxKeyboardHeight="50%p"
- latin:rowHeight="25%p"
- latin:horizontalGap="@dimen/key_horizontal_gap"
- latin:verticalGap="@dimen/key_bottom_gap"
- latin:popupKeyboardTemplate="@xml/kbd_popup_template"
- latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
->
- <include
- latin:keyboardLayout="@xml/kbd_qwerty_rows" />
-</Keyboard>
diff --git a/java/res/xml/kbd_qwerty.xml b/java/res/xml/kbd_qwerty.xml
index 92d92f0e6..6bf6b781d 100644
--- a/java/res/xml/kbd_qwerty.xml
+++ b/java/res/xml/kbd_qwerty.xml
@@ -28,6 +28,7 @@
latin:verticalGap="@dimen/key_bottom_gap"
latin:popupKeyboardTemplate="@xml/kbd_popup_template"
latin:maxPopupKeyboardColumn="@integer/config_max_popup_keyboard_column"
+ latin:keyboardLocale="en"
>
<include
latin:keyboardLayout="@xml/kbd_qwerty_rows" />
diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml
index cbfc3c39d..fb7b0ea40 100644
--- a/java/res/xml/prefs.xml
+++ b/java/res/xml/prefs.xml
@@ -64,6 +64,13 @@
android:key="subtype_settings"
android:title="@string/language_selection_title"
android:summary="@string/language_selection_summary" />
+ <PreferenceScreen
+ android:key="language_selection"
+ android:title="@string/language_selection_title"
+ android:summary="@string/language_selection_summary">
+ <intent
+ android:action="com.android.inputmethod.latin.INPUT_LANGUAGE_SELECTION"/>
+ </PreferenceScreen>
</PreferenceCategory>
<PreferenceCategory
android:title="@string/prediction_category"
diff --git a/java/src/com/android/inputmethod/latin/InputLanguageSelection.java b/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java
index 40ab28c98..6c6960cc4 100644
--- a/java/src/com/android/inputmethod/latin/InputLanguageSelection.java
+++ b/java/src/com/android/inputmethod/deprecated/languageswitcher/InputLanguageSelection.java
@@ -1,12 +1,12 @@
/*
* Copyright (C) 2008-2009 Google Inc.
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -14,7 +14,18 @@
* the License.
*/
-package com.android.inputmethod.latin;
+package com.android.inputmethod.deprecated.languageswitcher;
+
+import com.android.inputmethod.keyboard.KeyboardParser;
+import com.android.inputmethod.latin.BinaryDictionary;
+import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.Settings;
+import com.android.inputmethod.latin.SharedPreferencesCompat;
+import com.android.inputmethod.latin.SubtypeSwitcher;
+import com.android.inputmethod.latin.Suggest;
+import com.android.inputmethod.latin.Utils;
+
+import org.xmlpull.v1.XmlPullParserException;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
@@ -26,7 +37,9 @@ import android.preference.PreferenceActivity;
import android.preference.PreferenceGroup;
import android.preference.PreferenceManager;
import android.text.TextUtils;
+import android.util.Pair;
+import java.io.IOException;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Arrays;
@@ -37,9 +50,6 @@ public class InputLanguageSelection extends PreferenceActivity {
private SharedPreferences mPrefs;
private String mSelectedLanguages;
private ArrayList<Loc> mAvailableLanguages = new ArrayList<Loc>();
- private static final String[] BLACKLIST_LANGUAGES = {
- "ko", "ja", "zh", "el", "zz"
- };
private static class Loc implements Comparable<Object> {
private static Collator sCollator = Collator.getInstance();
@@ -78,12 +88,18 @@ public class InputLanguageSelection extends PreferenceActivity {
mAvailableLanguages = getUniqueLocales();
PreferenceGroup parent = getPreferenceScreen();
for (int i = 0; i < mAvailableLanguages.size(); i++) {
- CheckBoxPreference pref = new CheckBoxPreference(this);
Locale locale = mAvailableLanguages.get(i).mLocale;
+ final Pair<Boolean, Boolean> hasDictionaryOrLayout = hasDictionaryOrLayout(locale);
+ final boolean hasDictionary = hasDictionaryOrLayout.first;
+ final boolean hasLayout = hasDictionaryOrLayout.second;
+ if (!hasDictionary && !hasLayout) {
+ continue;
+ }
+ CheckBoxPreference pref = new CheckBoxPreference(this);
pref.setTitle(SubtypeSwitcher.getFullDisplayName(locale, true));
boolean checked = isLocaleIn(locale, languageList);
pref.setChecked(checked);
- if (hasDictionary(locale)) {
+ if (hasDictionary) {
pref.setSummary(R.string.has_dictionary);
}
parent.addPreference(pref);
@@ -98,26 +114,39 @@ public class InputLanguageSelection extends PreferenceActivity {
return false;
}
- private boolean hasDictionary(Locale locale) {
+ private Pair<Boolean, Boolean> hasDictionaryOrLayout(Locale locale) {
+ if (locale == null) return new Pair<Boolean, Boolean>(false, false);
final Resources res = getResources();
final Configuration conf = res.getConfiguration();
final Locale saveLocale = conf.locale;
- boolean haveDictionary = false;
conf.locale = locale;
res.updateConfiguration(conf, res.getDisplayMetrics());
+ boolean hasDictionary = false;
+ boolean hasLayout = false;
- BinaryDictionary bd = BinaryDictionary.initDictionaryFromManager(this, Suggest.DIC_MAIN,
- locale, Utils.getMainDictionaryResourceId(res));
+ try {
+ BinaryDictionary bd = BinaryDictionary.initDictionaryFromManager(this, Suggest.DIC_MAIN,
+ locale, Utils.getMainDictionaryResourceId(res));
- // Is the dictionary larger than a placeholder? Arbitrarily chose a lower limit of
- // 4000-5000 words, whereas the LARGE_DICTIONARY is about 20000+ words.
- if (bd.getSize() > Suggest.LARGE_DICTIONARY_THRESHOLD / 4) {
- haveDictionary = true;
+ // Is the dictionary larger than a placeholder? Arbitrarily chose a lower limit of
+ // 4000-5000 words, whereas the LARGE_DICTIONARY is about 20000+ words.
+ if (bd.getSize() > Suggest.LARGE_DICTIONARY_THRESHOLD / 4) {
+ hasDictionary = true;
+ }
+ bd.close();
+
+ final String countryCode = locale.getLanguage();
+ final String layoutCountryCode = KeyboardParser.parseKeyboardLocale(
+ this, R.xml.kbd_qwerty);
+ if (!TextUtils.isEmpty(countryCode) && !TextUtils.isEmpty(layoutCountryCode)) {
+ hasLayout = countryCode.subSequence(0, 2).equals(layoutCountryCode.substring(0, 2));
+ }
+ } catch (XmlPullParserException e) {
+ } catch (IOException e) {
}
- bd.close();
conf.locale = saveLocale;
res.updateConfiguration(conf, res.getDisplayMetrics());
- return haveDictionary;
+ return new Pair<Boolean, Boolean>(hasDictionary, hasLayout);
}
private String get5Code(Locale locale) {
@@ -173,7 +202,7 @@ public class InputLanguageSelection extends PreferenceActivity {
Locale l = new Locale(language, country);
// Exclude languages that are not relevant to LatinIME
- if (arrayContains(BLACKLIST_LANGUAGES, language) || TextUtils.isEmpty(language)) {
+ if (TextUtils.isEmpty(language)) {
continue;
}
@@ -207,11 +236,4 @@ public class InputLanguageSelection extends PreferenceActivity {
}
return uniqueLocales;
}
-
- private boolean arrayContains(String[] array, String value) {
- for (int i = 0; i < array.length; i++) {
- if (array[i].equalsIgnoreCase(value)) return true;
- }
- return false;
- }
}
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index 1b7e8ef21..fb70b3579 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -338,10 +338,6 @@ public class Key {
mPressed = false;
}
- public boolean isInside(int x, int y) {
- return mKeyboard.isInside(this, x, y);
- }
-
/**
* Detects if a point falls on this key.
* @param x the x-coordinate of the point
diff --git a/java/src/com/android/inputmethod/keyboard/KeyDetector.java b/java/src/com/android/inputmethod/keyboard/KeyDetector.java
index 95ec93181..2eeae96b2 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyDetector.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyDetector.java
@@ -174,7 +174,7 @@ public class KeyDetector {
int primaryIndex = NOT_A_KEY;
for (final int index : mKeyboard.getNearestKeys(touchX, touchY)) {
final Key key = keys.get(index);
- final boolean isInside = key.isInside(touchX, touchY);
+ final boolean isInside = mKeyboard.isInside(key, touchX, touchY);
final int distance = key.squaredDistanceToEdge(touchX, touchY);
if (isInside || (mProximityCorrectOn && distance < mProximityThresholdSquare)) {
final int insertedPosition = sortNearbyKeys(index, distance);
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
index 9c556c309..69ae7886a 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java
@@ -22,6 +22,7 @@ import com.android.inputmethod.latin.R;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
+import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
@@ -163,6 +164,27 @@ public class KeyboardParser {
}
}
+ public static String parseKeyboardLocale(
+ Context context, int resId) throws XmlPullParserException, IOException {
+ final Resources res = context.getResources();
+ final XmlResourceParser parser = res.getXml(resId);
+ if (parser == null) return "";
+ int event;
+ while ((event = parser.next()) != XmlPullParser.END_DOCUMENT) {
+ if (event == XmlPullParser.START_TAG) {
+ final String tag = parser.getName();
+ if (TAG_KEYBOARD.equals(tag)) {
+ final TypedArray keyboardAttr = res.obtainAttributes(Xml.asAttributeSet(parser),
+ R.styleable.Keyboard);
+ return keyboardAttr.getString(R.styleable.Keyboard_keyboardLocale);
+ } else {
+ throw new IllegalStartTag(parser, TAG_KEYBOARD);
+ }
+ }
+ }
+ return "";
+ }
+
private void parseKeyboardAttributes(XmlResourceParser parser) {
final Keyboard keyboard = mKeyboard;
final TypedArray keyboardAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser),
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index eb09a455b..95ecb3bc9 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -889,8 +889,11 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
@Override
public void showKeyPreview(int keyIndex, PointerTracker tracker) {
- if (mShowKeyPreview || mKeyboard.needSpacebarPreview(keyIndex)) {
+ if (mShowKeyPreview) {
mHandler.showKeyPreview(mDelayBeforePreview, keyIndex, tracker);
+ } else if (mKeyboard.needSpacebarPreview(keyIndex)) {
+ // Show key preview (in this case, slide language switcher) without any delay.
+ showKey(keyIndex, tracker);
}
}
@@ -899,6 +902,9 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
if (mShowKeyPreview) {
mHandler.cancelShowKeyPreview(tracker);
mHandler.dismissKeyPreview(mDelayAfterPreview, tracker);
+ } else if (mKeyboard.needSpacebarPreview(KeyDetector.NOT_A_KEY)) {
+ // Dismiss key preview (in this case, slide language switcher) without any delay.
+ mPreviewText.setVisibility(View.INVISIBLE);
}
}
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index 64f2f9644..1b1aa492c 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -392,7 +392,7 @@ public class PointerTracker {
startLongPressTimer(keyIndex);
showKeyPreview(keyIndex);
setPressedKeyGraphics(keyIndex);
- } else if (!isMinorMoveBounce(x, y, keyIndex)) {
+ } else if (isMajorEnoughMoveToBeOnNewKey(x, y, keyIndex)) {
// The pointer has been slid in to the new key from the previous key, we must call
// onRelease() first to notify that the previous key has been released, then call
// onPress() to notify that the new key is being pressed.
@@ -430,9 +430,12 @@ public class PointerTracker {
}
return;
}
+ } else if (mKeyboard.needSpacebarPreview(keyIndex)) {
+ // Display spacebar slide language switcher.
+ showKeyPreview(keyIndex);
}
} else {
- if (oldKey != null && !isMinorMoveBounce(x, y, keyIndex)) {
+ if (oldKey != null && isMajorEnoughMoveToBeOnNewKey(x, y, keyIndex)) {
// The pointer has been slid out from the previous key, we must call onRelease() to
// notify that the previous key has been released.
setReleasedKeyGraphics(oldKeyIndex);
@@ -483,7 +486,7 @@ public class PointerTracker {
mIsInSlidingKeyInput = false;
final PointerTrackerKeyState keyState = mKeyState;
final int keyX, keyY;
- if (!isMinorMoveBounce(x, y, keyState.onMoveKey(x, y))) {
+ if (isMajorEnoughMoveToBeOnNewKey(x, y, keyState.onMoveKey(x, y))) {
keyX = x;
keyY = y;
} else {
@@ -544,28 +547,37 @@ public class PointerTracker {
return mKeyState.getDownTime();
}
- private boolean isMinorMoveBounce(int x, int y, int newKey) {
+ private boolean isMajorEnoughMoveToBeOnNewKey(int x, int y, int newKey) {
if (mKeys == null || mKeyHysteresisDistanceSquared < 0)
throw new IllegalStateException("keyboard and/or hysteresis not set");
int curKey = mKeyState.getKeyIndex();
if (newKey == curKey) {
- return true;
+ return false;
} else if (isValidKeyIndex(curKey)) {
- return mKeys.get(curKey).squaredDistanceToEdge(x, y) < mKeyHysteresisDistanceSquared;
+ return mKeys.get(curKey).squaredDistanceToEdge(x, y) >= mKeyHysteresisDistanceSquared;
} else {
- return false;
+ return true;
}
}
- private void showKeyPreview(int keyIndex) {
+ // The modifier key, such as shift key, should not show its key preview. If accessibility is
+ // turned on, the modifier key should show its key preview.
+ private boolean isKeyPreviewNotRequired(int keyIndex) {
final Key key = getKey(keyIndex);
- if (key != null && !key.mEnabled)
- return;
- // The modifier key, such as shift key, should not be shown as preview when multi-touch is
- // supported. On the other hand, if multi-touch is not supported, the modifier key should
- // be shown as preview. If accessibility is turned on, the modifier key should be shown as
- // preview.
- if (mHasDistinctMultitouch && isModifier() && !mIsAccessibilityEnabled)
+ if (!key.mEnabled)
+ return true;
+ if (mIsAccessibilityEnabled)
+ return false;
+ // Such as spacebar sliding language switch.
+ if (mKeyboard.needSpacebarPreview(keyIndex))
+ return false;
+ final int code = key.mCode;
+ return isModifierCode(code) || code == Keyboard.CODE_DELETE
+ || code == Keyboard.CODE_ENTER || code == Keyboard.CODE_SPACE;
+ }
+
+ private void showKeyPreview(int keyIndex) {
+ if (isKeyPreviewNotRequired(keyIndex))
return;
mProxy.showKeyPreview(keyIndex, this);
}
diff --git a/java/src/com/android/inputmethod/latin/AutoDictionary.java b/java/src/com/android/inputmethod/latin/AutoDictionary.java
index a00b0915c..307b81d43 100644
--- a/java/src/com/android/inputmethod/latin/AutoDictionary.java
+++ b/java/src/com/android/inputmethod/latin/AutoDictionary.java
@@ -27,7 +27,6 @@ import android.provider.BaseColumns;
import android.util.Log;
import java.util.HashMap;
-import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 13ef4ffe8..a680b9825 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -901,15 +901,15 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
public void onComputeInsets(InputMethodService.Insets outInsets) {
super.onComputeInsets(outInsets);
final KeyboardView inputView = mKeyboardSwitcher.getInputView();
+ if (inputView == null)
+ return;
+ final int containerHeight = mCandidateViewContainer.getHeight();
+ int touchY = containerHeight;
// Need to set touchable region only if input view is being shown
- if (inputView != null && mKeyboardSwitcher.isInputViewShown()) {
- final int containerHeight = mCandidateViewContainer.getHeight();
- int touchY = containerHeight;
+ if (mKeyboardSwitcher.isInputViewShown()) {
if (mCandidateViewContainer.getVisibility() == View.VISIBLE) {
touchY -= mCandidateStripHeight;
}
- outInsets.contentTopInsets = touchY;
- outInsets.visibleTopInsets = touchY;
final int touchWidth = inputView.getWidth();
final int touchHeight = inputView.getHeight() + containerHeight
// Extend touchable region below the keyboard.
@@ -920,6 +920,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
}
setTouchableRegionCompat(outInsets, 0, touchY, touchWidth, touchHeight);
}
+ outInsets.contentTopInsets = touchY;
+ outInsets.visibleTopInsets = touchY;
}
@Override
diff --git a/java/src/com/android/inputmethod/latin/Settings.java b/java/src/com/android/inputmethod/latin/Settings.java
index 8f7278e3a..1725ee7aa 100644
--- a/java/src/com/android/inputmethod/latin/Settings.java
+++ b/java/src/com/android/inputmethod/latin/Settings.java
@@ -18,6 +18,7 @@ package com.android.inputmethod.latin;
import com.android.inputmethod.compat.CompatUtils;
import com.android.inputmethod.compat.InputMethodManagerCompatWrapper;
+import com.android.inputmethod.compat.InputMethodServiceCompatWrapper;
import com.android.inputmethod.deprecated.VoiceProxy;
import com.android.inputmethod.compat.VibratorCompatWrapper;
@@ -67,6 +68,7 @@ public class Settings extends PreferenceActivity
public static final String PREF_AUTO_CORRECTION_THRESHOLD = "auto_correction_threshold";
public static final String PREF_BIGRAM_SUGGESTIONS = "bigram_suggestion";
public static final String PREF_DEBUG_SETTINGS = "debug_settings";
+ public static final String PREF_LANGUAGE_SELECTION = "language_selection";
public static final String PREF_USABILITY_STUDY_MODE = "usability_study_mode";
@@ -183,6 +185,10 @@ public class Settings extends PreferenceActivity
if (!showUsabilityModeStudyOption) {
getPreferenceScreen().removePreference(findPreference(PREF_USABILITY_STUDY_MODE));
}
+
+ if (InputMethodServiceCompatWrapper.CAN_HANDLE_ON_CURRENT_INPUT_METHOD_SUBTYPE_CHANGED) {
+ generalSettings.removePreference(findPreference(PREF_LANGUAGE_SELECTION));
+ }
}
@Override
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index cd7f71c2a..f37206223 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -75,7 +75,7 @@ public class Suggest implements Dictionary.WordCallback {
public static final String DICT_KEY_USER_BIGRAM = "user_bigram";
public static final String DICT_KEY_WHITELIST ="whitelist";
- static final int LARGE_DICTIONARY_THRESHOLD = 200 * 1000;
+ public static final int LARGE_DICTIONARY_THRESHOLD = 200 * 1000;
private static final boolean DBG = LatinImeLogger.sDBG;