Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
LatinIME
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
keyboard
LatinIME
Commits
06fbfc49
Commit
06fbfc49
authored
11 years ago
by
Tadashi G. Takaoka
Browse files
Options
Downloads
Patches
Plain Diff
Refactor InputAttributes a bit
Change-Id: I43d65be6de64ba86f83e8528a138e20c4fa1e3ed
parent
f0f4e9fc
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
java/src/com/android/inputmethod/latin/InputAttributes.java
+155
-117
155 additions, 117 deletions
java/src/com/android/inputmethod/latin/InputAttributes.java
with
155 additions
and
117 deletions
java/src/com/android/inputmethod/latin/InputAttributes.java
+
155
−
117
View file @
06fbfc49
...
...
@@ -20,9 +20,13 @@ import android.text.InputType;
import
android.util.Log
;
import
android.view.inputmethod.EditorInfo
;
import
com.android.inputmethod.latin.utils.CollectionUtils
;
import
com.android.inputmethod.latin.utils.InputTypeUtils
;
import
com.android.inputmethod.latin.utils.StringUtils
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
/**
* Class to hold attributes of the input field.
*/
...
...
@@ -62,49 +66,43 @@ public final class InputAttributes {
mInputTypeNoAutoCorrect
=
false
;
mApplicationSpecifiedCompletionOn
=
false
;
mShouldInsertSpacesAutomatically
=
false
;
}
else
{
final
int
variation
=
inputType
&
InputType
.
TYPE_MASK_VARIATION
;
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
);
mIsPasswordField
=
InputTypeUtils
.
isPasswordInputType
(
inputType
)
||
InputTypeUtils
.
isVisiblePasswordInputType
(
inputType
);
// TODO: Have a helper method in InputTypeUtils
// Make sure that passwords are not displayed in {@link SuggestionStripView}.
if
(
mIsPasswordField
||
InputTypeUtils
.
isEmailVariation
(
variation
)
||
InputType
.
TYPE_TEXT_VARIATION_URI
==
variation
||
InputType
.
TYPE_TEXT_VARIATION_FILTER
==
variation
||
flagNoSuggestions
||
flagAutoComplete
)
{
mIsSettingsSuggestionStripOn
=
false
;
}
else
{
mIsSettingsSuggestionStripOn
=
true
;
}
return
;
}
// inputClass == InputType.TYPE_CLASS_TEXT
final
int
variation
=
inputType
&
InputType
.
TYPE_MASK_VARIATION
;
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
);
mShouldInsertSpacesAutomatically
=
InputTypeUtils
.
isAutoSpaceFriendlyType
(
inputType
);
// 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
))
{
mInputTypeNoAutoCorrect
=
true
;
}
else
{
mInputTypeNoAutoCorrect
=
false
;
}
mIsPasswordField
=
InputTypeUtils
.
isPasswordInputType
(
inputType
)
||
InputTypeUtils
.
isVisiblePasswordInputType
(
inputType
);
// TODO: Have a helper method in InputTypeUtils
// Make sure that passwords are not displayed in {@link SuggestionStripView}.
final
boolean
noSuggestionStrip
=
mIsPasswordField
||
InputTypeUtils
.
isEmailVariation
(
variation
)
||
InputType
.
TYPE_TEXT_VARIATION_URI
==
variation
||
InputType
.
TYPE_TEXT_VARIATION_FILTER
==
variation
||
flagNoSuggestions
||
flagAutoComplete
;
mIsSettingsSuggestionStripOn
=
!
noSuggestionStrip
;
mApplicationSpecifiedCompletionOn
=
flagAutoComplete
&&
isFullscreenMode
;
}
mShouldInsertSpacesAutomatically
=
InputTypeUtils
.
isAutoSpaceFriendlyType
(
inputType
);
// 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
mInputTypeNoAutoCorrect
=
(
variation
==
InputType
.
TYPE_TEXT_VARIATION_WEB_EDIT_TEXT
&&
!
flagAutoCorrect
)
||
flagNoSuggestions
||
(!
flagAutoCorrect
&&
!
flagMultiLine
);
mApplicationSpecifiedCompletionOn
=
flagAutoComplete
&&
isFullscreenMode
;
}
public
boolean
isTypeNull
()
{
...
...
@@ -117,84 +115,124 @@ public final class InputAttributes {
@SuppressWarnings
(
"unused"
)
private
void
dumpFlags
(
final
int
inputType
)
{
Log
.
i
(
TAG
,
"Input class:"
);
final
int
inputClass
=
inputType
&
InputType
.
TYPE_MASK_CLASS
;
if
(
inputClass
==
InputType
.
TYPE_CLASS_TEXT
)
Log
.
i
(
TAG
,
" TYPE_CLASS_TEXT"
);
if
(
inputClass
==
InputType
.
TYPE_CLASS_PHONE
)
Log
.
i
(
TAG
,
" TYPE_CLASS_PHONE"
);
if
(
inputClass
==
InputType
.
TYPE_CLASS_NUMBER
)
Log
.
i
(
TAG
,
" TYPE_CLASS_NUMBER"
);
if
(
inputClass
==
InputType
.
TYPE_CLASS_DATETIME
)
Log
.
i
(
TAG
,
" TYPE_CLASS_DATETIME"
);
Log
.
i
(
TAG
,
"Variation:"
);
switch
(
InputType
.
TYPE_MASK_VARIATION
&
inputType
)
{
case
InputType
.
TYPE_TEXT_VARIATION_EMAIL_ADDRESS
:
Log
.
i
(
TAG
,
" TYPE_TEXT_VARIATION_EMAIL_ADDRESS"
);
break
;
case
InputType
.
TYPE_TEXT_VARIATION_EMAIL_SUBJECT
:
Log
.
i
(
TAG
,
" TYPE_TEXT_VARIATION_EMAIL_SUBJECT"
);
break
;
case
InputType
.
TYPE_TEXT_VARIATION_FILTER
:
Log
.
i
(
TAG
,
" TYPE_TEXT_VARIATION_FILTER"
);
break
;
case
InputType
.
TYPE_TEXT_VARIATION_LONG_MESSAGE
:
Log
.
i
(
TAG
,
" TYPE_TEXT_VARIATION_LONG_MESSAGE"
);
break
;
case
InputType
.
TYPE_TEXT_VARIATION_NORMAL
:
Log
.
i
(
TAG
,
" TYPE_TEXT_VARIATION_NORMAL"
);
break
;
case
InputType
.
TYPE_TEXT_VARIATION_PASSWORD
:
Log
.
i
(
TAG
,
" TYPE_TEXT_VARIATION_PASSWORD"
);
break
;
case
InputType
.
TYPE_TEXT_VARIATION_PERSON_NAME
:
Log
.
i
(
TAG
,
" TYPE_TEXT_VARIATION_PERSON_NAME"
);
break
;
case
InputType
.
TYPE_TEXT_VARIATION_PHONETIC
:
Log
.
i
(
TAG
,
" TYPE_TEXT_VARIATION_PHONETIC"
);
break
;
case
InputType
.
TYPE_TEXT_VARIATION_POSTAL_ADDRESS
:
Log
.
i
(
TAG
,
" TYPE_TEXT_VARIATION_POSTAL_ADDRESS"
);
break
;
case
InputType
.
TYPE_TEXT_VARIATION_SHORT_MESSAGE
:
Log
.
i
(
TAG
,
" TYPE_TEXT_VARIATION_SHORT_MESSAGE"
);
break
;
case
InputType
.
TYPE_TEXT_VARIATION_URI
:
Log
.
i
(
TAG
,
" TYPE_TEXT_VARIATION_URI"
);
break
;
case
InputType
.
TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
:
Log
.
i
(
TAG
,
" TYPE_TEXT_VARIATION_VISIBLE_PASSWORD"
);
break
;
case
InputType
.
TYPE_TEXT_VARIATION_WEB_EDIT_TEXT
:
Log
.
i
(
TAG
,
" TYPE_TEXT_VARIATION_WEB_EDIT_TEXT"
);
break
;
case
InputType
.
TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS
:
Log
.
i
(
TAG
,
" TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS"
);
break
;
case
InputType
.
TYPE_TEXT_VARIATION_WEB_PASSWORD
:
Log
.
i
(
TAG
,
" TYPE_TEXT_VARIATION_WEB_PASSWORD"
);
break
;
default
:
Log
.
i
(
TAG
,
" Unknown variation"
);
break
;
final
String
inputClassString
=
toInputClassString
(
inputClass
);
final
String
variationString
=
toVariationString
(
inputClass
,
inputType
&
InputType
.
TYPE_TEXT_VARIATION_EMAIL_ADDRESS
);
final
String
flagsString
=
toFlagsString
(
inputType
&
InputType
.
TYPE_MASK_FLAGS
);
Log
.
i
(
TAG
,
"Input class: "
+
inputClassString
);
Log
.
i
(
TAG
,
"Variation: "
+
variationString
);
Log
.
i
(
TAG
,
"Flags: "
+
flagsString
);
}
private
static
String
toInputClassString
(
final
int
inputClass
)
{
switch
(
inputClass
)
{
case
InputType
.
TYPE_CLASS_TEXT
:
return
"TYPE_CLASS_TEXT"
;
case
InputType
.
TYPE_CLASS_PHONE
:
return
"TYPE_CLASS_PHONE"
;
case
InputType
.
TYPE_CLASS_NUMBER
:
return
"TYPE_CLASS_NUMBER"
;
case
InputType
.
TYPE_CLASS_DATETIME
:
return
"TYPE_CLASS_DATETIME"
;
default
:
return
String
.
format
(
"unknownInputClass<0x%08x>"
,
inputClass
);
}
}
private
static
String
toVariationString
(
final
int
inputClass
,
final
int
variation
)
{
switch
(
inputClass
)
{
case
InputType
.
TYPE_CLASS_TEXT
:
return
toTextVariationString
(
variation
);
case
InputType
.
TYPE_CLASS_NUMBER
:
return
toNumberVariationString
(
variation
);
case
InputType
.
TYPE_CLASS_DATETIME
:
return
toDatetimeVariationString
(
variation
);
default
:
return
""
;
}
Log
.
i
(
TAG
,
"Flags:"
);
if
(
0
!=
(
inputType
&
InputType
.
TYPE_TEXT_FLAG_NO_SUGGESTIONS
))
Log
.
i
(
TAG
,
" TYPE_TEXT_FLAG_NO_SUGGESTIONS"
);
if
(
0
!=
(
inputType
&
InputType
.
TYPE_TEXT_FLAG_MULTI_LINE
))
Log
.
i
(
TAG
,
" TYPE_TEXT_FLAG_MULTI_LINE"
);
if
(
0
!=
(
inputType
&
InputType
.
TYPE_TEXT_FLAG_IME_MULTI_LINE
))
Log
.
i
(
TAG
,
" TYPE_TEXT_FLAG_IME_MULTI_LINE"
);
if
(
0
!=
(
inputType
&
InputType
.
TYPE_TEXT_FLAG_CAP_WORDS
))
Log
.
i
(
TAG
,
" TYPE_TEXT_FLAG_CAP_WORDS"
);
if
(
0
!=
(
inputType
&
InputType
.
TYPE_TEXT_FLAG_CAP_SENTENCES
))
Log
.
i
(
TAG
,
" TYPE_TEXT_FLAG_CAP_SENTENCES"
);
if
(
0
!=
(
inputType
&
InputType
.
TYPE_TEXT_FLAG_CAP_CHARACTERS
))
Log
.
i
(
TAG
,
" TYPE_TEXT_FLAG_CAP_CHARACTERS"
);
if
(
0
!=
(
inputType
&
InputType
.
TYPE_TEXT_FLAG_AUTO_CORRECT
))
Log
.
i
(
TAG
,
" TYPE_TEXT_FLAG_AUTO_CORRECT"
);
if
(
0
!=
(
inputType
&
InputType
.
TYPE_TEXT_FLAG_AUTO_COMPLETE
))
Log
.
i
(
TAG
,
" TYPE_TEXT_FLAG_AUTO_COMPLETE"
);
}
private
static
String
toTextVariationString
(
final
int
variation
)
{
switch
(
variation
)
{
case
InputType
.
TYPE_TEXT_VARIATION_EMAIL_ADDRESS
:
return
" TYPE_TEXT_VARIATION_EMAIL_ADDRESS"
;
case
InputType
.
TYPE_TEXT_VARIATION_EMAIL_SUBJECT
:
return
"TYPE_TEXT_VARIATION_EMAIL_SUBJECT"
;
case
InputType
.
TYPE_TEXT_VARIATION_FILTER
:
return
"TYPE_TEXT_VARIATION_FILTER"
;
case
InputType
.
TYPE_TEXT_VARIATION_LONG_MESSAGE
:
return
"TYPE_TEXT_VARIATION_LONG_MESSAGE"
;
case
InputType
.
TYPE_TEXT_VARIATION_NORMAL
:
return
"TYPE_TEXT_VARIATION_NORMAL"
;
case
InputType
.
TYPE_TEXT_VARIATION_PASSWORD
:
return
"TYPE_TEXT_VARIATION_PASSWORD"
;
case
InputType
.
TYPE_TEXT_VARIATION_PERSON_NAME
:
return
"TYPE_TEXT_VARIATION_PERSON_NAME"
;
case
InputType
.
TYPE_TEXT_VARIATION_PHONETIC
:
return
"TYPE_TEXT_VARIATION_PHONETIC"
;
case
InputType
.
TYPE_TEXT_VARIATION_POSTAL_ADDRESS
:
return
"TYPE_TEXT_VARIATION_POSTAL_ADDRESS"
;
case
InputType
.
TYPE_TEXT_VARIATION_SHORT_MESSAGE
:
return
"TYPE_TEXT_VARIATION_SHORT_MESSAGE"
;
case
InputType
.
TYPE_TEXT_VARIATION_URI
:
return
"TYPE_TEXT_VARIATION_URI"
;
case
InputType
.
TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
:
return
"TYPE_TEXT_VARIATION_VISIBLE_PASSWORD"
;
case
InputType
.
TYPE_TEXT_VARIATION_WEB_EDIT_TEXT
:
return
"TYPE_TEXT_VARIATION_WEB_EDIT_TEXT"
;
case
InputType
.
TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS
:
return
"TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS"
;
case
InputType
.
TYPE_TEXT_VARIATION_WEB_PASSWORD
:
return
"TYPE_TEXT_VARIATION_WEB_PASSWORD"
;
default
:
return
String
.
format
(
"unknownVariation<0x%08x>"
,
variation
);
}
}
private
static
String
toNumberVariationString
(
final
int
variation
)
{
switch
(
variation
)
{
case
InputType
.
TYPE_NUMBER_VARIATION_NORMAL
:
return
"TYPE_NUMBER_VARIATION_NORMAL"
;
case
InputType
.
TYPE_NUMBER_VARIATION_PASSWORD
:
return
"TYPE_NUMBER_VARIATION_PASSWORD"
;
default
:
return
String
.
format
(
"unknownVariation<0x%08x>"
,
variation
);
}
}
private
static
String
toDatetimeVariationString
(
final
int
variation
)
{
switch
(
variation
)
{
case
InputType
.
TYPE_DATETIME_VARIATION_NORMAL
:
return
"TYPE_DATETIME_VARIATION_NORMAL"
;
case
InputType
.
TYPE_DATETIME_VARIATION_DATE
:
return
"TYPE_DATETIME_VARIATION_DATE"
;
case
InputType
.
TYPE_DATETIME_VARIATION_TIME
:
return
"TYPE_DATETIME_VARIATION_TIME"
;
default
:
return
String
.
format
(
"unknownVariation<0x%08x>"
,
variation
);
}
}
private
static
String
toFlagsString
(
final
int
flags
)
{
final
ArrayList
<
String
>
flagsArray
=
CollectionUtils
.
newArrayList
();
if
(
0
!=
(
flags
&
InputType
.
TYPE_TEXT_FLAG_NO_SUGGESTIONS
))
flagsArray
.
add
(
"TYPE_TEXT_FLAG_NO_SUGGESTIONS"
);
if
(
0
!=
(
flags
&
InputType
.
TYPE_TEXT_FLAG_MULTI_LINE
))
flagsArray
.
add
(
"TYPE_TEXT_FLAG_MULTI_LINE"
);
if
(
0
!=
(
flags
&
InputType
.
TYPE_TEXT_FLAG_IME_MULTI_LINE
))
flagsArray
.
add
(
"TYPE_TEXT_FLAG_IME_MULTI_LINE"
);
if
(
0
!=
(
flags
&
InputType
.
TYPE_TEXT_FLAG_CAP_WORDS
))
flagsArray
.
add
(
"TYPE_TEXT_FLAG_CAP_WORDS"
);
if
(
0
!=
(
flags
&
InputType
.
TYPE_TEXT_FLAG_CAP_SENTENCES
))
flagsArray
.
add
(
"TYPE_TEXT_FLAG_CAP_SENTENCES"
);
if
(
0
!=
(
flags
&
InputType
.
TYPE_TEXT_FLAG_CAP_CHARACTERS
))
flagsArray
.
add
(
"TYPE_TEXT_FLAG_CAP_CHARACTERS"
);
if
(
0
!=
(
flags
&
InputType
.
TYPE_TEXT_FLAG_AUTO_CORRECT
))
flagsArray
.
add
(
"TYPE_TEXT_FLAG_AUTO_CORRECT"
);
if
(
0
!=
(
flags
&
InputType
.
TYPE_TEXT_FLAG_AUTO_COMPLETE
))
flagsArray
.
add
(
"TYPE_TEXT_FLAG_AUTO_COMPLETE"
);
return
flagsArray
.
isEmpty
()
?
""
:
Arrays
.
toString
(
flagsArray
.
toArray
());
}
// Pretty print
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment