Loading java/src/com/android/inputmethod/latin/Suggest.java +21 −24 Original line number Diff line number Diff line Loading @@ -222,7 +222,7 @@ public class Suggest { mIsFirstCharCapitalized = !isPrediction && wordComposer.isFirstCharCapitalized(); mIsAllUpperCase = !isPrediction && wordComposer.isAllUpperCase(); mTrailingSingleQuotesCount = wordComposer.trailingSingleQuotesCount(); final ArrayList<SuggestedWordInfo> suggestions = final ArrayList<SuggestedWordInfo> suggestionsContainer = new ArrayList<SuggestedWordInfo>(MAX_SUGGESTIONS); final String typedWord = wordComposer.getTypedWord(); Loading Loading @@ -250,11 +250,9 @@ public class Suggest { if (null != lowerPrevWord) { localSuggestions.addAll(dictionary.getBigrams(wordComposer, lowerPrevWord)); } for (final SuggestedWordInfo suggestion : localSuggestions) { final String suggestionStr = suggestion.mWord.toString(); addWord(suggestionStr, null, suggestion.mScore, dicTypeId, Dictionary.BIGRAM, suggestions, consideredWord); for (final SuggestedWordInfo localSuggestion : localSuggestions) { addWord(localSuggestion, dicTypeId, Dictionary.BIGRAM, suggestionsContainer, consideredWord); } } } Loading @@ -278,10 +276,8 @@ public class Suggest { final ArrayList<SuggestedWordInfo> localSuggestions = dictionary.getWords( wordComposerForLookup, prevWordForBigram, proximityInfo); for (final SuggestedWordInfo suggestion : localSuggestions) { final String suggestionStr = suggestion.mWord.toString(); addWord(suggestionStr, null, suggestion.mScore, dicTypeId, Dictionary.UNIGRAM, suggestions, consideredWord); addWord(suggestion, dicTypeId, Dictionary.UNIGRAM, suggestionsContainer, consideredWord); } } } Loading @@ -293,7 +289,7 @@ public class Suggest { if (isCorrectionEnabled) { final CharSequence autoCorrection = AutoCorrection.computeAutoCorrectionWord(mDictionaries, wordComposer, suggestions, consideredWord, mAutoCorrectionThreshold, suggestionsContainer, consideredWord, mAutoCorrectionThreshold, whitelistedWord); hasAutoCorrection = (null != autoCorrection); } else { Loading @@ -306,25 +302,25 @@ public class Suggest { for (int i = mTrailingSingleQuotesCount - 1; i >= 0; --i) { sb.appendCodePoint(Keyboard.CODE_SINGLE_QUOTE); } suggestions.add(0, new SuggestedWordInfo(sb.toString(), suggestionsContainer.add(0, new SuggestedWordInfo(sb.toString(), SuggestedWordInfo.MAX_SCORE, SuggestedWordInfo.KIND_WHITELIST)); } else { suggestions.add(0, new SuggestedWordInfo(whitelistedWord, suggestionsContainer.add(0, new SuggestedWordInfo(whitelistedWord, SuggestedWordInfo.MAX_SCORE, SuggestedWordInfo.KIND_WHITELIST)); } } if (!isPrediction) { suggestions.add(0, new SuggestedWordInfo(typedWord, SuggestedWordInfo.MAX_SCORE, SuggestedWordInfo.KIND_TYPED)); suggestionsContainer.add(0, new SuggestedWordInfo(typedWord, SuggestedWordInfo.MAX_SCORE, SuggestedWordInfo.KIND_TYPED)); } SuggestedWordInfo.removeDups(suggestions); SuggestedWordInfo.removeDups(suggestionsContainer); final ArrayList<SuggestedWordInfo> suggestionsList; if (DBG && !suggestions.isEmpty()) { suggestionsList = getSuggestionsInfoListWithDebugInfo(typedWord, suggestions); if (DBG && !suggestionsContainer.isEmpty()) { suggestionsList = getSuggestionsInfoListWithDebugInfo(typedWord, suggestionsContainer); } else { suggestionsList = suggestions; suggestionsList = suggestionsContainer; } // TODO: Change this scheme - a boolean is not enough. A whitelisted word may be "valid" Loading Loading @@ -388,13 +384,14 @@ public class Suggest { return suggestionsList; } public boolean addWord(final String word, int[] indices, int score, final int dicTypeId, final int dataType, public boolean addWord(final SuggestedWordInfo wordInfo, final int dicTypeId, final int dataType, final ArrayList<SuggestedWordInfo> suggestions, final String consideredWord) { int dataTypeForLog = dataType; final int prefMaxSuggestions = MAX_SUGGESTIONS; final int length = word.codePointCount(0, word.length()); final String word = wordInfo.mWord.toString(); final int score = wordInfo.mScore; int pos = 0; // Check if it's the same word, only caps are different Loading @@ -416,6 +413,7 @@ public class Suggest { // Check the last one's score and bail if (suggestions.size() >= prefMaxSuggestions && suggestions.get(prefMaxSuggestions - 1).mScore >= score) return true; final int length = word.codePointCount(0, word.length()); while (pos < suggestions.size()) { final int curScore = suggestions.get(pos).mScore; if (curScore < score Loading @@ -440,8 +438,7 @@ public class Suggest { for (int i = mTrailingSingleQuotesCount - 1; i >= 0; --i) { sb.appendCodePoint(Keyboard.CODE_SINGLE_QUOTE); } // TODO: figure out what type of suggestion this is suggestions.add(pos, new SuggestedWordInfo(sb, score, SuggestedWordInfo.KIND_CORRECTION)); suggestions.add(pos, new SuggestedWordInfo(sb, score, wordInfo.mKind)); if (suggestions.size() > prefMaxSuggestions) { suggestions.remove(prefMaxSuggestions); } else { Loading Loading
java/src/com/android/inputmethod/latin/Suggest.java +21 −24 Original line number Diff line number Diff line Loading @@ -222,7 +222,7 @@ public class Suggest { mIsFirstCharCapitalized = !isPrediction && wordComposer.isFirstCharCapitalized(); mIsAllUpperCase = !isPrediction && wordComposer.isAllUpperCase(); mTrailingSingleQuotesCount = wordComposer.trailingSingleQuotesCount(); final ArrayList<SuggestedWordInfo> suggestions = final ArrayList<SuggestedWordInfo> suggestionsContainer = new ArrayList<SuggestedWordInfo>(MAX_SUGGESTIONS); final String typedWord = wordComposer.getTypedWord(); Loading Loading @@ -250,11 +250,9 @@ public class Suggest { if (null != lowerPrevWord) { localSuggestions.addAll(dictionary.getBigrams(wordComposer, lowerPrevWord)); } for (final SuggestedWordInfo suggestion : localSuggestions) { final String suggestionStr = suggestion.mWord.toString(); addWord(suggestionStr, null, suggestion.mScore, dicTypeId, Dictionary.BIGRAM, suggestions, consideredWord); for (final SuggestedWordInfo localSuggestion : localSuggestions) { addWord(localSuggestion, dicTypeId, Dictionary.BIGRAM, suggestionsContainer, consideredWord); } } } Loading @@ -278,10 +276,8 @@ public class Suggest { final ArrayList<SuggestedWordInfo> localSuggestions = dictionary.getWords( wordComposerForLookup, prevWordForBigram, proximityInfo); for (final SuggestedWordInfo suggestion : localSuggestions) { final String suggestionStr = suggestion.mWord.toString(); addWord(suggestionStr, null, suggestion.mScore, dicTypeId, Dictionary.UNIGRAM, suggestions, consideredWord); addWord(suggestion, dicTypeId, Dictionary.UNIGRAM, suggestionsContainer, consideredWord); } } } Loading @@ -293,7 +289,7 @@ public class Suggest { if (isCorrectionEnabled) { final CharSequence autoCorrection = AutoCorrection.computeAutoCorrectionWord(mDictionaries, wordComposer, suggestions, consideredWord, mAutoCorrectionThreshold, suggestionsContainer, consideredWord, mAutoCorrectionThreshold, whitelistedWord); hasAutoCorrection = (null != autoCorrection); } else { Loading @@ -306,25 +302,25 @@ public class Suggest { for (int i = mTrailingSingleQuotesCount - 1; i >= 0; --i) { sb.appendCodePoint(Keyboard.CODE_SINGLE_QUOTE); } suggestions.add(0, new SuggestedWordInfo(sb.toString(), suggestionsContainer.add(0, new SuggestedWordInfo(sb.toString(), SuggestedWordInfo.MAX_SCORE, SuggestedWordInfo.KIND_WHITELIST)); } else { suggestions.add(0, new SuggestedWordInfo(whitelistedWord, suggestionsContainer.add(0, new SuggestedWordInfo(whitelistedWord, SuggestedWordInfo.MAX_SCORE, SuggestedWordInfo.KIND_WHITELIST)); } } if (!isPrediction) { suggestions.add(0, new SuggestedWordInfo(typedWord, SuggestedWordInfo.MAX_SCORE, SuggestedWordInfo.KIND_TYPED)); suggestionsContainer.add(0, new SuggestedWordInfo(typedWord, SuggestedWordInfo.MAX_SCORE, SuggestedWordInfo.KIND_TYPED)); } SuggestedWordInfo.removeDups(suggestions); SuggestedWordInfo.removeDups(suggestionsContainer); final ArrayList<SuggestedWordInfo> suggestionsList; if (DBG && !suggestions.isEmpty()) { suggestionsList = getSuggestionsInfoListWithDebugInfo(typedWord, suggestions); if (DBG && !suggestionsContainer.isEmpty()) { suggestionsList = getSuggestionsInfoListWithDebugInfo(typedWord, suggestionsContainer); } else { suggestionsList = suggestions; suggestionsList = suggestionsContainer; } // TODO: Change this scheme - a boolean is not enough. A whitelisted word may be "valid" Loading Loading @@ -388,13 +384,14 @@ public class Suggest { return suggestionsList; } public boolean addWord(final String word, int[] indices, int score, final int dicTypeId, final int dataType, public boolean addWord(final SuggestedWordInfo wordInfo, final int dicTypeId, final int dataType, final ArrayList<SuggestedWordInfo> suggestions, final String consideredWord) { int dataTypeForLog = dataType; final int prefMaxSuggestions = MAX_SUGGESTIONS; final int length = word.codePointCount(0, word.length()); final String word = wordInfo.mWord.toString(); final int score = wordInfo.mScore; int pos = 0; // Check if it's the same word, only caps are different Loading @@ -416,6 +413,7 @@ public class Suggest { // Check the last one's score and bail if (suggestions.size() >= prefMaxSuggestions && suggestions.get(prefMaxSuggestions - 1).mScore >= score) return true; final int length = word.codePointCount(0, word.length()); while (pos < suggestions.size()) { final int curScore = suggestions.get(pos).mScore; if (curScore < score Loading @@ -440,8 +438,7 @@ public class Suggest { for (int i = mTrailingSingleQuotesCount - 1; i >= 0; --i) { sb.appendCodePoint(Keyboard.CODE_SINGLE_QUOTE); } // TODO: figure out what type of suggestion this is suggestions.add(pos, new SuggestedWordInfo(sb, score, SuggestedWordInfo.KIND_CORRECTION)); suggestions.add(pos, new SuggestedWordInfo(sb, score, wordInfo.mKind)); if (suggestions.size() > prefMaxSuggestions) { suggestions.remove(prefMaxSuggestions); } else { Loading