aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2014-01-08 09:03:14 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-01-08 09:03:15 +0000
commit1e7f2809d2ec544b07956bdbe89c905c981b75fc (patch)
treecb75585be971112a5f19f25233ab8e8a7f2031c3 /java/src/com/android/inputmethod/latin/settings/SettingsValues.java
parentd4843c25e2b9f7e7c7c972af0cb22aac89e15d7d (diff)
parent8bc427799a9b7a53103d1edba4a447033fbd8cfa (diff)
downloadlatinime-1e7f2809d2ec544b07956bdbe89c905c981b75fc.tar.gz
latinime-1e7f2809d2ec544b07956bdbe89c905c981b75fc.tar.xz
latinime-1e7f2809d2ec544b07956bdbe89c905c981b75fc.zip
Merge "Revert "Separate spacing and punctuation related settings values""
Diffstat (limited to 'java/src/com/android/inputmethod/latin/settings/SettingsValues.java')
-rw-r--r--java/src/com/android/inputmethod/latin/settings/SettingsValues.java73
1 files changed, 66 insertions, 7 deletions
diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
index 3fa686ba7..a07a0cecf 100644
--- a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
+++ b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
@@ -26,12 +26,20 @@ import android.view.inputmethod.EditorInfo;
import com.android.inputmethod.annotations.UsedForTesting;
import com.android.inputmethod.compat.AppWorkaroundsUtils;
+import com.android.inputmethod.keyboard.internal.KeySpecParser;
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.Dictionary;
import com.android.inputmethod.latin.InputAttributes;
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.RichInputMethodManager;
+import com.android.inputmethod.latin.SuggestedWords;
+import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.utils.AsyncResultHolder;
+import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.latin.utils.StringUtils;
import com.android.inputmethod.latin.utils.TargetPackageInfoGetterTask;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Locale;
@@ -48,9 +56,15 @@ public final class SettingsValues {
private static final int TIMEOUT_TO_GET_TARGET_PACKAGE = 5; // seconds
// From resources:
- public final SpacingAndPunctuations mSpacingAndPunctuations;
public final int mDelayUpdateOldSuggestions;
+ public final int[] mSymbolsPrecededBySpace;
+ public final int[] mSymbolsFollowedBySpace;
+ public final int[] mWordConnectors;
+ public final SuggestedWords mSuggestPuncList;
+ public final String mWordSeparators;
+ public final int mSentenceSeparator;
public final CharSequence mHintToSaveText;
+ public final boolean mCurrentLanguageHasSpaces;
// From preferences, in the same order as xml/prefs.xml:
public final boolean mAutoCap;
@@ -101,8 +115,22 @@ public final class SettingsValues {
mLocale = locale;
// Get the resources
mDelayUpdateOldSuggestions = res.getInteger(R.integer.config_delay_update_old_suggestions);
- mSpacingAndPunctuations = new SpacingAndPunctuations(res);
+ mSymbolsPrecededBySpace =
+ StringUtils.toCodePointArray(res.getString(R.string.symbols_preceded_by_space));
+ Arrays.sort(mSymbolsPrecededBySpace);
+ mSymbolsFollowedBySpace =
+ StringUtils.toCodePointArray(res.getString(R.string.symbols_followed_by_space));
+ Arrays.sort(mSymbolsFollowedBySpace);
+ mWordConnectors =
+ StringUtils.toCodePointArray(res.getString(R.string.symbols_word_connectors));
+ Arrays.sort(mWordConnectors);
+ final String[] suggestPuncsSpec = KeySpecParser.splitKeySpecs(res.getString(
+ R.string.suggested_punctuations));
+ mSuggestPuncList = createSuggestPuncList(suggestPuncsSpec);
+ mWordSeparators = res.getString(R.string.symbols_word_separators);
+ mSentenceSeparator = res.getInteger(R.integer.sentence_separator);
mHintToSaveText = res.getText(R.string.hint_add_to_dictionary);
+ mCurrentLanguageHasSpaces = res.getBoolean(R.bool.current_language_has_spaces);
// Store the input attributes
if (null == inputAttributes) {
@@ -171,8 +199,18 @@ public final class SettingsValues {
// TODO: locale is saved, but not used yet. May have to change this if tests require.
mLocale = locale;
mDelayUpdateOldSuggestions = 0;
- mSpacingAndPunctuations = SpacingAndPunctuations.DEFAULT;
+ mSymbolsPrecededBySpace = new int[] { '(', '[', '{', '&' };
+ Arrays.sort(mSymbolsPrecededBySpace);
+ mSymbolsFollowedBySpace = new int[] { '.', ',', ';', ':', '!', '?', ')', ']', '}', '&' };
+ Arrays.sort(mSymbolsFollowedBySpace);
+ mWordConnectors = new int[] { '\'', '-' };
+ Arrays.sort(mWordConnectors);
+ mSentenceSeparator = Constants.CODE_PERIOD;
+ final String[] suggestPuncsSpec = new String[] { "!", "?", ",", ":", ";" };
+ mSuggestPuncList = createSuggestPuncList(suggestPuncsSpec);
+ mWordSeparators = "&\t \n()[]{}*&<>+=|.,;:!?/_\"";
mHintToSaveText = "Touch again to save";
+ mCurrentLanguageHasSpaces = true;
mInputAttributes = new InputAttributes(null, false /* isFullscreenMode */);
mAutoCap = true;
mVibrateOn = true;
@@ -227,11 +265,11 @@ public final class SettingsValues {
}
public boolean isWordSeparator(final int code) {
- return mSpacingAndPunctuations.isWordSeparator(code);
+ return mWordSeparators.contains(String.valueOf((char)code));
}
public boolean isWordConnector(final int code) {
- return mSpacingAndPunctuations.isWordConnector(code);
+ return Arrays.binarySearch(mWordConnectors, code) >= 0;
}
public boolean isWordCodePoint(final int code) {
@@ -239,11 +277,11 @@ public final class SettingsValues {
}
public boolean isUsuallyPrecededBySpace(final int code) {
- return mSpacingAndPunctuations.isUsuallyPrecededBySpace(code);
+ return Arrays.binarySearch(mSymbolsPrecededBySpace, code) >= 0;
}
public boolean isUsuallyFollowedBySpace(final int code) {
- return mSpacingAndPunctuations.isUsuallyFollowedBySpace(code);
+ return Arrays.binarySearch(mSymbolsFollowedBySpace, code) >= 0;
}
public boolean shouldInsertSpacesAutomatically() {
@@ -282,6 +320,27 @@ public final class SettingsValues {
return null == appWorkaroundUtils ? false : appWorkaroundUtils.isBrokenByRecorrection();
}
+ // Helper functions to create member values.
+ private static SuggestedWords createSuggestPuncList(final String[] puncs) {
+ final ArrayList<SuggestedWordInfo> puncList = CollectionUtils.newArrayList();
+ if (puncs != null) {
+ for (final String puncSpec : puncs) {
+ // TODO: Stop using KeySpceParser.getLabel().
+ puncList.add(new SuggestedWordInfo(KeySpecParser.getLabel(puncSpec),
+ SuggestedWordInfo.MAX_SCORE, SuggestedWordInfo.KIND_HARDCODED,
+ Dictionary.DICTIONARY_HARDCODED,
+ SuggestedWordInfo.NOT_AN_INDEX /* indexOfTouchPointOfSecondWord */,
+ SuggestedWordInfo.NOT_A_CONFIDENCE /* autoCommitFirstWordConfidence */));
+ }
+ }
+ return new SuggestedWords(puncList,
+ false /* typedWordValid */,
+ false /* hasAutoCorrectionCandidate */,
+ true /* isPunctuationSuggestions */,
+ false /* isObsoleteSuggestions */,
+ false /* isPrediction */);
+ }
+
private static final int SUGGESTION_VISIBILITY_SHOW_VALUE =
R.string.prefs_suggestion_visibility_show_value;
private static final int SUGGESTION_VISIBILITY_SHOW_ONLY_PORTRAIT_VALUE =