diff options
author | 2011-12-16 14:13:08 +0900 | |
---|---|---|
committer | 2011-12-16 20:35:16 +0900 | |
commit | 644c8b7c96627199c13297082e4566adae159bf3 (patch) | |
tree | de5f45d7afe1b300c264221d6b2d84610b4ecb71 /java/src/com/android/inputmethod/latin/InputAttributes.java | |
parent | 3b7aceca60462d8d7fb6a8a5a692c2ac5a89940b (diff) | |
download | latinime-644c8b7c96627199c13297082e4566adae159bf3.tar.gz latinime-644c8b7c96627199c13297082e4566adae159bf3.tar.xz latinime-644c8b7c96627199c13297082e4566adae159bf3.zip |
Initialize input attributes in the InputAttribute class
Change-Id: I103d6851f54f47cbffdb567fb0f4c505c4697b05
Diffstat (limited to 'java/src/com/android/inputmethod/latin/InputAttributes.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/InputAttributes.java | 89 |
1 files changed, 83 insertions, 6 deletions
diff --git a/java/src/com/android/inputmethod/latin/InputAttributes.java b/java/src/com/android/inputmethod/latin/InputAttributes.java index 28ce916c9..6d3f3e46a 100644 --- a/java/src/com/android/inputmethod/latin/InputAttributes.java +++ b/java/src/com/android/inputmethod/latin/InputAttributes.java @@ -16,20 +16,97 @@ package com.android.inputmethod.latin; +import android.text.InputType; +import android.util.Log; import android.view.inputmethod.EditorInfo; +import com.android.inputmethod.compat.InputTypeCompatUtils; + /** * Class to hold attributes of the input field. */ public class InputAttributes { private final String TAG = InputAttributes.class.getSimpleName(); - // TODO: make these final - public boolean mInsertSpaceOnPickSuggestionManually; - public boolean mInputTypeNoAutoCorrect; - public boolean mIsSettingsSuggestionStripOn; - public boolean mApplicationSpecifiedCompletionOn; + final public boolean mInsertSpaceOnPickSuggestionManually; + final public boolean mInputTypeNoAutoCorrect; + final public boolean mIsSettingsSuggestionStripOn; + final public boolean mApplicationSpecifiedCompletionOn; + + public InputAttributes(final EditorInfo editorInfo, final boolean isFullscreenMode) { + final boolean insertSpaceOnPickSuggestionManually; + final boolean inputTypeNoAutoCorrect; + final boolean isSettingsSuggestionStripOn; + final boolean applicationSpecifiedCompletionOn; + + if (editorInfo == null || editorInfo.inputType == InputType.TYPE_CLASS_TEXT) { + insertSpaceOnPickSuggestionManually = false; + isSettingsSuggestionStripOn = false; + inputTypeNoAutoCorrect = false; + applicationSpecifiedCompletionOn = false; + } else { + final int inputType = editorInfo.inputType; + if (inputType == InputType.TYPE_NULL) { + // TODO: We should honor TYPE_NULL specification. + Log.i(TAG, "InputType.TYPE_NULL is specified"); + } + final int inputClass = inputType & InputType.TYPE_MASK_CLASS; + final int variation = inputType & InputType.TYPE_MASK_VARIATION; + if (inputClass == 0) { + Log.w(TAG, String.format("Unexpected input class: inputType=0x%08x" + + " imeOptions=0x%08x", + inputType, editorInfo.imeOptions)); + } + final boolean flagNoSuggestions = + 0 != (inputType & InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); + final boolean flagMultiLine = + 0 != (inputType & InputType.TYPE_TEXT_FLAG_MULTI_LINE); + final boolean flagAutoCorrect = + 0 != (inputType & InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); + final boolean flagAutoComplete = + 0 != (inputType & InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE); + + // Make sure that passwords are not displayed in {@link SuggestionsView}. + if (InputTypeCompatUtils.isPasswordInputType(inputType) + || InputTypeCompatUtils.isVisiblePasswordInputType(inputType) + || InputTypeCompatUtils.isEmailVariation(variation) + || InputType.TYPE_TEXT_VARIATION_URI == variation + || InputType.TYPE_TEXT_VARIATION_FILTER == variation + || flagNoSuggestions + || flagAutoComplete) { + isSettingsSuggestionStripOn = false; + } else { + isSettingsSuggestionStripOn = true; + } + + if (InputTypeCompatUtils.isEmailVariation(variation) + || variation == InputType.TYPE_TEXT_VARIATION_PERSON_NAME) { + // The point in turning this off is that we don't want to insert a space after + // a name when filling a form: we can't delete trailing spaces when changing fields + insertSpaceOnPickSuggestionManually = false; + } else { + insertSpaceOnPickSuggestionManually = true; + } + + // If it's a browser edit field and auto correct is not ON explicitly, then + // disable auto correction, but keep suggestions on. + // If NO_SUGGESTIONS is set, don't do prediction. + // If it's not multiline and the autoCorrect flag is not set, then don't correct + if ((variation == InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT + && !flagAutoCorrect) + || flagNoSuggestions + || (!flagAutoCorrect && !flagMultiLine)) { + inputTypeNoAutoCorrect = true; + } else { + inputTypeNoAutoCorrect = false; + } + + applicationSpecifiedCompletionOn = flagAutoComplete && isFullscreenMode; + } - public InputAttributes(final EditorInfo editorInfo) { + mInsertSpaceOnPickSuggestionManually = insertSpaceOnPickSuggestionManually; + mInputTypeNoAutoCorrect = inputTypeNoAutoCorrect; + mIsSettingsSuggestionStripOn = isSettingsSuggestionStripOn; + mApplicationSpecifiedCompletionOn = applicationSpecifiedCompletionOn; } } |