Correct a shaky processing and move it to a better place
The old code would remove caps from the first letter if auto-capsed but that makes very little sense when the word is camel-cased. Also, it would not correctly handle surrogate pairs, and would require a direct reference to LatinIME and a specific method to do the processing in an unexpected place. Change-Id: I416d6a805242788a2473f007ca7452c9fe3f5205
This commit is contained in:
parent
3ee7d97587
commit
71f9d30b18
2 changed files with 9 additions and 14 deletions
|
@ -528,7 +528,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
|
||||||
resetContactsDictionary(oldContactsDictionary);
|
resetContactsDictionary(oldContactsDictionary);
|
||||||
|
|
||||||
mUserHistoryDictionary
|
mUserHistoryDictionary
|
||||||
= new UserHistoryDictionary(this, this, localeStr, Suggest.DIC_USER_HISTORY);
|
= new UserHistoryDictionary(this, localeStr, Suggest.DIC_USER_HISTORY);
|
||||||
mSuggest.setUserHistoryDictionary(mUserHistoryDictionary);
|
mSuggest.setUserHistoryDictionary(mUserHistoryDictionary);
|
||||||
|
|
||||||
LocaleUtils.setSystemLocale(res, savedLocale);
|
LocaleUtils.setSystemLocale(res, savedLocale);
|
||||||
|
@ -2012,8 +2012,14 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
|
||||||
} else {
|
} else {
|
||||||
prevWord = null;
|
prevWord = null;
|
||||||
}
|
}
|
||||||
|
final String secondWord;
|
||||||
|
if (mWordComposer.isAutoCapitalized() && !mWordComposer.isMostlyCaps()) {
|
||||||
|
secondWord = suggestion.toString().toLowerCase(mSubtypeSwitcher.getInputLocale());
|
||||||
|
} else {
|
||||||
|
secondWord = suggestion.toString();
|
||||||
|
}
|
||||||
mUserHistoryDictionary.addToUserHistory(null == prevWord ? null : prevWord.toString(),
|
mUserHistoryDictionary.addToUserHistory(null == prevWord ? null : prevWord.toString(),
|
||||||
suggestion.toString());
|
secondWord);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2254,10 +2260,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
|
||||||
mFeedbackManager.vibrate(mKeyboardSwitcher.getKeyboardView());
|
mFeedbackManager.vibrate(mKeyboardSwitcher.getKeyboardView());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isAutoCapitalized() {
|
|
||||||
return mWordComposer.isAutoCapitalized();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateCorrectionMode() {
|
private void updateCorrectionMode() {
|
||||||
// TODO: cleanup messy flags
|
// TODO: cleanup messy flags
|
||||||
final boolean shouldAutoCorrect = mSettingsValues.mAutoCorrectEnabled
|
final boolean shouldAutoCorrect = mSettingsValues.mAutoCorrectEnabled
|
||||||
|
|
|
@ -75,8 +75,6 @@ public class UserHistoryDictionary extends ExpandableDictionary {
|
||||||
private static final String FREQ_COLUMN_PAIR_ID = "pair_id";
|
private static final String FREQ_COLUMN_PAIR_ID = "pair_id";
|
||||||
private static final String FREQ_COLUMN_FREQUENCY = "freq";
|
private static final String FREQ_COLUMN_FREQUENCY = "freq";
|
||||||
|
|
||||||
private final LatinIME mIme;
|
|
||||||
|
|
||||||
/** Locale for which this auto dictionary is storing words */
|
/** Locale for which this auto dictionary is storing words */
|
||||||
private String mLocale;
|
private String mLocale;
|
||||||
|
|
||||||
|
@ -139,9 +137,8 @@ public class UserHistoryDictionary extends ExpandableDictionary {
|
||||||
sDeleteHistoryBigrams = deleteHistoryBigram;
|
sDeleteHistoryBigrams = deleteHistoryBigram;
|
||||||
}
|
}
|
||||||
|
|
||||||
public UserHistoryDictionary(Context context, LatinIME ime, String locale, int dicTypeId) {
|
public UserHistoryDictionary(final Context context, final String locale, final int dicTypeId) {
|
||||||
super(context, dicTypeId);
|
super(context, dicTypeId);
|
||||||
mIme = ime;
|
|
||||||
mLocale = locale;
|
mLocale = locale;
|
||||||
if (sOpenHelper == null) {
|
if (sOpenHelper == null) {
|
||||||
sOpenHelper = new DatabaseHelper(getContext());
|
sOpenHelper = new DatabaseHelper(getContext());
|
||||||
|
@ -179,10 +176,6 @@ public class UserHistoryDictionary extends ExpandableDictionary {
|
||||||
* The second word may not be null (a NullPointerException would be thrown).
|
* The second word may not be null (a NullPointerException would be thrown).
|
||||||
*/
|
*/
|
||||||
public int addToUserHistory(final String word1, String word2) {
|
public int addToUserHistory(final String word1, String word2) {
|
||||||
// remove caps if second word is autocapitalized
|
|
||||||
if (mIme != null && mIme.isAutoCapitalized()) {
|
|
||||||
word2 = Character.toLowerCase(word2.charAt(0)) + word2.substring(1);
|
|
||||||
}
|
|
||||||
super.addWord(word2, FREQUENCY_FOR_TYPED);
|
super.addWord(word2, FREQUENCY_FOR_TYPED);
|
||||||
// Do not insert a word as a bigram of itself
|
// Do not insert a word as a bigram of itself
|
||||||
if (word2.equals(word1)) {
|
if (word2.equals(word1)) {
|
||||||
|
|
Loading…
Reference in a new issue