Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7ed22f1f authored by Jean Chalard's avatar Jean Chalard
Browse files

Factorize some common code (A49)

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

Change-Id: I5b9b1e105b3145f0b050f35d12c5b6ca6e4a4d8c
parent 0726f466
Loading
Loading
Loading
Loading
+16 −30
Original line number Diff line number Diff line
@@ -1003,7 +1003,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
    // the composing word, reset the last composed word, tell the inputconnection about it.
    private void resetEntireInputState() {
        resetComposingState(true /* alsoResetLastComposedWord */);
        updateSuggestionsOrPredictions(false /* isPredictions */);
        clearSuggestions();
        mConnection.finishComposingText();
    }

@@ -1695,35 +1695,27 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
    }

    public void updateSuggestionsOrPredictions(final boolean isPredictions) {
        if (isPredictions) {
            updateBigramPredictions();
        } else {
            updateSuggestions();
        }
    }

    private void updateSuggestions() {
        mHandler.cancelUpdateSuggestions();
        mHandler.cancelUpdateBigramPredictions();

        // Check if we have a suggestion engine attached.
        if ((mSuggest == null || !mCurrentSettings.isSuggestionsRequested(mDisplayOrientation))) {
        if (mSuggest == null || !mCurrentSettings.isSuggestionsRequested(mDisplayOrientation)) {
            if (mWordComposer.isComposingWord()) {
                Log.w(TAG, "Called updateSuggestions but suggestions were not requested!");
                Log.w(TAG, "Called updateSuggestionsOrPredictions 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.
        if (isPredictions || !mWordComposer.isComposingWord()) {
            updateBigramPredictions();
            return;
        } else {
            updateSuggestions();
        }
    }

    private void updateSuggestions() {
        // TODO: May need a better way of retrieving previous word
        final CharSequence prevWord = mConnection.getPreviousWord(mCurrentSettings.mWordSeparators);
        final CharSequence typedWord = mWordComposer.getTypedWord();
@@ -1741,6 +1733,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
        if (suggestedWords.size() > 1 || typedWord.length() == 1
                || !suggestedWords.mTypedWordValid
                || mSuggestionsView.isShowingAddToDictionaryHint()) {
            // We know suggestedWords.size() > 1
            showSuggestions(suggestedWords, typedWord);
        } else {
            SuggestedWords previousSuggestions = mSuggestionsView.getSuggestions();
@@ -1757,11 +1750,15 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
                            false /* isPunctuationSuggestions */,
                            true /* isObsoleteSuggestions */,
                            false /* isPrediction */);
            // getTypedWordAndPreviousSuggestions never returns an empty array, so we know we have
            // at least one element here.
            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;
        if (suggestedWords.size() > 0) {
            if (suggestedWords.mWillAutoCorrect) {
@@ -1928,18 +1925,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
                separatorCode, prevWord);
    }

    public 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;
        }

    private void updateBigramPredictions() {
        if (!mCurrentSettings.mBigramPredictionEnabled) {
            setPunctuationSuggestions();
            return;