aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/InputAttributes.java
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2011-12-16 14:13:08 +0900
committerJean Chalard <jchalard@google.com>2011-12-16 20:35:16 +0900
commit644c8b7c96627199c13297082e4566adae159bf3 (patch)
treede5f45d7afe1b300c264221d6b2d84610b4ecb71 /java/src/com/android/inputmethod/latin/InputAttributes.java
parent3b7aceca60462d8d7fb6a8a5a692c2ac5a89940b (diff)
downloadlatinime-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.java89
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;
}
}