[IL12] move restartSuggestions* to InputLogic

Bug: 8636060
Change-Id: I99474248e8fa35eb3053b5520abc8716805fdfb4
main
Jean Chalard 2013-12-19 20:30:41 +09:00
parent 10755af97b
commit bbe40835a9
2 changed files with 44 additions and 35 deletions

View File

@ -2222,40 +2222,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
mHandler.showSuggestionStripWithTypedWord(suggestedWords, typedWord);
}
/**
* Check if the cursor is actually at the end of a word. If so, restart suggestions on this
* word, else do nothing.
*/
// TODO[IL]: Move this to InputLogic and make it private.
public void restartSuggestionsOnWordBeforeCursorIfAtEndOfWord() {
final CharSequence word =
mInputLogic.mConnection.getWordBeforeCursorIfAtEndOfWord(mSettings.getCurrent());
if (null != word) {
final String wordString = word.toString();
restartSuggestionsOnWordBeforeCursor(wordString);
// TODO: Handle the case where the user manually moves the cursor and then backs up over
// a separator. In that case, the current log unit should not be uncommitted.
if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
ResearchLogger.getInstance().uncommitCurrentLogUnit(wordString,
true /* dumpCurrentLogUnit */);
}
}
}
// TODO[IL]: Move this to InputLogic
private void restartSuggestionsOnWordBeforeCursor(final String word) {
mInputLogic.mWordComposer.setComposingWord(word,
// Previous word is the 2nd word before cursor because we are restarting on the
// 1st word before cursor.
mInputLogic.getNthPreviousWordForSuggestion(mSettings.getCurrent(),
2 /* nthPreviousWord */),
mKeyboardSwitcher.getKeyboard());
final int length = word.length();
mInputLogic.mConnection.deleteSurroundingText(length, 0);
mInputLogic.mConnection.setComposingText(word, 1);
mHandler.postUpdateSuggestionStrip();
}
/**
* Retry resetting caches in the rich input connection.
*

View File

@ -632,7 +632,8 @@ public final class InputLogic {
// TODO: move mDisplayOrientation to CurrentSettings.
if (settingsValues.isSuggestionsRequested(mLatinIME.mDisplayOrientation)
&& settingsValues.mCurrentLanguageHasSpaces) {
mLatinIME.restartSuggestionsOnWordBeforeCursorIfAtEndOfWord();
restartSuggestionsOnWordBeforeCursorIfAtEndOfWord(settingsValues, keyboardSwitcher,
handler);
}
// We just removed a character. We need to update the auto-caps state.
keyboardSwitcher.updateShiftState();
@ -810,6 +811,48 @@ public final class InputLogic {
keyboardSwitcher.updateShiftState();
}
/**
* Check if the cursor is actually at the end of a word. If so, restart suggestions on this
* word, otherwise do nothing.
* @param settingsValues the current values of the settings.
*/
private void restartSuggestionsOnWordBeforeCursorIfAtEndOfWord(
final SettingsValues settingsValues,
// TODO: remove these two arguments
final KeyboardSwitcher keyboardSwitcher, final LatinIME.UIHandler handler) {
final CharSequence word = mConnection.getWordBeforeCursorIfAtEndOfWord(settingsValues);
if (null != word) {
final String wordString = word.toString();
restartSuggestionsOnWordBeforeCursor(settingsValues, wordString, keyboardSwitcher,
handler);
// TODO: Handle the case where the user manually moves the cursor and then backs up over
// a separator. In that case, the current log unit should not be uncommitted.
if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
ResearchLogger.getInstance().uncommitCurrentLogUnit(wordString,
true /* dumpCurrentLogUnit */);
}
}
}
/**
* Restart suggestions on the word passed as an argument, assuming it is before the cursor.
* @param settingsValues the current settings values.
*/
private void restartSuggestionsOnWordBeforeCursor(final SettingsValues settingsValues,
final String word,
// TODO: remove these two arguments
final KeyboardSwitcher keyboardSwitcher, final LatinIME.UIHandler handler) {
mWordComposer.setComposingWord(word,
// Previous word is the 2nd word before cursor because we are restarting on the
// 1st word before cursor.
getNthPreviousWordForSuggestion(settingsValues, 2 /* nthPreviousWord */),
keyboardSwitcher.getKeyboard());
final int length = word.length();
mConnection.deleteSurroundingText(length, 0);
mConnection.setComposingText(word, 1);
handler.postUpdateSuggestionStrip();
}
/**
* Reverts a previous commit with auto-correction.
*