diff options
| author | Menny Even Danan <menny@evendanan.net> | 2015-10-22 01:01:06 +0000 |
|---|---|---|
| committer | Menny Even Danan <menny@evendanan.net> | 2015-10-22 01:01:06 +0000 |
| commit | 774ea430dff1686bb5a7efb4baf5c55a6cdfb3ca (patch) | |
| tree | 3a1239fb309eb13cba57568f46a669d4c7da3d3b | |
| parent | 0953cb41ee5ee36fa005d8a5fe9a72123ff22331 (diff) | |
| download | AnySoftKeyboard-774ea430dff1686bb5a7efb4baf5c55a6cdfb3ca.tar.gz AnySoftKeyboard-774ea430dff1686bb5a7efb4baf5c55a6cdfb3ca.tar.bz2 | |
prefs and functionality for auto-pick aggressiveness #510
| -rw-r--r-- | src/main/java/com/anysoftkeyboard/AnySoftKeyboard.java | 72 | ||||
| -rw-r--r-- | src/main/java/com/anysoftkeyboard/dictionaries/Suggest.java | 9 |
2 files changed, 53 insertions, 28 deletions
diff --git a/src/main/java/com/anysoftkeyboard/AnySoftKeyboard.java b/src/main/java/com/anysoftkeyboard/AnySoftKeyboard.java index 93776b31e..91100724a 100644 --- a/src/main/java/com/anysoftkeyboard/AnySoftKeyboard.java +++ b/src/main/java/com/anysoftkeyboard/AnySoftKeyboard.java @@ -168,6 +168,8 @@ public class AnySoftKeyboard extends InputMethodService implements private String mOverrideQuickTextText = null; private boolean mAutoCap; private boolean mQuickFixes; + private int mCalculatedCommonalityMaxLengthDiff; + private int mCalculatedCommonalityMaxDistance; /* * Configuration flag. Should we support dictionary suggestions */ @@ -293,7 +295,7 @@ public class AnySoftKeyboard extends InputMethodService implements private void initSuggest() { mSuggest = new Suggest(this); - mSuggest.setCorrectionMode(mQuickFixes, mShowSuggestions); + mSuggest.setCorrectionMode(mQuickFixes, mShowSuggestions, mCalculatedCommonalityMaxLengthDiff, mCalculatedCommonalityMaxDistance); mSuggest.setMinimumWordLengthForCorrection(mMinimumWordCorrectionLength); setDictionariesForCurrentKeyboard(); } @@ -581,7 +583,7 @@ public class AnySoftKeyboard extends InputMethodService implements setCandidatesViewShown(false); if (mSuggest != null) { - mSuggest.setCorrectionMode(mQuickFixes, mShowSuggestions); + mSuggest.setCorrectionMode(mQuickFixes, mShowSuggestions, mCalculatedCommonalityMaxLengthDiff, mCalculatedCommonalityMaxDistance); } mPredictionOn = mPredictionOn && (mShowSuggestions/* || mQuickFixes */); @@ -2012,7 +2014,7 @@ public class AnySoftKeyboard extends InputMethodService implements mPredictionOn = false; setCandidatesViewShown(false); if (mSuggest != null) { - mSuggest.setCorrectionMode(false, false); + mSuggest.setCorrectionMode(false, false, 0, 0); } } } @@ -2729,18 +2731,16 @@ public class AnySoftKeyboard extends InputMethodService implements mSoundVolume = newVolume; // in order to support the old type of configuration - mKeyboardChangeNotificationType = sp - .getString( - getString(R.string.settings_key_physical_keyboard_change_notification_type), - getString(R.string.settings_default_physical_keyboard_change_notification_type)); + mKeyboardChangeNotificationType = sp.getString( + getString(R.string.settings_key_physical_keyboard_change_notification_type), + getString(R.string.settings_default_physical_keyboard_change_notification_type)); // now clearing the notification, and it will be re-shown if needed mInputMethodManager.hideStatusIcon(mImeToken); - // mNotificationManager.cancel(KEYBOARD_NOTIFICATION_ID); // should it be always on? - if (mKeyboardChangeNotificationType - .equals(KEYBOARD_NOTIFICATION_ALWAYS)) + if (mKeyboardChangeNotificationType.equals(KEYBOARD_NOTIFICATION_ALWAYS)) { notifyKeyboardChangeIfNeeded(); + } mAutoCap = sp.getBoolean("auto_caps", true); @@ -2748,28 +2748,56 @@ public class AnySoftKeyboard extends InputMethodService implements setDictionariesForCurrentKeyboard(); - mAutoComplete = sp.getBoolean("auto_complete", true) - && mShowSuggestions; + final String autoPickAggressiveness = sp.getString( + getString(R.string.settings_key_auto_pick_suggestion_aggressiveness), + getString(R.string.settings_default_auto_pick_suggestion_aggressiveness)); + + switch (autoPickAggressiveness) { + case "none": + mCalculatedCommonalityMaxLengthDiff = 0; + mCalculatedCommonalityMaxDistance = 0; + mAutoComplete = false; + break; + case "minimal_aggressiveness": + mCalculatedCommonalityMaxLengthDiff = 1; + mCalculatedCommonalityMaxDistance = 1; + mAutoComplete = true; + break; + case "high_aggressiveness": + mCalculatedCommonalityMaxLengthDiff = 3; + mCalculatedCommonalityMaxDistance = 4; + mAutoComplete = true; + break; + case "extreme_aggressiveness": + mCalculatedCommonalityMaxLengthDiff = 5; + mCalculatedCommonalityMaxDistance = 5; + mAutoComplete = true; + break; + default: + mCalculatedCommonalityMaxLengthDiff = 2; + mCalculatedCommonalityMaxDistance = 3; + mAutoComplete = true; + } + mAutoCorrectOn = mAutoComplete = mAutoComplete && mShowSuggestions; mQuickFixes = sp.getBoolean("quick_fix", true); mAllowSuggestionsRestart = sp.getBoolean( getString(R.string.settings_key_allow_suggestions_restart), - getResources().getBoolean( - R.bool.settings_default_allow_suggestions_restart)); + getResources().getBoolean(R.bool.settings_default_allow_suggestions_restart)); - mAutoCorrectOn = mAutoComplete; + mMinimumWordCorrectionLength = sp.getInt(getString(R.string.settings_key_min_length_for_word_correction__), 2); + if (mSuggest != null) { + mSuggest.setMinimumWordLengthForCorrection(mMinimumWordCorrectionLength); + mSuggest.setCorrectionMode(mQuickFixes, mShowSuggestions, mCalculatedCommonalityMaxLengthDiff, mCalculatedCommonalityMaxDistance); + } - mDoNotFlipQuickTextKeyAndPopupFunctionality = - sp.getBoolean(getString(R.string.settings_key_do_not_flip_quick_key_codes_functionality), - getResources().getBoolean(R.bool.settings_default_do_not_flip_quick_keys_functionality)); + mDoNotFlipQuickTextKeyAndPopupFunctionality = sp.getBoolean( + getString(R.string.settings_key_do_not_flip_quick_key_codes_functionality), + getResources().getBoolean(R.bool.settings_default_do_not_flip_quick_keys_functionality)); mOverrideQuickTextText = sp.getString(getString(R.string.settings_key_emoticon_default_text), null); - mMinimumWordCorrectionLength = sp.getInt(getString(R.string.settings_key_min_length_for_word_correction__), 2); - if (mSuggest != null) - mSuggest.setMinimumWordLengthForCorrection(mMinimumWordCorrectionLength); - setInitialCondensedState(getResources().getConfiguration()); } diff --git a/src/main/java/com/anysoftkeyboard/dictionaries/Suggest.java b/src/main/java/com/anysoftkeyboard/dictionaries/Suggest.java index 606e58cde..15292dbe3 100644 --- a/src/main/java/com/anysoftkeyboard/dictionaries/Suggest.java +++ b/src/main/java/com/anysoftkeyboard/dictionaries/Suggest.java @@ -94,9 +94,11 @@ public class Suggest implements Dictionary.WordCallback { } } - public void setCorrectionMode(boolean autoText, boolean mainDictionary) { + public void setCorrectionMode(boolean autoText, boolean mainDictionary, int maxLengthDiff, int maxDistance) { mAutoTextEnabled = autoText; mMainDictionaryEnabled = mainDictionary; + mCommonalityMaxLengthDiff = maxLengthDiff; + mCommonalityMaxDisatance = maxDistance; } /** @@ -192,11 +194,6 @@ public class Suggest implements Dictionary.WordCallback { } } - public void setSufficientCommonalitySettings(int maxLengthDiff, int maxDistance) { - mCommonalityMaxLengthDiff = maxLengthDiff; - mCommonalityMaxDisatance = maxDistance; - } - private boolean haveSufficientCommonality(String typedWord, CharSequence toBeAutoPickedSuggestion) { final int originalLength = typedWord.length(); final int suggestionLength = toBeAutoPickedSuggestion.length(); |
