Remove a method that causes annoying side-effects.

...and replace by a call to a central method.

Change-Id: I93d0a2c2e99963a5b69923d1062d0e01853216b6
main
Jean Chalard 2012-03-13 18:21:35 +09:00
parent b8753eb31c
commit 4ee186920e
2 changed files with 14 additions and 15 deletions

View File

@ -72,6 +72,7 @@ import com.android.inputmethod.latin.suggestions.SuggestionsView;
import java.io.FileDescriptor; import java.io.FileDescriptor;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
@ -1782,8 +1783,14 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
if (previousSuggestions == mSettingsValues.mSuggestPuncList) { if (previousSuggestions == mSettingsValues.mSuggestPuncList) {
previousSuggestions = SuggestedWords.EMPTY; previousSuggestions = SuggestedWords.EMPTY;
} }
final ArrayList<SuggestedWords.SuggestedWordInfo> typedWordAndPreviousSuggestions =
SuggestedWords.Builder.getTypedWordAndPreviousSuggestions(
typedWord, previousSuggestions);
final SuggestedWords.Builder obsoleteSuggestionsBuilder = new SuggestedWords.Builder() final SuggestedWords.Builder obsoleteSuggestionsBuilder = new SuggestedWords.Builder()
.addTypedWordAndPreviousSuggestions(typedWord, previousSuggestions); .addWords(typedWordAndPreviousSuggestions)
.setTypedWordValid(false)
.setHasMinimalSuggestion(false);
showSuggestions(obsoleteSuggestionsBuilder.build(), typedWord); showSuggestions(obsoleteSuggestionsBuilder.build(), typedWord);
} }
} }

View File

@ -87,12 +87,6 @@ public class SuggestedWords {
// Nothing to do here. // Nothing to do here.
} }
// TODO: the following method is a wrapper to satisfy tests. Update tests and remove it.
public Builder addWords(final List<CharSequence> words,
final List<SuggestedWordInfo> suggestedWordInfoList) {
return addWords(suggestedWordInfoList);
}
public Builder addWords(List<SuggestedWordInfo> suggestedWordInfoList) { public Builder addWords(List<SuggestedWordInfo> suggestedWordInfoList) {
final int N = suggestedWordInfoList.size(); final int N = suggestedWordInfoList.size();
for (int i = 0; i < N; ++i) { for (int i = 0; i < N; ++i) {
@ -161,24 +155,22 @@ public class SuggestedWords {
// Should get rid of the first one (what the user typed previously) from suggestions // Should get rid of the first one (what the user typed previously) from suggestions
// and replace it with what the user currently typed. // and replace it with what the user currently typed.
public Builder addTypedWordAndPreviousSuggestions(CharSequence typedWord, public static ArrayList<SuggestedWordInfo> getTypedWordAndPreviousSuggestions(
SuggestedWords previousSuggestions) { final CharSequence typedWord, final SuggestedWords previousSuggestions) {
mSuggestedWordInfoList.clear(); final ArrayList<SuggestedWordInfo> suggestionsList = new ArrayList<SuggestedWordInfo>();
final HashSet<String> alreadySeen = new HashSet<String>(); final HashSet<String> alreadySeen = new HashSet<String>();
addWord(typedWord, new SuggestedWordInfo(typedWord, null, false)); suggestionsList.add(new SuggestedWordInfo(typedWord, null, false));
alreadySeen.add(typedWord.toString()); alreadySeen.add(typedWord.toString());
final int previousSize = previousSuggestions.size(); final int previousSize = previousSuggestions.size();
for (int pos = 1; pos < previousSize; pos++) { for (int pos = 1; pos < previousSize; pos++) {
final String prevWord = previousSuggestions.getWord(pos).toString(); final String prevWord = previousSuggestions.getWord(pos).toString();
// Filter out duplicate suggestion. // Filter out duplicate suggestion.
if (!alreadySeen.contains(prevWord)) { if (!alreadySeen.contains(prevWord)) {
addWord(prevWord, new SuggestedWordInfo(prevWord, null, true)); suggestionsList.add(new SuggestedWordInfo(prevWord, null, true));
alreadySeen.add(prevWord); alreadySeen.add(prevWord);
} }
} }
mTypedWordValid = false; return suggestionsList;
mHasMinimalSuggestion = false;
return this;
} }
public SuggestedWords build() { public SuggestedWords build() {