Loading java/src/com/android/inputmethod/latin/DictionaryFacilitator.java +3 −2 Original line number Diff line number Diff line Loading @@ -491,8 +491,9 @@ public class DictionaryFacilitator { final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo, final SettingsValuesForSuggestion settingsValuesForSuggestion, final int sessionId) { final Dictionaries dictionaries = mDictionaries; final SuggestionResults suggestionResults = new SuggestionResults(dictionaries.mLocale, SuggestedWords.MAX_SUGGESTIONS); final SuggestionResults suggestionResults = new SuggestionResults( dictionaries.mLocale, SuggestedWords.MAX_SUGGESTIONS, prevWordsInfo.mPrevWordsInfo[0].mIsBeginningOfSentence); final float[] languageWeight = new float[] { Dictionary.NOT_A_LANGUAGE_WEIGHT }; for (final String dictType : DICT_TYPES_ORDERED_TO_GET_SUGGESTIONS) { final Dictionary dictionary = dictionaries.getDict(dictType); Loading java/src/com/android/inputmethod/latin/LatinIME.java +9 −5 Original line number Diff line number Diff line Loading @@ -1488,19 +1488,23 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen final boolean isEmptyApplicationSpecifiedCompletions = currentSettingsValues.isApplicationSpecifiedCompletionsOn() && suggestedWords.isEmpty(); final boolean noSuggestionsToShow = (SuggestedWords.EMPTY == suggestedWords) final boolean noSuggestionsFromDictionaries = (SuggestedWords.EMPTY == suggestedWords) || suggestedWords.isPunctuationSuggestions() || isEmptyApplicationSpecifiedCompletions; if (shouldShowImportantNotice && noSuggestionsToShow) { final boolean isBeginningOfSentencePrediction = (suggestedWords.mInputStyle == SuggestedWords.INPUT_STYLE_BEGINNING_OF_SENTENCE_PREDICTION); final boolean noSuggestionsToOverrideImportantNotice = noSuggestionsFromDictionaries || isBeginningOfSentencePrediction; if (shouldShowImportantNotice && noSuggestionsToOverrideImportantNotice) { if (mSuggestionStripView.maybeShowImportantNoticeTitle()) { return; } } if (currentSettingsValues.isSuggestionsEnabledPerUserSettings() // We should clear suggestions if there is no suggestion to show. || noSuggestionsToShow || currentSettingsValues.isApplicationSpecifiedCompletionsOn()) { || currentSettingsValues.isApplicationSpecifiedCompletionsOn() // We should clear the contextual strip if there is no suggestion from dictionaries. || noSuggestionsFromDictionaries) { mSuggestionStripView.setSuggestions(suggestedWords, SubtypeLocaleUtils.isRtlLanguage(mSubtypeSwitcher.getCurrentSubtype())); } Loading java/src/com/android/inputmethod/latin/Suggest.java +10 −2 Original line number Diff line number Diff line Loading @@ -186,8 +186,14 @@ public final class Suggest { suggestionsList = suggestionsContainer; } final int inputStyle = resultsArePredictions ? SuggestedWords.INPUT_STYLE_PREDICTION : inputStyleIfNotPrediction; final int inputStyle; if (resultsArePredictions) { inputStyle = suggestionResults.mIsBeginningOfSentence ? SuggestedWords.INPUT_STYLE_BEGINNING_OF_SENTENCE_PREDICTION : SuggestedWords.INPUT_STYLE_PREDICTION; } else { inputStyle = inputStyleIfNotPrediction; } callback.onGetSuggestedWords(new SuggestedWords(suggestionsList, suggestionResults.mRawSuggestions, // TODO: this first argument is lying. If this is a whitelisted word which is an Loading Loading @@ -240,6 +246,8 @@ public final class Suggest { // In the batch input mode, the most relevant suggested word should act as a "typed word" // (typedWordValid=true), not as an "auto correct word" (willAutoCorrect=false). // Note that because this method is never used to get predictions, there is no need to // modify inputType such in getSuggestedWordsForNonBatchInput. callback.onGetSuggestedWords(new SuggestedWords(suggestionsContainer, suggestionResults.mRawSuggestions, true /* typedWordValid */, Loading java/src/com/android/inputmethod/latin/SuggestedWords.java +10 −4 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ public class SuggestedWords { public static final int INPUT_STYLE_APPLICATION_SPECIFIED = 4; public static final int INPUT_STYLE_RECORRECTION = 5; public static final int INPUT_STYLE_PREDICTION = 6; public static final int INPUT_STYLE_BEGINNING_OF_SENTENCE_PREDICTION = 7; // The maximum number of suggestions available. public static final int MAX_SUGGESTIONS = 18; Loading Loading @@ -80,10 +81,9 @@ public class SuggestedWords { final int inputStyle, final int sequenceNumber) { this(suggestedWordInfoList, rawSuggestions, (suggestedWordInfoList.isEmpty() || INPUT_STYLE_PREDICTION == inputStyle) ? null (suggestedWordInfoList.isEmpty() || isPrediction(inputStyle)) ? null : suggestedWordInfoList.get(INDEX_OF_TYPED_WORD).mWord, typedWordValid, willAutoCorrect, isObsoleteSuggestions, inputStyle, sequenceNumber); typedWordValid, willAutoCorrect, isObsoleteSuggestions, inputStyle, sequenceNumber); } public SuggestedWords(final ArrayList<SuggestedWordInfo> suggestedWordInfoList, Loading Loading @@ -171,6 +171,7 @@ public class SuggestedWords { return "SuggestedWords:" + " mTypedWordValid=" + mTypedWordValid + " mWillAutoCorrect=" + mWillAutoCorrect + " mInputStyle=" + mInputStyle + " words=" + Arrays.toString(mSuggestedWordInfoList.toArray()); } Loading Loading @@ -377,8 +378,13 @@ public class SuggestedWords { } } private static boolean isPrediction(final int inputStyle) { return INPUT_STYLE_PREDICTION == inputStyle || INPUT_STYLE_BEGINNING_OF_SENTENCE_PREDICTION == inputStyle; } public boolean isPrediction() { return INPUT_STYLE_PREDICTION == mInputStyle; return isPrediction(mInputStyle); } // SuggestedWords is an immutable object, as much as possible. We must not just remove Loading java/src/com/android/inputmethod/latin/utils/SuggestionResults.java +9 −4 Original line number Diff line number Diff line Loading @@ -32,14 +32,18 @@ import java.util.TreeSet; public final class SuggestionResults extends TreeSet<SuggestedWordInfo> { public final Locale mLocale; public final ArrayList<SuggestedWordInfo> mRawSuggestions; // TODO: Instead of a boolean , we may want to include the context of this suggestion results, // such as {@link PrevWordsInfo}. public final boolean mIsBeginningOfSentence; private final int mCapacity; public SuggestionResults(final Locale locale, final int capacity) { this(locale, sSuggestedWordInfoComparator, capacity); public SuggestionResults(final Locale locale, final int capacity, final boolean isBeginningOfSentence) { this(locale, sSuggestedWordInfoComparator, capacity, isBeginningOfSentence); } public SuggestionResults(final Locale locale, final Comparator<SuggestedWordInfo> comparator, final int capacity) { private SuggestionResults(final Locale locale, final Comparator<SuggestedWordInfo> comparator, final int capacity, final boolean isBeginningOfSentence) { super(comparator); mLocale = locale; mCapacity = capacity; Loading @@ -48,6 +52,7 @@ public final class SuggestionResults extends TreeSet<SuggestedWordInfo> { } else { mRawSuggestions = null; } mIsBeginningOfSentence = isBeginningOfSentence; } @Override Loading Loading
java/src/com/android/inputmethod/latin/DictionaryFacilitator.java +3 −2 Original line number Diff line number Diff line Loading @@ -491,8 +491,9 @@ public class DictionaryFacilitator { final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo, final SettingsValuesForSuggestion settingsValuesForSuggestion, final int sessionId) { final Dictionaries dictionaries = mDictionaries; final SuggestionResults suggestionResults = new SuggestionResults(dictionaries.mLocale, SuggestedWords.MAX_SUGGESTIONS); final SuggestionResults suggestionResults = new SuggestionResults( dictionaries.mLocale, SuggestedWords.MAX_SUGGESTIONS, prevWordsInfo.mPrevWordsInfo[0].mIsBeginningOfSentence); final float[] languageWeight = new float[] { Dictionary.NOT_A_LANGUAGE_WEIGHT }; for (final String dictType : DICT_TYPES_ORDERED_TO_GET_SUGGESTIONS) { final Dictionary dictionary = dictionaries.getDict(dictType); Loading
java/src/com/android/inputmethod/latin/LatinIME.java +9 −5 Original line number Diff line number Diff line Loading @@ -1488,19 +1488,23 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen final boolean isEmptyApplicationSpecifiedCompletions = currentSettingsValues.isApplicationSpecifiedCompletionsOn() && suggestedWords.isEmpty(); final boolean noSuggestionsToShow = (SuggestedWords.EMPTY == suggestedWords) final boolean noSuggestionsFromDictionaries = (SuggestedWords.EMPTY == suggestedWords) || suggestedWords.isPunctuationSuggestions() || isEmptyApplicationSpecifiedCompletions; if (shouldShowImportantNotice && noSuggestionsToShow) { final boolean isBeginningOfSentencePrediction = (suggestedWords.mInputStyle == SuggestedWords.INPUT_STYLE_BEGINNING_OF_SENTENCE_PREDICTION); final boolean noSuggestionsToOverrideImportantNotice = noSuggestionsFromDictionaries || isBeginningOfSentencePrediction; if (shouldShowImportantNotice && noSuggestionsToOverrideImportantNotice) { if (mSuggestionStripView.maybeShowImportantNoticeTitle()) { return; } } if (currentSettingsValues.isSuggestionsEnabledPerUserSettings() // We should clear suggestions if there is no suggestion to show. || noSuggestionsToShow || currentSettingsValues.isApplicationSpecifiedCompletionsOn()) { || currentSettingsValues.isApplicationSpecifiedCompletionsOn() // We should clear the contextual strip if there is no suggestion from dictionaries. || noSuggestionsFromDictionaries) { mSuggestionStripView.setSuggestions(suggestedWords, SubtypeLocaleUtils.isRtlLanguage(mSubtypeSwitcher.getCurrentSubtype())); } Loading
java/src/com/android/inputmethod/latin/Suggest.java +10 −2 Original line number Diff line number Diff line Loading @@ -186,8 +186,14 @@ public final class Suggest { suggestionsList = suggestionsContainer; } final int inputStyle = resultsArePredictions ? SuggestedWords.INPUT_STYLE_PREDICTION : inputStyleIfNotPrediction; final int inputStyle; if (resultsArePredictions) { inputStyle = suggestionResults.mIsBeginningOfSentence ? SuggestedWords.INPUT_STYLE_BEGINNING_OF_SENTENCE_PREDICTION : SuggestedWords.INPUT_STYLE_PREDICTION; } else { inputStyle = inputStyleIfNotPrediction; } callback.onGetSuggestedWords(new SuggestedWords(suggestionsList, suggestionResults.mRawSuggestions, // TODO: this first argument is lying. If this is a whitelisted word which is an Loading Loading @@ -240,6 +246,8 @@ public final class Suggest { // In the batch input mode, the most relevant suggested word should act as a "typed word" // (typedWordValid=true), not as an "auto correct word" (willAutoCorrect=false). // Note that because this method is never used to get predictions, there is no need to // modify inputType such in getSuggestedWordsForNonBatchInput. callback.onGetSuggestedWords(new SuggestedWords(suggestionsContainer, suggestionResults.mRawSuggestions, true /* typedWordValid */, Loading
java/src/com/android/inputmethod/latin/SuggestedWords.java +10 −4 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ public class SuggestedWords { public static final int INPUT_STYLE_APPLICATION_SPECIFIED = 4; public static final int INPUT_STYLE_RECORRECTION = 5; public static final int INPUT_STYLE_PREDICTION = 6; public static final int INPUT_STYLE_BEGINNING_OF_SENTENCE_PREDICTION = 7; // The maximum number of suggestions available. public static final int MAX_SUGGESTIONS = 18; Loading Loading @@ -80,10 +81,9 @@ public class SuggestedWords { final int inputStyle, final int sequenceNumber) { this(suggestedWordInfoList, rawSuggestions, (suggestedWordInfoList.isEmpty() || INPUT_STYLE_PREDICTION == inputStyle) ? null (suggestedWordInfoList.isEmpty() || isPrediction(inputStyle)) ? null : suggestedWordInfoList.get(INDEX_OF_TYPED_WORD).mWord, typedWordValid, willAutoCorrect, isObsoleteSuggestions, inputStyle, sequenceNumber); typedWordValid, willAutoCorrect, isObsoleteSuggestions, inputStyle, sequenceNumber); } public SuggestedWords(final ArrayList<SuggestedWordInfo> suggestedWordInfoList, Loading Loading @@ -171,6 +171,7 @@ public class SuggestedWords { return "SuggestedWords:" + " mTypedWordValid=" + mTypedWordValid + " mWillAutoCorrect=" + mWillAutoCorrect + " mInputStyle=" + mInputStyle + " words=" + Arrays.toString(mSuggestedWordInfoList.toArray()); } Loading Loading @@ -377,8 +378,13 @@ public class SuggestedWords { } } private static boolean isPrediction(final int inputStyle) { return INPUT_STYLE_PREDICTION == inputStyle || INPUT_STYLE_BEGINNING_OF_SENTENCE_PREDICTION == inputStyle; } public boolean isPrediction() { return INPUT_STYLE_PREDICTION == mInputStyle; return isPrediction(mInputStyle); } // SuggestedWords is an immutable object, as much as possible. We must not just remove Loading
java/src/com/android/inputmethod/latin/utils/SuggestionResults.java +9 −4 Original line number Diff line number Diff line Loading @@ -32,14 +32,18 @@ import java.util.TreeSet; public final class SuggestionResults extends TreeSet<SuggestedWordInfo> { public final Locale mLocale; public final ArrayList<SuggestedWordInfo> mRawSuggestions; // TODO: Instead of a boolean , we may want to include the context of this suggestion results, // such as {@link PrevWordsInfo}. public final boolean mIsBeginningOfSentence; private final int mCapacity; public SuggestionResults(final Locale locale, final int capacity) { this(locale, sSuggestedWordInfoComparator, capacity); public SuggestionResults(final Locale locale, final int capacity, final boolean isBeginningOfSentence) { this(locale, sSuggestedWordInfoComparator, capacity, isBeginningOfSentence); } public SuggestionResults(final Locale locale, final Comparator<SuggestedWordInfo> comparator, final int capacity) { private SuggestionResults(final Locale locale, final Comparator<SuggestedWordInfo> comparator, final int capacity, final boolean isBeginningOfSentence) { super(comparator); mLocale = locale; mCapacity = capacity; Loading @@ -48,6 +52,7 @@ public final class SuggestionResults extends TreeSet<SuggestedWordInfo> { } else { mRawSuggestions = null; } mIsBeginningOfSentence = isBeginningOfSentence; } @Override Loading