diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/CorrectionSettingsFragment.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/CorrectionSettingsFragment.java index 3ba15d1a..7a73457d 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/CorrectionSettingsFragment.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/CorrectionSettingsFragment.java @@ -16,7 +16,6 @@ package org.dslul.openboard.inputmethod.latin.settings; -import android.Manifest; import android.app.Activity; import android.content.Context; import android.content.Intent; @@ -25,12 +24,8 @@ import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.Bundle; import android.preference.Preference; -import android.preference.SwitchPreference; -import android.text.TextUtils; import org.dslul.openboard.inputmethod.latin.R; -import org.dslul.openboard.inputmethod.latin.permissions.PermissionsManager; -import org.dslul.openboard.inputmethod.latin.permissions.PermissionsUtil; import org.dslul.openboard.inputmethod.latin.userdictionary.UserDictionaryList; import org.dslul.openboard.inputmethod.latin.userdictionary.UserDictionarySettings; @@ -44,6 +39,7 @@ import java.util.TreeSet; * - Add-on dictionaries * - Block offensive words * - Auto-correction + * - Auto-correction confidence * - Show correction suggestions * - Personalized suggestions * - Suggest Contact names @@ -73,6 +69,18 @@ public final class CorrectionSettingsFragment extends SubScreenFragment if (ri == null) { overwriteUserDictionaryPreference(editPersonalDictionary); } + + refreshEnabledSettings(); + } + + @Override + public void onSharedPreferenceChanged(final SharedPreferences prefs, final String key) { + refreshEnabledSettings(); + } + + private void refreshEnabledSettings() { + setPreferenceEnabled(Settings.PREF_AUTO_CORRECTION_CONFIDENCE, + Settings.readAutoCorrectEnabled(getSharedPreferences(), getResources())); } private void overwriteUserDictionaryPreference(final Preference userDictionaryPreference) { diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java index 135c6cea..52647b44 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java @@ -65,10 +65,8 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang public static final String PREF_VOICE_INPUT_KEY = "pref_voice_input_key"; public static final String PREF_CLIPBOARD_CLIPBOARD_KEY = "pref_clipboard_clipboard_key"; public static final String PREF_EDIT_PERSONAL_DICTIONARY = "edit_personal_dictionary"; - // PREF_AUTO_CORRECTION_THRESHOLD_OBSOLETE is obsolete. Use PREF_AUTO_CORRECTION instead. - public static final String PREF_AUTO_CORRECTION_THRESHOLD_OBSOLETE = - "auto_correction_threshold"; public static final String PREF_AUTO_CORRECTION = "pref_key_auto_correction"; + public static final String PREF_AUTO_CORRECTION_CONFIDENCE = "pref_key_auto_correction_confidence"; // PREF_SHOW_SUGGESTIONS_SETTING_OBSOLETE is obsolete. Use PREF_SHOW_SUGGESTIONS instead. public static final String PREF_SHOW_SUGGESTIONS_SETTING_OBSOLETE = "show_suggestions_setting"; public static final String PREF_SHOW_SUGGESTIONS = "show_suggestions"; @@ -173,7 +171,6 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang mRes = context.getResources(); mPrefs = DeviceProtectedUtils.getSharedPreferences(context); mPrefs.registerOnSharedPreferenceChangeListener(this); - upgradeAutocorrectionSettings(mPrefs, mRes); } public void onDestroy() { @@ -247,6 +244,12 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang return prefs.getBoolean(PREF_AUTO_CORRECTION, true); } + public static String readAutoCorrectConfidence(final SharedPreferences prefs, + final Resources res) { + return prefs.getString(PREF_AUTO_CORRECTION_CONFIDENCE, + res.getString(R.string.auto_correction_threshold_mode_index_modest)); + } + public static float readPlausibilityThreshold(final Resources res) { return Float.parseFloat(res.getString(R.string.plausibility_threshold)); } @@ -513,21 +516,4 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang final SharedPreferences prefs, final int defValue) { return prefs.getInt(PREF_LAST_SHOWN_EMOJI_CATEGORY_PAGE_ID, defValue); } - - private void upgradeAutocorrectionSettings(final SharedPreferences prefs, final Resources res) { - final String thresholdSetting = - prefs.getString(PREF_AUTO_CORRECTION_THRESHOLD_OBSOLETE, null); - if (thresholdSetting != null) { - SharedPreferences.Editor editor = prefs.edit(); - editor.remove(PREF_AUTO_CORRECTION_THRESHOLD_OBSOLETE); - final String autoCorrectionOff = - res.getString(R.string.auto_correction_threshold_mode_index_off); - if (thresholdSetting.equals(autoCorrectionOff)) { - editor.putBoolean(PREF_AUTO_CORRECTION, false); - } else { - editor.putBoolean(PREF_AUTO_CORRECTION, true); - } - editor.commit(); - } - } } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java index e639a6e3..e4986f7d 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java @@ -53,6 +53,7 @@ public class SettingsValues { private static final String FLOAT_NEGATIVE_INFINITY_MARKER_STRING = "floatNegativeInfinity"; private static final int TIMEOUT_TO_GET_TARGET_PACKAGE = 5; // seconds public static final float DEFAULT_SIZE_SCALE = 1.0f; // 100% + public static final float AUTO_CORRECTION_DISABLED_THRESHOLD = Float.MAX_VALUE; // From resources: public final SpacingAndPunctuations mSpacingAndPunctuations; @@ -163,9 +164,9 @@ public class SettingsValues { && inputAttributes.mIsGeneralTextInput; mBlockPotentiallyOffensive = Settings.readBlockPotentiallyOffensive(prefs, res); mAutoCorrectEnabled = Settings.readAutoCorrectEnabled(prefs, res); - final String autoCorrectionThresholdRawValue = mAutoCorrectEnabled - ? res.getString(R.string.auto_correction_threshold_mode_index_modest) - : res.getString(R.string.auto_correction_threshold_mode_index_off); + mAutoCorrectionThreshold = mAutoCorrectEnabled + ? readAutoCorrectionThreshold(res, prefs) + : AUTO_CORRECTION_DISABLED_THRESHOLD; mBigramPredictionEnabled = readBigramPredictionEnabled(prefs, res); mDoubleSpacePeriodTimeout = res.getInteger(R.integer.config_double_space_period_timeout); mHasHardwareKeyboard = Settings.readHasHardwareKeyboard(res.getConfiguration()); @@ -183,8 +184,6 @@ public class SettingsValues { Settings.PREF_ENABLE_EMOJI_ALT_PHYSICAL_KEY, true); mShowAppIcon = Settings.readShowSetupWizardIcon(prefs, context); mIsShowAppIconSettingInPreferences = prefs.contains(Settings.PREF_SHOW_SETUP_WIZARD_ICON); - mAutoCorrectionThreshold = readAutoCorrectionThreshold(res, - autoCorrectionThresholdRawValue); mPlausibilityThreshold = Settings.readPlausibilityThreshold(res); mGestureInputEnabled = Settings.readGestureInputEnabled(prefs, res); mGestureTrailEnabled = prefs.getBoolean(Settings.PREF_GESTURE_PREVIEW_TRAIL, true); @@ -331,7 +330,8 @@ public class SettingsValues { } private static float readAutoCorrectionThreshold(final Resources res, - final String currentAutoCorrectionSetting) { + final SharedPreferences prefs) { + final String currentAutoCorrectionSetting = Settings.readAutoCorrectConfidence(prefs, res); final String[] autoCorrectionThresholdValues = res.getStringArray( R.array.auto_correction_threshold_values); // When autoCorrectionThreshold is greater than 1.0, it's like auto correction is off. diff --git a/app/src/main/res/values/config-auto-correction-thresholds.xml b/app/src/main/res/values/config-auto-correction-thresholds.xml index fc701c7f..028a46ba 100644 --- a/app/src/main/res/values/config-auto-correction-thresholds.xml +++ b/app/src/main/res/values/config-auto-correction-thresholds.xml @@ -21,8 +21,6 @@ - - floatMaxValue 0.185 @@ -41,21 +39,18 @@ 0.065 - 0 - 1 - 2 - 3 + 0 + 1 + 2 - @string/auto_correction_threshold_mode_index_off @string/auto_correction_threshold_mode_index_modest @string/auto_correction_threshold_mode_index_aggressive @string/auto_correction_threshold_mode_index_very_aggressive - @string/auto_correction_threshold_mode_off @string/auto_correction_threshold_mode_modest @string/auto_correction_threshold_mode_aggressive @string/auto_correction_threshold_mode_very_aggressive diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c6fd5fa0..6ef73fc3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -140,6 +140,8 @@ Auto-correction Spacebar and punctuation automatically correct mistyped words + + Auto-correction confidence Off diff --git a/app/src/main/res/xml/prefs_screen_correction.xml b/app/src/main/res/xml/prefs_screen_correction.xml index 350a8951..286b1469 100644 --- a/app/src/main/res/xml/prefs_screen_correction.xml +++ b/app/src/main/res/xml/prefs_screen_correction.xml @@ -41,6 +41,14 @@ android:defaultValue="true" android:persistent="true" /> + +