Factorize some common code (A49)

Also add some comment to clarify what's happening inside those
methods

Change-Id: I5b9b1e105b3145f0b050f35d12c5b6ca6e4a4d8c
This commit is contained in:
Jean Chalard 2012-06-29 15:20:28 +09:00
parent 0726f466f7
commit 7ed22f1f72

View file

@ -1003,7 +1003,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// the composing word, reset the last composed word, tell the inputconnection about it. // the composing word, reset the last composed word, tell the inputconnection about it.
private void resetEntireInputState() { private void resetEntireInputState() {
resetComposingState(true /* alsoResetLastComposedWord */); resetComposingState(true /* alsoResetLastComposedWord */);
updateSuggestionsOrPredictions(false /* isPredictions */); clearSuggestions();
mConnection.finishComposingText(); mConnection.finishComposingText();
} }
@ -1695,7 +1695,20 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
} }
public void updateSuggestionsOrPredictions(final boolean isPredictions) { public void updateSuggestionsOrPredictions(final boolean isPredictions) {
if (isPredictions) { mHandler.cancelUpdateSuggestions();
mHandler.cancelUpdateBigramPredictions();
// Check if we have a suggestion engine attached.
if (mSuggest == null || !mCurrentSettings.isSuggestionsRequested(mDisplayOrientation)) {
if (mWordComposer.isComposingWord()) {
Log.w(TAG, "Called updateSuggestionsOrPredictions but suggestions were not "
+ "requested!");
mWordComposer.setAutoCorrection(mWordComposer.getTypedWord());
}
return;
}
if (isPredictions || !mWordComposer.isComposingWord()) {
updateBigramPredictions(); updateBigramPredictions();
} else { } else {
updateSuggestions(); updateSuggestions();
@ -1703,27 +1716,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
} }
private void updateSuggestions() { private void updateSuggestions() {
mHandler.cancelUpdateSuggestions();
mHandler.cancelUpdateBigramPredictions();
// Check if we have a suggestion engine attached.
if ((mSuggest == null || !mCurrentSettings.isSuggestionsRequested(mDisplayOrientation))) {
if (mWordComposer.isComposingWord()) {
Log.w(TAG, "Called updateSuggestions but suggestions were not requested!");
mWordComposer.setAutoCorrection(mWordComposer.getTypedWord());
}
return;
}
if (!mWordComposer.isComposingWord()) {
// We are never called with an empty word composer, but if because of a bug
// we are, what we should do here is just call updateBigramsPredictions. This will
// update the predictions if the "predict next word" option is on, or display
// punctuation signs if it's off.
updateBigramPredictions();
return;
}
// TODO: May need a better way of retrieving previous word // TODO: May need a better way of retrieving previous word
final CharSequence prevWord = mConnection.getPreviousWord(mCurrentSettings.mWordSeparators); final CharSequence prevWord = mConnection.getPreviousWord(mCurrentSettings.mWordSeparators);
final CharSequence typedWord = mWordComposer.getTypedWord(); final CharSequence typedWord = mWordComposer.getTypedWord();
@ -1741,6 +1733,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
if (suggestedWords.size() > 1 || typedWord.length() == 1 if (suggestedWords.size() > 1 || typedWord.length() == 1
|| !suggestedWords.mTypedWordValid || !suggestedWords.mTypedWordValid
|| mSuggestionsView.isShowingAddToDictionaryHint()) { || mSuggestionsView.isShowingAddToDictionaryHint()) {
// We know suggestedWords.size() > 1
showSuggestions(suggestedWords, typedWord); showSuggestions(suggestedWords, typedWord);
} else { } else {
SuggestedWords previousSuggestions = mSuggestionsView.getSuggestions(); SuggestedWords previousSuggestions = mSuggestionsView.getSuggestions();
@ -1757,11 +1750,15 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
false /* isPunctuationSuggestions */, false /* isPunctuationSuggestions */,
true /* isObsoleteSuggestions */, true /* isObsoleteSuggestions */,
false /* isPrediction */); false /* isPrediction */);
// getTypedWordAndPreviousSuggestions never returns an empty array, so we know we have
// at least one element here.
showSuggestions(obsoleteSuggestedWords, typedWord); showSuggestions(obsoleteSuggestedWords, typedWord);
} }
} }
public void showSuggestions(final SuggestedWords suggestedWords, final CharSequence typedWord) { private void showSuggestions(final SuggestedWords suggestedWords,
final CharSequence typedWord) {
// This method is only ever called by updateSuggestions or updateBigramPredictions.
final CharSequence autoCorrection; final CharSequence autoCorrection;
if (suggestedWords.size() > 0) { if (suggestedWords.size() > 0) {
if (suggestedWords.mWillAutoCorrect) { if (suggestedWords.mWillAutoCorrect) {
@ -1928,18 +1925,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
separatorCode, prevWord); separatorCode, prevWord);
} }
public void updateBigramPredictions() { private void updateBigramPredictions() {
mHandler.cancelUpdateSuggestions();
mHandler.cancelUpdateBigramPredictions();
if (mSuggest == null || !mCurrentSettings.isSuggestionsRequested(mDisplayOrientation)) {
if (mWordComposer.isComposingWord()) {
Log.w(TAG, "Called updateBigramPredictions but suggestions were not requested!");
mWordComposer.setAutoCorrection(mWordComposer.getTypedWord());
}
return;
}
if (!mCurrentSettings.mBigramPredictionEnabled) { if (!mCurrentSettings.mBigramPredictionEnabled) {
setPunctuationSuggestions(); setPunctuationSuggestions();
return; return;