diff options
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/com/android/inputmethod/latin/LatinIME.java | 67 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java | 51 |
2 files changed, 56 insertions, 62 deletions
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index 77def63f1..2b1112d10 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -182,7 +182,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen switch (msg.what) { case MSG_UPDATE_SUGGESTION_STRIP: latinIme.mInputLogic.performUpdateSuggestionStripSync( - latinIme.mSettings.getCurrent(), this); + latinIme.mSettings.getCurrent(), this /* handler */, + latinIme.mInputUpdater); break; case MSG_UPDATE_SHIFT_STATE: switcher.updateShiftState(); @@ -1053,9 +1054,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen false /* isObsoleteSuggestions */, false /* isPrediction */); // When in fullscreen mode, show completions generated by the application - final boolean isAutoCorrection = false; - setSuggestedWords(suggestedWords, isAutoCorrection); - setAutoCorrectionIndicator(isAutoCorrection); + setSuggestedWords(suggestedWords); + setAutoCorrectionIndicator(false); setSuggestionStripShown(true); if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) { ResearchLogger.latinIME_onDisplayCompletions(applicationSpecifiedCompletions); @@ -1245,13 +1245,14 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen // Implementation of {@link KeyboardActionListener}. @Override public void onCodeInput(final int primaryCode, final int x, final int y) { - mInputLogic.onCodeInput(primaryCode, x, y, mHandler, mKeyboardSwitcher, mSubtypeSwitcher); + mInputLogic.onCodeInput(primaryCode, x, y, mHandler, mInputUpdater, + mKeyboardSwitcher, mSubtypeSwitcher); } // Called from PointerTracker through the KeyboardActionListener interface @Override public void onTextInput(final String rawText) { - mInputLogic.onTextInput(mSettings.getCurrent(), rawText, mHandler); + mInputLogic.onTextInput(mSettings.getCurrent(), rawText, mHandler, mInputUpdater); mKeyboardSwitcher.updateShiftState(); mKeyboardSwitcher.onCodeInput(Constants.CODE_OUTPUT_TEXT); } @@ -1377,20 +1378,20 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen private void getSuggestedWordsGestureLocked(final InputPointers batchPointers, final int sequenceNumber, final OnGetSuggestedWordsCallback callback) { mLatinIme.mInputLogic.mWordComposer.setBatchInputPointers(batchPointers); - mLatinIme.getSuggestedWordsOrOlderSuggestionsAsync(Suggest.SESSION_GESTURE, - sequenceNumber, new OnGetSuggestedWordsCallback() { - @Override - public void onGetSuggestedWords(SuggestedWords suggestedWords) { - if (suggestedWords.isEmpty()) { - // Previous suggestions are found in InputLogic#mSuggestedWords. Since - // these are the most recent suggestions and we just recomputed new - // ones to update them, it means the previous ones are there. - callback.onGetSuggestedWords(mLatinIme.mInputLogic.mSuggestedWords); - } else { - callback.onGetSuggestedWords(suggestedWords); - } - } - }); + getSuggestedWords(Suggest.SESSION_GESTURE, sequenceNumber, + new OnGetSuggestedWordsCallback() { + @Override + public void onGetSuggestedWords(SuggestedWords suggestedWords) { + if (suggestedWords.isEmpty()) { + // Previous suggestions are found in InputLogic#mSuggestedWords. + // Since these are the most recent ones and we just recomputed new + // ones to update them, it means the previous ones are there. + callback.onGetSuggestedWords(mLatinIme.mInputLogic.mSuggestedWords); + } else { + callback.onGetSuggestedWords(suggestedWords); + } + } + }); } public void getSuggestedWords(final int sessionId, final int sequenceNumber, @@ -1497,16 +1498,16 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen // TODO[IL]: Define a clear interface for this public void clearSuggestionStrip() { - setSuggestedWords(SuggestedWords.EMPTY, false); + setSuggestedWords(SuggestedWords.EMPTY); setAutoCorrectionIndicator(false); } // TODO[IL]: Define a clear interface for this - public void setSuggestedWords(final SuggestedWords words, final boolean isAutoCorrection) { + public void setSuggestedWords(final SuggestedWords words) { mInputLogic.mSuggestedWords = words; if (mSuggestionStripView != null) { mSuggestionStripView.setSuggestions(words); - mKeyboardSwitcher.onAutoCorrectionStateChanged(isAutoCorrection); + mKeyboardSwitcher.onAutoCorrectionStateChanged(words.mWillAutoCorrect); } } @@ -1564,20 +1565,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen additionalFeaturesOptions, sessionId, sequenceNumber, callback); } - // TODO[IL]: Move this to InputLogic? - public void getSuggestedWordsOrOlderSuggestionsAsync(final int sessionId, - final int sequenceNumber, final OnGetSuggestedWordsCallback callback) { - mInputUpdater.getSuggestedWords(sessionId, sequenceNumber, - new OnGetSuggestedWordsCallback() { - @Override - public void onGetSuggestedWords(SuggestedWords suggestedWords) { - callback.onGetSuggestedWords(maybeRetrieveOlderSuggestions( - mInputLogic.mWordComposer.getTypedWord(), suggestedWords)); - } - }); - } - - private SuggestedWords maybeRetrieveOlderSuggestions(final String typedWord, + // TODO[IL]: Move this to InputLogic + public SuggestedWords maybeRetrieveOlderSuggestions(final String typedWord, final SuggestedWords suggestedWords) { // TODO: consolidate this into getSuggestedWords // We update the suggestion strip only when we have some suggestions to show, i.e. when @@ -1631,7 +1620,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen autoCorrection = typedWord; } mInputLogic.mWordComposer.setAutoCorrection(autoCorrection); - setSuggestedWords(suggestedWords, suggestedWords.mWillAutoCorrect); + setSuggestedWords(suggestedWords); setAutoCorrectionIndicator(suggestedWords.mWillAutoCorrect); setSuggestionStripShown(isSuggestionsStripVisible()); // An auto-correction is available, cache it in accessibility code so @@ -1750,7 +1739,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen if (currentSettings.mBigramPredictionEnabled) { clearSuggestionStrip(); } else { - setSuggestedWords(currentSettings.mSuggestPuncList, false); + setSuggestedWords(currentSettings.mSuggestPuncList); } setAutoCorrectionIndicator(false); setSuggestionStripShown(isSuggestionsStripVisible()); diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java index 1dff1a37a..488ce6e7b 100644 --- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java +++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java @@ -140,11 +140,11 @@ public final class InputLogic { * @param rawText the text to input. */ public void onTextInput(final SettingsValues settingsValues, final String rawText, - // TODO: remove this argument - final LatinIME.UIHandler handler) { + // TODO: remove these arguments + final LatinIME.UIHandler handler, final LatinIME.InputUpdater inputUpdater) { mConnection.beginBatchEdit(); if (mWordComposer.isComposingWord()) { - commitCurrentAutoCorrection(settingsValues, rawText, handler); + commitCurrentAutoCorrection(settingsValues, rawText, handler, inputUpdater); } else { resetComposingState(true /* alsoResetLastComposedWord */); } @@ -180,9 +180,9 @@ public final class InputLogic { * @param y the y-coordinate where the user pressed the key, or NOT_A_COORDINATE. */ public void onCodeInput(final int code, final int x, final int y, - // TODO: remove these three arguments - final LatinIME.UIHandler handler, final KeyboardSwitcher keyboardSwitcher, - final SubtypeSwitcher subtypeSwitcher) { + // TODO: remove these four arguments + final LatinIME.UIHandler handler, final LatinIME.InputUpdater inputUpdater, + final KeyboardSwitcher keyboardSwitcher, final SubtypeSwitcher subtypeSwitcher) { if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) { ResearchLogger.latinIME_onCodeInput(code, x, y); } @@ -273,17 +273,17 @@ public final class InputLogic { } else { // No action label, and the action from imeOptions is NONE: this is a regular // enter key that should input a carriage return. - didAutoCorrect = handleNonSpecialCharacter(settingsValues, - Constants.CODE_ENTER, x, y, spaceState, keyboardSwitcher, handler); + didAutoCorrect = handleNonSpecialCharacter(settingsValues, Constants.CODE_ENTER, + x, y, spaceState, keyboardSwitcher, handler, inputUpdater); } break; case Constants.CODE_SHIFT_ENTER: - didAutoCorrect = handleNonSpecialCharacter(settingsValues, - Constants.CODE_ENTER, x, y, spaceState, keyboardSwitcher, handler); + didAutoCorrect = handleNonSpecialCharacter(settingsValues, Constants.CODE_ENTER, + x, y, spaceState, keyboardSwitcher, handler, inputUpdater); break; default: didAutoCorrect = handleNonSpecialCharacter(settingsValues, - code, x, y, spaceState, keyboardSwitcher, handler); + code, x, y, spaceState, keyboardSwitcher, handler, inputUpdater); break; } keyboardSwitcher.onCodeInput(code); @@ -329,7 +329,7 @@ public final class InputLogic { // so we do not attempt to correct, on the assumption that if that was a dictionary // word, the user would probably have gestured instead. commitCurrentAutoCorrection(settingsValues, LastComposedWord.NOT_A_SEPARATOR, - handler); + handler, inputUpdater); } else { commitTyped(settingsValues, LastComposedWord.NOT_A_SEPARATOR); } @@ -431,13 +431,14 @@ public final class InputLogic { private boolean handleNonSpecialCharacter(final SettingsValues settingsValues, final int codePoint, final int x, final int y, final int spaceState, // TODO: remove these arguments - final KeyboardSwitcher keyboardSwitcher, final LatinIME.UIHandler handler) { + final KeyboardSwitcher keyboardSwitcher, final LatinIME.UIHandler handler, + final LatinIME.InputUpdater inputUpdater) { mSpaceState = SpaceState.NONE; final boolean didAutoCorrect; if (settingsValues.isWordSeparator(codePoint) || Character.getType(codePoint) == Character.OTHER_SYMBOL) { didAutoCorrect = handleSeparator(settingsValues, codePoint, x, y, spaceState, - keyboardSwitcher, handler); + keyboardSwitcher, handler, inputUpdater); } else { didAutoCorrect = false; if (SpaceState.PHANTOM == spaceState) { @@ -577,7 +578,8 @@ public final class InputLogic { private boolean handleSeparator(final SettingsValues settingsValues, final int codePoint, final int x, final int y, final int spaceState, // TODO: remove these arguments - final KeyboardSwitcher keyboardSwitcher, final LatinIME.UIHandler handler) { + final KeyboardSwitcher keyboardSwitcher, final LatinIME.UIHandler handler, + final LatinIME.InputUpdater inputUpdater) { boolean didAutoCorrect = false; // We avoid sending spaces in languages without spaces if we were composing. final boolean shouldAvoidSendingCode = Constants.CODE_SPACE == codePoint @@ -593,7 +595,7 @@ public final class InputLogic { if (settingsValues.mCorrectionEnabled) { final String separator = shouldAvoidSendingCode ? LastComposedWord.NOT_A_SEPARATOR : StringUtils.newSingleCodePointString(codePoint); - commitCurrentAutoCorrection(settingsValues, separator, handler); + commitCurrentAutoCorrection(settingsValues, separator, handler, inputUpdater); didAutoCorrect = true; } else { commitTyped(settingsValues, StringUtils.newSingleCodePointString(codePoint)); @@ -990,7 +992,7 @@ public final class InputLogic { public void performUpdateSuggestionStripSync(final SettingsValues settingsValues, // TODO: Remove this variable - final LatinIME.UIHandler handler) { + final LatinIME.UIHandler handler, final LatinIME.InputUpdater inputUpdater) { handler.cancelUpdateSuggestionStrip(); // Check if we have a suggestion engine attached. @@ -1008,11 +1010,14 @@ public final class InputLogic { } final AsyncResultHolder<SuggestedWords> holder = new AsyncResultHolder<SuggestedWords>(); - mLatinIME.getSuggestedWordsOrOlderSuggestionsAsync(Suggest.SESSION_TYPING, + inputUpdater.getSuggestedWords(Suggest.SESSION_TYPING, SuggestedWords.NOT_A_SEQUENCE_NUMBER, new OnGetSuggestedWordsCallback() { @Override public void onGetSuggestedWords(final SuggestedWords suggestedWords) { - holder.set(suggestedWords); + final SuggestedWords suggestedWordsWithMaybeOlderSuggestions = + mLatinIME.maybeRetrieveOlderSuggestions( + mWordComposer.getTypedWord(), suggestedWords); + holder.set(suggestedWordsWithMaybeOlderSuggestions); } } ); @@ -1385,7 +1390,7 @@ public final class InputLogic { if (settingsValues.mBigramPredictionEnabled) { mLatinIME.clearSuggestionStrip(); } else { - mLatinIME.setSuggestedWords(settingsValues.mSuggestPuncList, false); + mLatinIME.setSuggestedWords(settingsValues.mSuggestPuncList); } mConnection.resetCachesUponCursorMoveAndReturnSuccess(newSelStart, newSelEnd, shouldFinishComposition); @@ -1550,11 +1555,11 @@ public final class InputLogic { // TODO: Make this private public void commitCurrentAutoCorrection(final SettingsValues settingsValues, final String separator, - // TODO: Remove this argument. - final LatinIME.UIHandler handler) { + // TODO: Remove these arguments. + final LatinIME.UIHandler handler, final LatinIME.InputUpdater inputUpdater) { // Complete any pending suggestions query first if (handler.hasPendingUpdateSuggestions()) { - performUpdateSuggestionStripSync(settingsValues, handler); + performUpdateSuggestionStripSync(settingsValues, handler, inputUpdater); } final String typedAutoCorrection = mWordComposer.getAutoCorrectionOrNull(); final String typedWord = mWordComposer.getTypedWord(); |