From 66b42a1c2d38813be104a7f0435ec6e6ec1c6e65 Mon Sep 17 00:00:00 2001 From: satok <satok@google.com> Date: Mon, 6 Sep 2010 19:18:38 +0900 Subject: [PATCH] Add shared preference for re-correction Change-Id: Ie5b2e0d2f9739dd33524c2688e172e77aac1f243 --- java/res/values/bools.xml | 1 + java/res/values/strings.xml | 4 ++ java/res/xml/prefs.xml | 7 ++++ .../android/inputmethod/latin/LatinIME.java | 38 +++++++++++-------- 4 files changed, 35 insertions(+), 15 deletions(-) diff --git a/java/res/values/bools.xml b/java/res/values/bools.xml index f5f2c3d0e..1f8051bfd 100644 --- a/java/res/values/bools.xml +++ b/java/res/values/bools.xml @@ -28,4 +28,5 @@ <bool name="config_swipeDisambiguation">true</bool> <!-- Whether or not Popup on key press is enabled by default --> <bool name="default_popup_preview">true</bool> + <bool name="default_recorrection_enabled">true</bool> </resources> diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml index 7b760f002..456151b62 100644 --- a/java/res/values/strings.xml +++ b/java/res/values/strings.xml @@ -339,6 +339,10 @@ <string name="prefs_enable_log">Enable user feedback</string> <!-- Description for enabling to send user statistics to Google. --> <string name="prefs_description_log">Help improve this input method editor by automatically sending usage statistics and crash reports to Google.</string> + <!-- Preferences item for enabling to re-correct suggestions . --> + <string name="prefs_enable_recorrection">Tap to re-correction</string> + <!-- The summary for the preferences item for enabling to re-correct suggestions . --> + <string name="prefs_enable_recorrection_summary">You can re-correct words by tapping words you have typed</string> <!-- Description for keyboard theme switcher --> <string name="keyboard_layout">Keyboard Theme</string> diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml index b4d2d903d..762ada00c 100644 --- a/java/res/xml/prefs.xml +++ b/java/res/xml/prefs.xml @@ -37,6 +37,13 @@ android:defaultValue="@bool/default_popup_preview" /> + <CheckBoxPreference + android:key="recorrection_enabled" + android:title="@string/prefs_enable_recorrection" + android:persistent="true" + android:defaultValue="@bool/default_recorrection_enabled" + /> + <CheckBoxPreference android:key="auto_cap" android:title="@string/auto_cap" diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index 2cff232a6..e5c6a54ce 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -127,6 +127,7 @@ public class LatinIME extends InputMethodService public static final String PREF_SELECTED_LANGUAGES = "selected_languages"; public static final String PREF_INPUT_LANGUAGE = "input_language"; + private static final String PREF_RECORRECTION_ENABLED = "recorrection_enabled"; private static final int MSG_UPDATE_SUGGESTIONS = 0; private static final int MSG_START_TUTORIAL = 1; @@ -193,6 +194,7 @@ public class LatinIME extends InputMethodService private boolean mAutoSpace; private boolean mJustAddedAutoSpace; private boolean mAutoCorrectEnabled; + private boolean mReCorrectionEnabled; // Bigram Suggestion is disabled in this version. private final boolean mBigramSuggestionEnabled = false; private boolean mAutoCorrectOn; @@ -361,6 +363,8 @@ public class LatinIME extends InputMethodService if (inputLanguage == null) { inputLanguage = conf.locale.toString(); } + mReCorrectionEnabled = prefs.getBoolean(PREF_RECORRECTION_ENABLED, + getResources().getBoolean(R.bool.default_recorrection_enabled)); LatinIMEUtil.GCUtils.getInstance().reset(); boolean tryGC = true; @@ -769,21 +773,22 @@ public class LatinIME extends InputMethodService mLastSelectionStart = newSelStart; mLastSelectionEnd = newSelEnd; - - // Don't look for corrections if the keyboard is not visible - if (mKeyboardSwitcher != null && mKeyboardSwitcher.getInputView() != null - && mKeyboardSwitcher.getInputView().isShown()) { - // Check if we should go in or out of correction mode. - if (isPredictionOn() - && mJustRevertedSeparator == null - && (candidatesStart == candidatesEnd || newSelStart != oldSelStart - || TextEntryState.isCorrecting()) - && (newSelStart < newSelEnd - 1 || (!mPredicting)) - && !mVoiceInputHighlighted) { - if (isCursorTouchingWord() || mLastSelectionStart < mLastSelectionEnd) { - postUpdateOldSuggestions(); - } else { - abortCorrection(false); + if (mReCorrectionEnabled) { + // Don't look for corrections if the keyboard is not visible + if (mKeyboardSwitcher != null && mKeyboardSwitcher.getInputView() != null + && mKeyboardSwitcher.getInputView().isShown()) { + // Check if we should go in or out of correction mode. + if (isPredictionOn() + && mJustRevertedSeparator == null + && (candidatesStart == candidatesEnd || newSelStart != oldSelStart + || TextEntryState.isCorrecting()) + && (newSelStart < newSelEnd - 1 || (!mPredicting)) + && !mVoiceInputHighlighted) { + if (isCursorTouchingWord() || mLastSelectionStart < mLastSelectionEnd) { + postUpdateOldSuggestions(); + } else { + abortCorrection(false); + } } } } @@ -2181,6 +2186,9 @@ public class LatinIME extends InputMethodService if (PREF_SELECTED_LANGUAGES.equals(key)) { mLanguageSwitcher.loadLocales(sharedPreferences); mRefreshKeyboardRequired = true; + } else if (PREF_RECORRECTION_ENABLED.equals(key)) { + mReCorrectionEnabled = sharedPreferences.getBoolean(PREF_RECORRECTION_ENABLED, + getResources().getBoolean(R.bool.default_recorrection_enabled)); } }