Create a way to pass the proximity info to the dictionary
This is a preparative change for inserting the spell checker. Change-Id: Ie441879cac4f67078ec27a95f1fcbbf3ef373df7main
parent
3889462439
commit
043f784198
|
@ -57,6 +57,7 @@ public class RecorrectionSuggestionEntries {
|
||||||
|
|
||||||
private static SuggestedWords.Builder getTypedSuggestions(
|
private static SuggestedWords.Builder getTypedSuggestions(
|
||||||
Suggest suggest, KeyboardSwitcher keyboardSwitcher, WordComposer word) {
|
Suggest suggest, KeyboardSwitcher keyboardSwitcher, WordComposer word) {
|
||||||
return suggest.getSuggestedWordBuilder(keyboardSwitcher.getKeyboardView(), word, null);
|
return suggest.getSuggestedWordBuilder(keyboardSwitcher.getKeyboardView(), word, null,
|
||||||
|
keyboardSwitcher.getLatinKeyboard().getProximityInfo());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -149,8 +149,8 @@ public class Keyboard {
|
||||||
mMostCommonKeyWidth, mKeys);
|
mMostCommonKeyWidth, mKeys);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getProximityInfo() {
|
public ProximityInfo getProximityInfo() {
|
||||||
return mProximityInfo.getNativeProximityInfo();
|
return mProximityInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasShiftLockKey() {
|
public boolean hasShiftLockKey() {
|
||||||
|
|
|
@ -19,6 +19,7 @@ package com.android.inputmethod.keyboard;
|
||||||
import com.android.inputmethod.latin.Utils;
|
import com.android.inputmethod.latin.Utils;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ProximityInfo {
|
public class ProximityInfo {
|
||||||
|
@ -54,6 +55,10 @@ public class ProximityInfo {
|
||||||
computeNearestNeighbors(keyWidth, keys);
|
computeNearestNeighbors(keyWidth, keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ProximityInfo getDummyProximityInfo() {
|
||||||
|
return new ProximityInfo(1, 1, 1, 1, 1, Collections.<Key>emptyList());
|
||||||
|
}
|
||||||
|
|
||||||
private int mNativeProximityInfo;
|
private int mNativeProximityInfo;
|
||||||
static {
|
static {
|
||||||
Utils.loadNativeLibrary();
|
Utils.loadNativeLibrary();
|
||||||
|
|
|
@ -156,10 +156,11 @@ public class BinaryDictionary extends Dictionary {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// proximityInfo may not be null.
|
||||||
@Override
|
@Override
|
||||||
public void getWords(final WordComposer codes, final WordCallback callback) {
|
public void getWords(final WordComposer codes, final WordCallback callback,
|
||||||
final int count = getSuggestions(codes, mKeyboardSwitcher.getLatinKeyboard(),
|
final ProximityInfo proximityInfo) {
|
||||||
mOutputChars, mScores);
|
final int count = getSuggestions(codes, proximityInfo, mOutputChars, mScores);
|
||||||
|
|
||||||
for (int j = 0; j < count; ++j) {
|
for (int j = 0; j < count; ++j) {
|
||||||
if (mScores[j] < 1) break;
|
if (mScores[j] < 1) break;
|
||||||
|
@ -179,8 +180,9 @@ public class BinaryDictionary extends Dictionary {
|
||||||
return mNativeDict != 0;
|
return mNativeDict != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* package for test */ int getSuggestions(final WordComposer codes, final Keyboard keyboard,
|
// proximityInfo may not be null.
|
||||||
char[] outputChars, int[] scores) {
|
/* package for test */ int getSuggestions(final WordComposer codes,
|
||||||
|
final ProximityInfo proximityInfo, char[] outputChars, int[] scores) {
|
||||||
if (!isValidDictionary()) return -1;
|
if (!isValidDictionary()) return -1;
|
||||||
|
|
||||||
final int codesSize = codes.size();
|
final int codesSize = codes.size();
|
||||||
|
@ -196,9 +198,8 @@ public class BinaryDictionary extends Dictionary {
|
||||||
Arrays.fill(outputChars, (char) 0);
|
Arrays.fill(outputChars, (char) 0);
|
||||||
Arrays.fill(scores, 0);
|
Arrays.fill(scores, 0);
|
||||||
|
|
||||||
final int proximityInfo = keyboard == null ? 0 : keyboard.getProximityInfo();
|
|
||||||
return getSuggestionsNative(
|
return getSuggestionsNative(
|
||||||
mNativeDict, proximityInfo,
|
mNativeDict, proximityInfo.getNativeProximityInfo(),
|
||||||
codes.getXCoordinates(), codes.getYCoordinates(), mInputCodes, codesSize,
|
codes.getXCoordinates(), codes.getYCoordinates(), mInputCodes, codesSize,
|
||||||
mFlags, outputChars, scores);
|
mFlags, outputChars, scores);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2008 The Android Open Source Project
|
* Copyright (C) 2008 The Android Open Source Project
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||||
* use this file except in compliance with the License. You may obtain a copy of
|
* use this file except in compliance with the License. You may obtain a copy of
|
||||||
* the License at
|
* the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
@ -16,6 +16,8 @@
|
||||||
|
|
||||||
package com.android.inputmethod.latin;
|
package com.android.inputmethod.latin;
|
||||||
|
|
||||||
|
import com.android.inputmethod.keyboard.ProximityInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract base class for a dictionary that can do a fuzzy search for words based on a set of key
|
* Abstract base class for a dictionary that can do a fuzzy search for words based on a set of key
|
||||||
* strokes.
|
* strokes.
|
||||||
|
@ -25,7 +27,7 @@ public abstract class Dictionary {
|
||||||
* Whether or not to replicate the typed word in the suggested list, even if it's valid.
|
* Whether or not to replicate the typed word in the suggested list, even if it's valid.
|
||||||
*/
|
*/
|
||||||
protected static final boolean INCLUDE_TYPED_WORD_IF_VALID = false;
|
protected static final boolean INCLUDE_TYPED_WORD_IF_VALID = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The weight to give to a word if it's length is the same as the number of typed characters.
|
* The weight to give to a word if it's length is the same as the number of typed characters.
|
||||||
*/
|
*/
|
||||||
|
@ -57,13 +59,15 @@ public abstract class Dictionary {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Searches for words in the dictionary that match the characters in the composer. Matched
|
* Searches for words in the dictionary that match the characters in the composer. Matched
|
||||||
* words are added through the callback object.
|
* words are added through the callback object.
|
||||||
* @param composer the key sequence to match
|
* @param composer the key sequence to match
|
||||||
* @param callback the callback object to send matched words to as possible candidates
|
* @param callback the callback object to send matched words to as possible candidates
|
||||||
|
* @param proximityInfo the object for key proximity. May be ignored by some implementations.
|
||||||
* @see WordCallback#addWord(char[], int, int, int, int, DataType)
|
* @see WordCallback#addWord(char[], int, int, int, int, DataType)
|
||||||
*/
|
*/
|
||||||
abstract public void getWords(final WordComposer composer, final WordCallback callback);
|
abstract public void getWords(final WordComposer composer, final WordCallback callback,
|
||||||
|
final ProximityInfo proximityInfo);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Searches for pairs in the bigram dictionary that matches the previous word and all the
|
* Searches for pairs in the bigram dictionary that matches the previous word and all the
|
||||||
|
@ -83,7 +87,7 @@ public abstract class Dictionary {
|
||||||
* @return true if the word exists, false otherwise
|
* @return true if the word exists, false otherwise
|
||||||
*/
|
*/
|
||||||
abstract public boolean isValidWord(CharSequence word);
|
abstract public boolean isValidWord(CharSequence word);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compares the contents of the character array with the typed word and returns true if they
|
* Compares the contents of the character array with the typed word and returns true if they
|
||||||
* are the same.
|
* are the same.
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
|
|
||||||
package com.android.inputmethod.latin;
|
package com.android.inputmethod.latin;
|
||||||
|
|
||||||
|
import com.android.inputmethod.keyboard.ProximityInfo;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -47,9 +49,10 @@ public class DictionaryCollection extends Dictionary {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void getWords(final WordComposer composer, final WordCallback callback) {
|
public void getWords(final WordComposer composer, final WordCallback callback,
|
||||||
|
final ProximityInfo proximityInfo) {
|
||||||
for (final Dictionary dict : mDictionaries)
|
for (final Dictionary dict : mDictionaries)
|
||||||
dict.getWords(composer, callback);
|
dict.getWords(composer, callback, proximityInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -20,6 +20,7 @@ import android.content.Context;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
|
|
||||||
import com.android.inputmethod.keyboard.Keyboard;
|
import com.android.inputmethod.keyboard.Keyboard;
|
||||||
|
import com.android.inputmethod.keyboard.ProximityInfo;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
|
||||||
|
@ -193,7 +194,8 @@ public class ExpandableDictionary extends Dictionary {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void getWords(final WordComposer codes, final WordCallback callback) {
|
public void getWords(final WordComposer codes, final WordCallback callback,
|
||||||
|
final ProximityInfo proximityInfo) {
|
||||||
synchronized (mUpdatingLock) {
|
synchronized (mUpdatingLock) {
|
||||||
// If we need to update, start off a background task
|
// If we need to update, start off a background task
|
||||||
if (mRequiresReload) startDictionaryLoadingTaskLocked();
|
if (mRequiresReload) startDictionaryLoadingTaskLocked();
|
||||||
|
|
|
@ -1600,7 +1600,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
|
||||||
}
|
}
|
||||||
// getSuggestedWordBuilder handles gracefully a null value of prevWord
|
// getSuggestedWordBuilder handles gracefully a null value of prevWord
|
||||||
final SuggestedWords.Builder builder = mSuggest.getSuggestedWordBuilder(
|
final SuggestedWords.Builder builder = mSuggest.getSuggestedWordBuilder(
|
||||||
mKeyboardSwitcher.getKeyboardView(), wordComposer, prevWord);
|
mKeyboardSwitcher.getKeyboardView(), wordComposer, prevWord,
|
||||||
|
mKeyboardSwitcher.getLatinKeyboard().getProximityInfo());
|
||||||
|
|
||||||
boolean autoCorrectionAvailable = !mInputTypeNoAutoCorrect && mSuggest.hasAutoCorrection();
|
boolean autoCorrectionAvailable = !mInputTypeNoAutoCorrect && mSuggest.hasAutoCorrection();
|
||||||
final CharSequence typedWord = wordComposer.getTypedWord();
|
final CharSequence typedWord = wordComposer.getTypedWord();
|
||||||
|
@ -1825,7 +1826,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
|
||||||
final CharSequence prevWord = EditingUtils.getThisWord(getCurrentInputConnection(),
|
final CharSequence prevWord = EditingUtils.getThisWord(getCurrentInputConnection(),
|
||||||
mSettingsValues.mWordSeparators);
|
mSettingsValues.mWordSeparators);
|
||||||
SuggestedWords.Builder builder = mSuggest.getSuggestedWordBuilder(
|
SuggestedWords.Builder builder = mSuggest.getSuggestedWordBuilder(
|
||||||
mKeyboardSwitcher.getKeyboardView(), sEmptyWordComposer, prevWord);
|
mKeyboardSwitcher.getKeyboardView(), sEmptyWordComposer, prevWord,
|
||||||
|
mKeyboardSwitcher.getLatinKeyboard().getProximityInfo());
|
||||||
|
|
||||||
if (builder.size() > 0) {
|
if (builder.size() > 0) {
|
||||||
// Explicitly supply an empty typed word (the no-second-arg version of
|
// Explicitly supply an empty typed word (the no-second-arg version of
|
||||||
|
|
|
@ -22,6 +22,8 @@ import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
|
import com.android.inputmethod.keyboard.ProximityInfo;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
@ -263,9 +265,10 @@ public class Suggest implements Dictionary.WordCallback {
|
||||||
* @param prevWordForBigram previous word (used only for bigram)
|
* @param prevWordForBigram previous word (used only for bigram)
|
||||||
* @return suggested words object.
|
* @return suggested words object.
|
||||||
*/
|
*/
|
||||||
public SuggestedWords getSuggestions(View view, WordComposer wordComposer,
|
public SuggestedWords getSuggestions(final View view, final WordComposer wordComposer,
|
||||||
CharSequence prevWordForBigram) {
|
final CharSequence prevWordForBigram, final ProximityInfo proximityInfo) {
|
||||||
return getSuggestedWordBuilder(view, wordComposer, prevWordForBigram).build();
|
return getSuggestedWordBuilder(view, wordComposer, prevWordForBigram,
|
||||||
|
proximityInfo).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private CharSequence capitalizeWord(boolean all, boolean first, CharSequence word) {
|
private CharSequence capitalizeWord(boolean all, boolean first, CharSequence word) {
|
||||||
|
@ -299,8 +302,9 @@ public class Suggest implements Dictionary.WordCallback {
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: cleanup dictionaries looking up and suggestions building with SuggestedWords.Builder
|
// TODO: cleanup dictionaries looking up and suggestions building with SuggestedWords.Builder
|
||||||
public SuggestedWords.Builder getSuggestedWordBuilder(View view, WordComposer wordComposer,
|
public SuggestedWords.Builder getSuggestedWordBuilder(final View view,
|
||||||
CharSequence prevWordForBigram) {
|
final WordComposer wordComposer, CharSequence prevWordForBigram,
|
||||||
|
final ProximityInfo proximityInfo) {
|
||||||
LatinImeLogger.onStartSuggestion(prevWordForBigram);
|
LatinImeLogger.onStartSuggestion(prevWordForBigram);
|
||||||
mAutoCorrection.init();
|
mAutoCorrection.init();
|
||||||
mIsFirstCharCapitalized = wordComposer.isFirstCharCapitalized();
|
mIsFirstCharCapitalized = wordComposer.isFirstCharCapitalized();
|
||||||
|
@ -365,7 +369,7 @@ public class Suggest implements Dictionary.WordCallback {
|
||||||
if (key.equals(DICT_KEY_USER_UNIGRAM) || key.equals(DICT_KEY_WHITELIST))
|
if (key.equals(DICT_KEY_USER_UNIGRAM) || key.equals(DICT_KEY_WHITELIST))
|
||||||
continue;
|
continue;
|
||||||
final Dictionary dictionary = mUnigramDictionaries.get(key);
|
final Dictionary dictionary = mUnigramDictionaries.get(key);
|
||||||
dictionary.getWords(wordComposer, this);
|
dictionary.getWords(wordComposer, this, proximityInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CharSequence autoText = null;
|
CharSequence autoText = null;
|
||||||
|
|
|
@ -26,6 +26,8 @@ import android.net.Uri;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
import android.provider.UserDictionary.Words;
|
import android.provider.UserDictionary.Words;
|
||||||
|
|
||||||
|
import com.android.inputmethod.keyboard.ProximityInfo;
|
||||||
|
|
||||||
public class UserDictionary extends ExpandableDictionary {
|
public class UserDictionary extends ExpandableDictionary {
|
||||||
|
|
||||||
private static final String[] PROJECTION_QUERY = {
|
private static final String[] PROJECTION_QUERY = {
|
||||||
|
@ -150,8 +152,9 @@ public class UserDictionary extends ExpandableDictionary {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void getWords(final WordComposer codes, final WordCallback callback) {
|
public synchronized void getWords(final WordComposer codes, final WordCallback callback,
|
||||||
super.getWords(codes, callback);
|
final ProximityInfo proximityInfo) {
|
||||||
|
super.getWords(codes, callback, proximityInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -21,6 +21,8 @@ import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
|
|
||||||
|
import com.android.inputmethod.keyboard.ProximityInfo;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
public class WhitelistDictionary extends Dictionary {
|
public class WhitelistDictionary extends Dictionary {
|
||||||
|
@ -89,7 +91,8 @@ public class WhitelistDictionary extends Dictionary {
|
||||||
|
|
||||||
// Not used for WhitelistDictionary. We use getWhitelistedWord() in Suggest.java instead
|
// Not used for WhitelistDictionary. We use getWhitelistedWord() in Suggest.java instead
|
||||||
@Override
|
@Override
|
||||||
public void getWords(WordComposer composer, WordCallback callback) {
|
public void getWords(final WordComposer composer, final WordCallback callback,
|
||||||
|
final ProximityInfo proximityInfo) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -20,6 +20,7 @@ import android.content.Context;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
|
|
||||||
import com.android.inputmethod.compat.ArraysCompatUtils;
|
import com.android.inputmethod.compat.ArraysCompatUtils;
|
||||||
|
import com.android.inputmethod.keyboard.ProximityInfo;
|
||||||
import com.android.inputmethod.latin.Dictionary;
|
import com.android.inputmethod.latin.Dictionary;
|
||||||
import com.android.inputmethod.latin.Dictionary.DataType;
|
import com.android.inputmethod.latin.Dictionary.DataType;
|
||||||
import com.android.inputmethod.latin.Dictionary.WordCallback;
|
import com.android.inputmethod.latin.Dictionary.WordCallback;
|
||||||
|
@ -109,7 +110,7 @@ public class SpellChecker {
|
||||||
composer.add(character, new int[] { character },
|
composer.add(character, new int[] { character },
|
||||||
WordComposer.NOT_A_COORDINATE, WordComposer.NOT_A_COORDINATE);
|
WordComposer.NOT_A_COORDINATE, WordComposer.NOT_A_COORDINATE);
|
||||||
}
|
}
|
||||||
mDictionary.getWords(composer, suggestionsGatherer);
|
mDictionary.getWords(composer, suggestionsGatherer, ProximityInfo.getDummyProximityInfo());
|
||||||
return suggestionsGatherer.getGatheredSuggestions();
|
return suggestionsGatherer.getGatheredSuggestions();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ import java.io.File;
|
||||||
|
|
||||||
public class SuggestHelper {
|
public class SuggestHelper {
|
||||||
protected final Suggest mSuggest;
|
protected final Suggest mSuggest;
|
||||||
private final LatinKeyboard mKeyboard;
|
protected final LatinKeyboard mKeyboard;
|
||||||
private final KeyDetector mKeyDetector;
|
private final KeyDetector mKeyDetector;
|
||||||
|
|
||||||
public SuggestHelper(Context context, int dictionaryId, KeyboardId keyboardId) {
|
public SuggestHelper(Context context, int dictionaryId, KeyboardId keyboardId) {
|
||||||
|
@ -94,19 +94,22 @@ public class SuggestHelper {
|
||||||
|
|
||||||
// TODO: This may be slow, but is OK for test so far.
|
// TODO: This may be slow, but is OK for test so far.
|
||||||
public SuggestedWords getSuggestions(CharSequence typed) {
|
public SuggestedWords getSuggestions(CharSequence typed) {
|
||||||
return mSuggest.getSuggestions(null, createWordComposer(typed), null);
|
return mSuggest.getSuggestions(null, createWordComposer(typed), null,
|
||||||
|
mKeyboard.getProximityInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
public CharSequence getFirstSuggestion(CharSequence typed) {
|
public CharSequence getFirstSuggestion(CharSequence typed) {
|
||||||
WordComposer word = createWordComposer(typed);
|
WordComposer word = createWordComposer(typed);
|
||||||
SuggestedWords suggestions = mSuggest.getSuggestions(null, word, null);
|
SuggestedWords suggestions = mSuggest.getSuggestions(null, word, null,
|
||||||
|
mKeyboard.getProximityInfo());
|
||||||
// Note that suggestions.getWord(0) is the word user typed.
|
// Note that suggestions.getWord(0) is the word user typed.
|
||||||
return suggestions.size() > 1 ? suggestions.getWord(1) : null;
|
return suggestions.size() > 1 ? suggestions.getWord(1) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CharSequence getAutoCorrection(CharSequence typed) {
|
public CharSequence getAutoCorrection(CharSequence typed) {
|
||||||
WordComposer word = createWordComposer(typed);
|
WordComposer word = createWordComposer(typed);
|
||||||
SuggestedWords suggestions = mSuggest.getSuggestions(null, word, null);
|
SuggestedWords suggestions = mSuggest.getSuggestions(null, word, null,
|
||||||
|
mKeyboard.getProximityInfo());
|
||||||
// Note that suggestions.getWord(0) is the word user typed.
|
// Note that suggestions.getWord(0) is the word user typed.
|
||||||
return (suggestions.size() > 1 && mSuggest.hasAutoCorrection())
|
return (suggestions.size() > 1 && mSuggest.hasAutoCorrection())
|
||||||
? suggestions.getWord(1) : null;
|
? suggestions.getWord(1) : null;
|
||||||
|
@ -114,7 +117,8 @@ public class SuggestHelper {
|
||||||
|
|
||||||
public int getSuggestIndex(CharSequence typed, CharSequence expected) {
|
public int getSuggestIndex(CharSequence typed, CharSequence expected) {
|
||||||
WordComposer word = createWordComposer(typed);
|
WordComposer word = createWordComposer(typed);
|
||||||
SuggestedWords suggestions = mSuggest.getSuggestions(null, word, null);
|
SuggestedWords suggestions = mSuggest.getSuggestions(null, word, null,
|
||||||
|
mKeyboard.getProximityInfo());
|
||||||
// Note that suggestions.getWord(0) is the word user typed.
|
// Note that suggestions.getWord(0) is the word user typed.
|
||||||
for (int i = 1; i < suggestions.size(); i++) {
|
for (int i = 1; i < suggestions.size(); i++) {
|
||||||
if (TextUtils.equals(suggestions.getWord(i), expected))
|
if (TextUtils.equals(suggestions.getWord(i), expected))
|
||||||
|
@ -126,21 +130,23 @@ public class SuggestHelper {
|
||||||
private void getBigramSuggestions(CharSequence previous, CharSequence typed) {
|
private void getBigramSuggestions(CharSequence previous, CharSequence typed) {
|
||||||
if (!TextUtils.isEmpty(previous) && (typed.length() > 1)) {
|
if (!TextUtils.isEmpty(previous) && (typed.length() > 1)) {
|
||||||
WordComposer firstChar = createWordComposer(Character.toString(typed.charAt(0)));
|
WordComposer firstChar = createWordComposer(Character.toString(typed.charAt(0)));
|
||||||
mSuggest.getSuggestions(null, firstChar, previous);
|
mSuggest.getSuggestions(null, firstChar, previous, mKeyboard.getProximityInfo());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public CharSequence getBigramFirstSuggestion(CharSequence previous, CharSequence typed) {
|
public CharSequence getBigramFirstSuggestion(CharSequence previous, CharSequence typed) {
|
||||||
WordComposer word = createWordComposer(typed);
|
WordComposer word = createWordComposer(typed);
|
||||||
getBigramSuggestions(previous, typed);
|
getBigramSuggestions(previous, typed);
|
||||||
SuggestedWords suggestions = mSuggest.getSuggestions(null, word, previous);
|
SuggestedWords suggestions = mSuggest.getSuggestions(null, word, previous,
|
||||||
|
mKeyboard.getProximityInfo());
|
||||||
return suggestions.size() > 1 ? suggestions.getWord(1) : null;
|
return suggestions.size() > 1 ? suggestions.getWord(1) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CharSequence getBigramAutoCorrection(CharSequence previous, CharSequence typed) {
|
public CharSequence getBigramAutoCorrection(CharSequence previous, CharSequence typed) {
|
||||||
WordComposer word = createWordComposer(typed);
|
WordComposer word = createWordComposer(typed);
|
||||||
getBigramSuggestions(previous, typed);
|
getBigramSuggestions(previous, typed);
|
||||||
SuggestedWords suggestions = mSuggest.getSuggestions(null, word, previous);
|
SuggestedWords suggestions = mSuggest.getSuggestions(null, word, previous,
|
||||||
|
mKeyboard.getProximityInfo());
|
||||||
return (suggestions.size() > 1 && mSuggest.hasAutoCorrection())
|
return (suggestions.size() > 1 && mSuggest.hasAutoCorrection())
|
||||||
? suggestions.getWord(1) : null;
|
? suggestions.getWord(1) : null;
|
||||||
}
|
}
|
||||||
|
@ -149,7 +155,8 @@ public class SuggestHelper {
|
||||||
CharSequence expected) {
|
CharSequence expected) {
|
||||||
WordComposer word = createWordComposer(typed);
|
WordComposer word = createWordComposer(typed);
|
||||||
getBigramSuggestions(previous, typed);
|
getBigramSuggestions(previous, typed);
|
||||||
SuggestedWords suggestions = mSuggest.getSuggestions(null, word, previous);
|
SuggestedWords suggestions = mSuggest.getSuggestions(null, word, previous,
|
||||||
|
mKeyboard.getProximityInfo());
|
||||||
for (int i = 1; i < suggestions.size(); i++) {
|
for (int i = 1; i < suggestions.size(); i++) {
|
||||||
if (TextUtils.equals(suggestions.getWord(i), expected))
|
if (TextUtils.equals(suggestions.getWord(i), expected))
|
||||||
return i;
|
return i;
|
||||||
|
|
|
@ -58,7 +58,7 @@ public class UserBigramSuggestHelper extends SuggestHelper {
|
||||||
flushUserBigrams();
|
flushUserBigrams();
|
||||||
if (!TextUtils.isEmpty(previous) && !TextUtils.isEmpty(Character.toString(typed))) {
|
if (!TextUtils.isEmpty(previous) && !TextUtils.isEmpty(Character.toString(typed))) {
|
||||||
WordComposer firstChar = createWordComposer(Character.toString(typed));
|
WordComposer firstChar = createWordComposer(Character.toString(typed));
|
||||||
mSuggest.getSuggestions(null, firstChar, previous);
|
mSuggest.getSuggestions(null, firstChar, previous, mKeyboard.getProximityInfo());
|
||||||
boolean reloading = mUserBigram.reloadDictionaryIfRequired();
|
boolean reloading = mUserBigram.reloadDictionaryIfRequired();
|
||||||
if (reloading) mUserBigram.waitForDictionaryLoading();
|
if (reloading) mUserBigram.waitForDictionaryLoading();
|
||||||
mUserBigram.getBigrams(firstChar, previous, mSuggest);
|
mUserBigram.getBigrams(firstChar, previous, mSuggest);
|
||||||
|
|
Loading…
Reference in New Issue