aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMenny Even Danan <menny@evendanan.net>2015-10-22 01:01:06 +0000
committerMenny Even Danan <menny@evendanan.net>2015-10-22 01:01:06 +0000
commit774ea430dff1686bb5a7efb4baf5c55a6cdfb3ca (patch)
tree3a1239fb309eb13cba57568f46a669d4c7da3d3b
parent0953cb41ee5ee36fa005d8a5fe9a72123ff22331 (diff)
downloadAnySoftKeyboard-774ea430dff1686bb5a7efb4baf5c55a6cdfb3ca.tar.gz
AnySoftKeyboard-774ea430dff1686bb5a7efb4baf5c55a6cdfb3ca.tar.bz2
prefs and functionality for auto-pick aggressiveness #510
-rw-r--r--src/main/java/com/anysoftkeyboard/AnySoftKeyboard.java72
-rw-r--r--src/main/java/com/anysoftkeyboard/dictionaries/Suggest.java9
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();