diff options
author | 2012-06-13 06:57:40 +0900 | |
---|---|---|
committer | 2012-06-26 16:44:26 +0900 | |
commit | d82898c5a91f8aa69d5dc594b7a9290b8be1247a (patch) | |
tree | fa21bce13a047391b2a43534e4452fec881e2c4e /java/src/com/android/inputmethod/latin/DictionaryCollection.java | |
parent | bda7eaa63aace64f3d40eae3affaf281591ffa66 (diff) | |
download | latinime-d82898c5a91f8aa69d5dc594b7a9290b8be1247a.tar.gz latinime-d82898c5a91f8aa69d5dc594b7a9290b8be1247a.tar.xz latinime-d82898c5a91f8aa69d5dc594b7a9290b8be1247a.zip |
Change the return type of getWords and getBigrams (A8)
This only returns stuff, but it doesn't change yet how the data
is really passed. It merely adds a way of getting the same data.
Later, the old way will be removed.
Change-Id: If3a064de362175fc5a6781b7a97b65d8730aaf3c
Diffstat (limited to 'java/src/com/android/inputmethod/latin/DictionaryCollection.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/DictionaryCollection.java | 43 |
1 files changed, 35 insertions, 8 deletions
diff --git a/java/src/com/android/inputmethod/latin/DictionaryCollection.java b/java/src/com/android/inputmethod/latin/DictionaryCollection.java index 26c2e637e..6b424f88f 100644 --- a/java/src/com/android/inputmethod/latin/DictionaryCollection.java +++ b/java/src/com/android/inputmethod/latin/DictionaryCollection.java @@ -17,9 +17,11 @@ package com.android.inputmethod.latin; import com.android.inputmethod.keyboard.ProximityInfo; +import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import android.util.Log; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.concurrent.CopyOnWriteArrayList; @@ -50,17 +52,42 @@ public class DictionaryCollection extends Dictionary { } @Override - public void getWords(final WordComposer composer, final CharSequence prevWordForBigrams, - final WordCallback callback, final ProximityInfo proximityInfo) { - for (final Dictionary dict : mDictionaries) - dict.getWords(composer, prevWordForBigrams, callback, proximityInfo); + public ArrayList<SuggestedWordInfo> getWords(final WordComposer composer, + final CharSequence prevWordForBigrams, final WordCallback callback, + final ProximityInfo proximityInfo) { + final CopyOnWriteArrayList<Dictionary> dictionaries = mDictionaries; + if (dictionaries.isEmpty()) return null; + // To avoid creating unnecessary objects, we get the list out of the first + // dictionary and add the rest to it if not null, hence the get(0) + ArrayList<SuggestedWordInfo> suggestions = dictionaries.get(0).getWords(composer, + prevWordForBigrams, callback, proximityInfo); + if (null == suggestions) suggestions = new ArrayList<SuggestedWordInfo>(); + final int length = dictionaries.size(); + for (int i = 0; i < length; ++ i) { + final ArrayList<SuggestedWordInfo> sugg = dictionaries.get(i).getWords(composer, + prevWordForBigrams, callback, proximityInfo); + if (null != sugg) suggestions.addAll(sugg); + } + return suggestions; } @Override - public void getBigrams(final WordComposer composer, final CharSequence previousWord, - final WordCallback callback) { - for (final Dictionary dict : mDictionaries) - dict.getBigrams(composer, previousWord, callback); + public ArrayList<SuggestedWordInfo> getBigrams(final WordComposer composer, + final CharSequence previousWord, final WordCallback callback) { + final CopyOnWriteArrayList<Dictionary> dictionaries = mDictionaries; + if (dictionaries.isEmpty()) return null; + // To avoid creating unnecessary objects, we get the list out of the first + // dictionary and add the rest to it if not null, hence the get(0) + ArrayList<SuggestedWordInfo> suggestions = dictionaries.get(0).getBigrams(composer, + previousWord, callback); + if (null == suggestions) suggestions = new ArrayList<SuggestedWordInfo>(); + final int length = dictionaries.size(); + for (int i = 0; i < length; ++ i) { + final ArrayList<SuggestedWordInfo> sugg = + dictionaries.get(i).getBigrams(composer, previousWord, callback); + if (null != sugg) suggestions.addAll(sugg); + } + return suggestions; } @Override |