[IL114] Move a method to InputLogic

Bug: 8636060
Change-Id: I0d8f93985ddc6e93ce9af0d92a8056620351a498
main
Jean Chalard 2014-02-26 16:32:40 +09:00
parent 5d8f6660bf
commit e110018e2a
2 changed files with 31 additions and 25 deletions

View File

@ -1443,28 +1443,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
sequenceNumber, callback); sequenceNumber, callback);
} }
// TODO[IL]: Move this to InputLogic
public SuggestedWords maybeRetrieveOlderSuggestions(final String typedWord,
final SuggestedWords suggestedWords, final SuggestedWords previousSuggestedWords) {
// TODO: consolidate this into getSuggestedWords
// We update the suggestion strip only when we have some suggestions to show, i.e. when
// the suggestion count is > 1; else, we leave the old suggestions, with the typed word
// replaced with the new one. However, when the length of the typed word is 1 or 0 (after
// a deletion typically), we do want to remove the old suggestions.
if (suggestedWords.size() > 1 || typedWord.length() <= 1) {
return suggestedWords;
} else {
final SuggestedWords oldSuggestedWords =
previousSuggestedWords.isPunctuationSuggestions() ? SuggestedWords.EMPTY
: previousSuggestedWords;
final ArrayList<SuggestedWords.SuggestedWordInfo> typedWordAndPreviousSuggestions =
SuggestedWords.getTypedWordAndPreviousSuggestions(typedWord, oldSuggestedWords);
return new SuggestedWords(typedWordAndPreviousSuggestions, null /* rawSuggestions */,
false /* typedWordValid */, false /* hasAutoCorrectionCandidate */,
true /* isObsoleteSuggestions */, false /* isPrediction */);
}
}
@Override @Override
public void showSuggestionStrip(final SuggestedWords sourceSuggestedWords) { public void showSuggestionStrip(final SuggestedWords sourceSuggestedWords) {
final SuggestedWords suggestedWords = final SuggestedWords suggestedWords =

View File

@ -1229,9 +1229,8 @@ public final class InputLogic {
@Override @Override
public void onGetSuggestedWords(final SuggestedWords suggestedWords) { public void onGetSuggestedWords(final SuggestedWords suggestedWords) {
final SuggestedWords suggestedWordsWithMaybeOlderSuggestions = final SuggestedWords suggestedWordsWithMaybeOlderSuggestions =
mLatinIME.maybeRetrieveOlderSuggestions( maybeRetrieveOlderSuggestions(mWordComposer.getTypedWord(),
mWordComposer.getTypedWord(), suggestedWords, suggestedWords, mSuggestedWords);
mSuggestedWords);
holder.set(suggestedWordsWithMaybeOlderSuggestions); holder.set(suggestedWordsWithMaybeOlderSuggestions);
} }
} }
@ -1656,6 +1655,35 @@ public final class InputLogic {
} }
} }
/**
* Given a typed word and computed suggested words, return an object that may or may not
* contain older suggestions according to the contents of the current suggestions.
* @param typedWord The typed word as a string.
* @param suggestedWords The computed suggested words for this typed word.
* @param previousSuggestedWords The previous suggested words.
* @return suggestions possibly enriched with older suggestions.
*/
private SuggestedWords maybeRetrieveOlderSuggestions(final String typedWord,
final SuggestedWords suggestedWords, final SuggestedWords previousSuggestedWords) {
// TODO: consolidate this into performUpdateSuggestionStripSync?
// We update the suggestion strip only when we have some suggestions to show, i.e. when
// the suggestion count is > 1; else, we leave the old suggestions, with the typed word
// replaced with the new one. However, when the length of the typed word is 1 or 0 (after
// a deletion typically), we do want to remove the old suggestions.
if (suggestedWords.size() > 1 || typedWord.length() <= 1) {
return suggestedWords;
} else {
final SuggestedWords oldSuggestedWords =
previousSuggestedWords.isPunctuationSuggestions() ? SuggestedWords.EMPTY
: previousSuggestedWords;
final ArrayList<SuggestedWords.SuggestedWordInfo> typedWordAndPreviousSuggestions =
SuggestedWords.getTypedWordAndPreviousSuggestions(typedWord, oldSuggestedWords);
return new SuggestedWords(typedWordAndPreviousSuggestions, null /* rawSuggestions */,
false /* typedWordValid */, false /* hasAutoCorrectionCandidate */,
true /* isObsoleteSuggestions */, false /* isPrediction */);
}
}
/** /**
* Gets a chunk of text with or the auto-correction indicator underline span as appropriate. * Gets a chunk of text with or the auto-correction indicator underline span as appropriate.
* *