Change-Id: I575f22330bf6881af1d9a35f22b51b7bf2198113
This commit is contained in:
Jean Chalard 2012-06-27 17:59:58 +09:00
parent d05d1d04d0
commit 089c11a086

View File

@ -231,7 +231,7 @@ public class Suggest {
localSuggestions.addAll(dictionary.getBigrams(wordComposer, lowerPrevWord)); localSuggestions.addAll(dictionary.getBigrams(wordComposer, lowerPrevWord));
} }
for (final SuggestedWordInfo localSuggestion : localSuggestions) { for (final SuggestedWordInfo localSuggestion : localSuggestions) {
addWord(localSuggestion, key, suggestionsContainer, consideredWord); addWord(localSuggestion, key, suggestionsContainer);
} }
} }
} }
@ -254,7 +254,7 @@ public class Suggest {
final ArrayList<SuggestedWordInfo> localSuggestions = dictionary.getWords( final ArrayList<SuggestedWordInfo> localSuggestions = dictionary.getWords(
wordComposerForLookup, prevWordForBigram, proximityInfo); wordComposerForLookup, prevWordForBigram, proximityInfo);
for (final SuggestedWordInfo suggestion : localSuggestions) { for (final SuggestedWordInfo suggestion : localSuggestions) {
addWord(suggestion, key, suggestionsContainer, consideredWord); addWord(suggestion, key, suggestionsContainer);
} }
} }
} }
@ -376,31 +376,22 @@ public class Suggest {
private static final SuggestedWordInfoComparator sSuggestedWordInfoComparator = private static final SuggestedWordInfoComparator sSuggestedWordInfoComparator =
new SuggestedWordInfoComparator(); new SuggestedWordInfoComparator();
public boolean addWord(final SuggestedWordInfo wordInfo, final String dictTypeKey, public void addWord(final SuggestedWordInfo wordInfo, final String dictTypeKey,
final ArrayList<SuggestedWordInfo> suggestions, final String consideredWord) { final ArrayList<SuggestedWordInfo> suggestions) {
final int prefMaxSuggestions = MAX_SUGGESTIONS;
final CharSequence word = wordInfo.mWord;
final int score = wordInfo.mScore;
int pos = 0;
final int index = final int index =
Collections.binarySearch(suggestions, wordInfo, sSuggestedWordInfoComparator); Collections.binarySearch(suggestions, wordInfo, sSuggestedWordInfoComparator);
// binarySearch returns the index of an equal word info if found. If not found // binarySearch returns the index of an equal word info if found. If not found
// it returns -insertionPoint - 1. We want the insertion point, so: // it returns -insertionPoint - 1. We want the insertion point, so:
pos = index >= 0 ? index : -index - 1; final int pos = index >= 0 ? index : -index - 1;
if (pos >= prefMaxSuggestions) { if (pos >= MAX_SUGGESTIONS) return;
return true;
}
final SuggestedWordInfo transformedWordInfo = getTransformedSuggestedWordInfo(wordInfo, final SuggestedWordInfo transformedWordInfo = getTransformedSuggestedWordInfo(wordInfo,
mLocale, mIsAllUpperCase, mIsFirstCharCapitalized, mTrailingSingleQuotesCount); mLocale, mIsAllUpperCase, mIsFirstCharCapitalized, mTrailingSingleQuotesCount);
suggestions.add(pos, transformedWordInfo); suggestions.add(pos, transformedWordInfo);
if (suggestions.size() > prefMaxSuggestions) { if (suggestions.size() > MAX_SUGGESTIONS) {
suggestions.remove(prefMaxSuggestions); suggestions.remove(MAX_SUGGESTIONS);
} }
LatinImeLogger.onAddSuggestedWord(transformedWordInfo.mWord.toString(), dictTypeKey); LatinImeLogger.onAddSuggestedWord(transformedWordInfo.mWord.toString(), dictTypeKey);
return true;
} }
private static SuggestedWordInfo getTransformedSuggestedWordInfo( private static SuggestedWordInfo getTransformedSuggestedWordInfo(