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:
Jean Chalard 2012-03-23 21:35:56 +09:00
parent 3ee7d97587
commit 71f9d30b18
2 changed files with 9 additions and 14 deletions

View file

@ -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

View file

@ -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)) {