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

Commit 369e54cc authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Add Suggest initialization finish listener

Bug: 6860204
Change-Id: I1e4c03c99415cd9bdea5a8556ff4093c33f0f508
parent e095158c
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -82,7 +82,8 @@ import java.util.Locale;
 * Input method implementation for Qwerty'ish keyboard.
 */
public class LatinIME extends InputMethodService implements KeyboardActionListener,
        SuggestionStripView.Listener, TargetApplicationGetter.OnTargetApplicationKnownListener {
        SuggestionStripView.Listener, TargetApplicationGetter.OnTargetApplicationKnownListener,
        Suggest.SuggestInitializationListener {
    private static final String TAG = LatinIME.class.getSimpleName();
    private static final boolean TRACE = false;
    private static boolean DEBUG;
@@ -426,6 +427,12 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
        resetContactsDictionary(null == mSuggest ? null : mSuggest.getContactsDictionary());
    }

    @Override
    public void onUpdateMainDictionaryAvailability(boolean isMainDictionaryAvailable) {
        mIsMainDictionaryAvailable = isMainDictionaryAvailable;
        // TODO: Update gesture input enable state.
    }

    private void initSuggest() {
        final Locale subtypeLocale = mSubtypeSwitcher.getCurrentSubtypeLocale();
        final String localeStr = subtypeLocale.toString();
@@ -437,7 +444,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
        } else {
            oldContactsDictionary = null;
        }
        mSuggest = new Suggest(this, subtypeLocale);
        mSuggest = new Suggest(this /* Context */, subtypeLocale,
                this /* SuggestInitializationListener */);
        if (mCurrentSettings.mCorrectionEnabled) {
            mSuggest.setAutoCorrectionThreshold(mCurrentSettings.mAutoCorrectionThreshold);
        }
+16 −2
Original line number Diff line number Diff line
@@ -42,6 +42,10 @@ public class Suggest {
    // TODO: rename this to CORRECTION_ON
    public static final int CORRECTION_FULL = 1;

    public interface SuggestInitializationListener {
        public void onUpdateMainDictionaryAvailability(boolean isMainDictionaryAvailable);
    }

    private static final boolean DBG = LatinImeLogger.sDBG;

    private Dictionary mMainDictionary;
@@ -55,11 +59,14 @@ public class Suggest {
    private float mAutoCorrectionThreshold;

    // Locale used for upper- and title-casing words
    final private Locale mLocale;
    private final Locale mLocale;
    private final SuggestInitializationListener mListener;

    public Suggest(final Context context, final Locale locale) {
    public Suggest(final Context context, final Locale locale,
            final SuggestInitializationListener listener) {
        initAsynchronously(context, locale);
        mLocale = locale;
        mListener = listener;
    }

    /* package for test */ Suggest(final Context context, final File dictionary,
@@ -67,6 +74,7 @@ public class Suggest {
        final Dictionary mainDict = DictionaryFactory.createDictionaryForTest(context, dictionary,
                startOffset, length /* useFullEditDistance */, false, locale);
        mLocale = locale;
        mListener = null;
        mMainDictionary = mainDict;
        addOrReplaceDictionary(mDictionaries, Dictionary.TYPE_MAIN, mainDict);
        initWhitelistAndAutocorrectAndPool(context, locale);
@@ -98,6 +106,9 @@ public class Suggest {

    public void resetMainDict(final Context context, final Locale locale) {
        mMainDictionary = null;
        if (mListener != null) {
            mListener.onUpdateMainDictionaryAvailability(hasMainDictionary());
        }
        new Thread("InitializeBinaryDictionary") {
            @Override
            public void run() {
@@ -105,6 +116,9 @@ public class Suggest {
                        DictionaryFactory.createMainDictionaryFromManager(context, locale);
                addOrReplaceDictionary(mDictionaries, Dictionary.TYPE_MAIN, newMainDict);
                mMainDictionary = newMainDict;
                if (mListener != null) {
                    mListener.onUpdateMainDictionaryAvailability(hasMainDictionary());
                }
            }
        }.start();
    }