aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/Suggest.java
diff options
context:
space:
mode:
authorsatok <satok@google.com>2011-06-24 18:38:41 +0900
committersatok <satok@google.com>2011-06-24 18:38:41 +0900
commit80a9ce76d85ff521aeb5a51d759f5ba367ffc627 (patch)
tree239ff93af9a2b5bb0271968467a212c150608e03 /java/src/com/android/inputmethod/latin/Suggest.java
parentdfd66f19edf1e1d97a0bf83dd20b99ee8bfae35e (diff)
parent52344a0788db20d12960b2481e99e990c3de1ea4 (diff)
downloadlatinime-80a9ce76d85ff521aeb5a51d759f5ba367ffc627.tar.gz
latinime-80a9ce76d85ff521aeb5a51d759f5ba367ffc627.tar.xz
latinime-80a9ce76d85ff521aeb5a51d759f5ba367ffc627.zip
Merge remote-tracking branch 'goog/master' into merge
Conflicts: java/res/xml/method.xml Change-Id: I7b5f2232753d7159b520e5e57a0e06c51935edbd
Diffstat (limited to 'java/src/com/android/inputmethod/latin/Suggest.java')
-rw-r--r--java/src/com/android/inputmethod/latin/Suggest.java55
1 files changed, 28 insertions, 27 deletions
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index ca75866c0..eb5ed5a65 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -84,7 +84,7 @@ public class Suggest implements Dictionary.WordCallback {
private final Map<String, Dictionary> mUnigramDictionaries = new HashMap<String, Dictionary>();
private final Map<String, Dictionary> mBigramDictionaries = new HashMap<String, Dictionary>();
- private int mPrefMaxSuggestions = 12;
+ private int mPrefMaxSuggestions = 18;
private static final int PREF_MAX_BIGRAMS = 60;
@@ -117,30 +117,31 @@ public class Suggest implements Dictionary.WordCallback {
}
private void init(Context context, Dictionary mainDict) {
- if (mainDict != null) {
- mMainDict = mainDict;
- mUnigramDictionaries.put(DICT_KEY_MAIN, mainDict);
- mBigramDictionaries.put(DICT_KEY_MAIN, mainDict);
- }
+ mMainDict = mainDict;
+ addOrReplaceDictionary(mUnigramDictionaries, DICT_KEY_MAIN, mainDict);
+ addOrReplaceDictionary(mBigramDictionaries, DICT_KEY_MAIN, mainDict);
mWhiteListDictionary = WhitelistDictionary.init(context);
- if (mWhiteListDictionary != null) {
- mUnigramDictionaries.put(DICT_KEY_WHITELIST, mWhiteListDictionary);
- }
+ addOrReplaceDictionary(mUnigramDictionaries, DICT_KEY_WHITELIST, mWhiteListDictionary);
mAutoCorrection = new AutoCorrection();
initPool();
}
+ private void addOrReplaceDictionary(Map<String, Dictionary> dictionaries, String key,
+ Dictionary dict) {
+ final Dictionary oldDict = (dict == null)
+ ? dictionaries.remove(key)
+ : dictionaries.put(key, dict);
+ if (oldDict != null && dict != oldDict) {
+ oldDict.close();
+ }
+ }
+
public void resetMainDict(Context context, int dictionaryResId, Locale locale) {
final Dictionary newMainDict = DictionaryFactory.createDictionaryFromManager(
context, locale, dictionaryResId);
mMainDict = newMainDict;
- if (null == newMainDict) {
- mUnigramDictionaries.remove(DICT_KEY_MAIN);
- mBigramDictionaries.remove(DICT_KEY_MAIN);
- } else {
- mUnigramDictionaries.put(DICT_KEY_MAIN, newMainDict);
- mBigramDictionaries.put(DICT_KEY_MAIN, newMainDict);
- }
+ addOrReplaceDictionary(mUnigramDictionaries, DICT_KEY_MAIN, newMainDict);
+ addOrReplaceDictionary(mBigramDictionaries, DICT_KEY_MAIN, newMainDict);
}
private void initPool() {
@@ -179,28 +180,25 @@ public class Suggest implements Dictionary.WordCallback {
* before the main dictionary, if set.
*/
public void setUserDictionary(Dictionary userDictionary) {
- if (userDictionary != null)
- mUnigramDictionaries.put(DICT_KEY_USER, userDictionary);
+ addOrReplaceDictionary(mUnigramDictionaries, DICT_KEY_USER, userDictionary);
}
/**
- * Sets an optional contacts dictionary resource to be loaded.
+ * Sets an optional contacts dictionary resource to be loaded. It is also possible to remove
+ * the contacts dictionary by passing null to this method. In this case no contacts dictionary
+ * won't be used.
*/
public void setContactsDictionary(Dictionary contactsDictionary) {
- if (contactsDictionary != null) {
- mUnigramDictionaries.put(DICT_KEY_CONTACTS, contactsDictionary);
- mBigramDictionaries.put(DICT_KEY_CONTACTS, contactsDictionary);
- }
+ addOrReplaceDictionary(mUnigramDictionaries, DICT_KEY_CONTACTS, contactsDictionary);
+ addOrReplaceDictionary(mBigramDictionaries, DICT_KEY_CONTACTS, contactsDictionary);
}
public void setAutoDictionary(Dictionary autoDictionary) {
- if (autoDictionary != null)
- mUnigramDictionaries.put(DICT_KEY_AUTO, autoDictionary);
+ addOrReplaceDictionary(mUnigramDictionaries, DICT_KEY_AUTO, autoDictionary);
}
public void setUserBigramDictionary(Dictionary userBigramDictionary) {
- if (userBigramDictionary != null)
- mBigramDictionaries.put(DICT_KEY_USER_BIGRAM, userBigramDictionary);
+ addOrReplaceDictionary(mBigramDictionaries, DICT_KEY_USER_BIGRAM, userBigramDictionary);
}
public void setAutoCorrectionThreshold(double threshold) {
@@ -252,6 +250,7 @@ public class Suggest implements Dictionary.WordCallback {
poolSize > 0 ? (StringBuilder) mStringPool.remove(poolSize - 1)
: new StringBuilder(getApproxMaxWordLength());
sb.setLength(0);
+ // TODO: Must pay attention to locale when changing case.
if (all) {
sb.append(word.toString().toUpperCase());
} else if (first) {
@@ -317,6 +316,7 @@ public class Suggest implements Dictionary.WordCallback {
} else {
// Word entered: return only bigrams that match the first char of the typed word
final char currentChar = typedWord.charAt(0);
+ // TODO: Must pay attention to locale when changing case.
final char currentCharUpper = Character.toUpperCase(currentChar);
int count = 0;
final int bigramSuggestionSize = mBigramSuggestions.size();
@@ -520,6 +520,7 @@ public class Suggest implements Dictionary.WordCallback {
StringBuilder sb = poolSize > 0 ? (StringBuilder) mStringPool.remove(poolSize - 1)
: new StringBuilder(getApproxMaxWordLength());
sb.setLength(0);
+ // TODO: Must pay attention to locale when changing case.
if (mIsAllUpperCase) {
sb.append(new String(word, offset, length).toUpperCase());
} else if (mIsFirstCharCapitalized) {