• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2008 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.text;
18 
19 import android.text.TextUtils;
20 
21 /**
22  * Bit definitions for an integer defining the basic content type of text
23  * held in an {@link Editable} object. Supported classes may be combined
24  * with variations and flags to indicate desired behaviors.
25  *
26  * <h3>Examples</h3>
27  *
28  * <dl>
29  * <dt>A password field with with the password visible to the user:
30  * <dd>inputType = TYPE_CLASS_TEXT |
31  *     TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
32  *
33  * <dt>A multi-line postal address with automatic capitalization:
34  * <dd>inputType = TYPE_CLASS_TEXT |
35  *     TYPE_TEXT_VARIATION_POSTAL_ADDRESS |
36  *     TYPE_TEXT_FLAG_MULTI_LINE
37  *
38  * <dt>A time field:
39  * <dd>inputType = TYPE_CLASS_DATETIME |
40  *     TYPE_DATETIME_VARIATION_TIME
41  * </dl>
42  */
43 public interface InputType {
44     /**
45      * Mask of bits that determine the overall class
46      * of text being given.  Currently supported classes are:
47      * {@link #TYPE_CLASS_TEXT}, {@link #TYPE_CLASS_NUMBER},
48      * {@link #TYPE_CLASS_PHONE}, {@link #TYPE_CLASS_DATETIME}.
49      * If the class is not one you
50      * understand, assume {@link #TYPE_CLASS_TEXT} with NO variation
51      * or flags.
52      */
53     public static final int TYPE_MASK_CLASS = 0x0000000f;
54 
55     /**
56      * Mask of bits that determine the variation of
57      * the base content class.
58      */
59     public static final int TYPE_MASK_VARIATION = 0x00000ff0;
60 
61     /**
62      * Mask of bits that provide addition bit flags
63      * of options.
64      */
65     public static final int TYPE_MASK_FLAGS = 0x00fff000;
66 
67     /**
68      * Special content type for when no explicit type has been specified.
69      * This should be interpreted to mean that the target input connection
70      * is not rich, it can not process and show things like candidate text nor
71      * retrieve the current text, so the input method will need to run in a
72      * limited "generate key events" mode.
73      */
74     public static final int TYPE_NULL = 0x00000000;
75 
76     // ----------------------------------------------------------------------
77     // ----------------------------------------------------------------------
78     // ----------------------------------------------------------------------
79 
80     /**
81      * Class for normal text.  This class supports the following flags (only
82      * one of which should be set):
83      * {@link #TYPE_TEXT_FLAG_CAP_CHARACTERS},
84      * {@link #TYPE_TEXT_FLAG_CAP_WORDS}, and.
85      * {@link #TYPE_TEXT_FLAG_CAP_SENTENCES}.  It also supports the
86      * following variations:
87      * {@link #TYPE_TEXT_VARIATION_NORMAL}, and
88      * {@link #TYPE_TEXT_VARIATION_URI}.  If you do not recognize the
89      * variation, normal should be assumed.
90      */
91     public static final int TYPE_CLASS_TEXT = 0x00000001;
92 
93     /**
94      * Flag for {@link #TYPE_CLASS_TEXT}: capitalize all characters.  Overrides
95      * {@link #TYPE_TEXT_FLAG_CAP_WORDS} and
96      * {@link #TYPE_TEXT_FLAG_CAP_SENTENCES}.  This value is explicitly defined
97      * to be the same as {@link TextUtils#CAP_MODE_CHARACTERS}.
98      */
99     public static final int TYPE_TEXT_FLAG_CAP_CHARACTERS = 0x00001000;
100 
101     /**
102      * Flag for {@link #TYPE_CLASS_TEXT}: capitalize first character of
103      * all words.  Overrides {@link #TYPE_TEXT_FLAG_CAP_SENTENCES}.  This
104      * value is explicitly defined
105      * to be the same as {@link TextUtils#CAP_MODE_WORDS}.
106      */
107     public static final int TYPE_TEXT_FLAG_CAP_WORDS = 0x00002000;
108 
109     /**
110      * Flag for {@link #TYPE_CLASS_TEXT}: capitalize first character of
111      * each sentence.  This value is explicitly defined
112      * to be the same as {@link TextUtils#CAP_MODE_SENTENCES}.
113      */
114     public static final int TYPE_TEXT_FLAG_CAP_SENTENCES = 0x00004000;
115 
116     /**
117      * Flag for {@link #TYPE_CLASS_TEXT}: the user is entering free-form
118      * text that should have auto-correction applied to it.
119      */
120     public static final int TYPE_TEXT_FLAG_AUTO_CORRECT = 0x00008000;
121 
122     /**
123      * Flag for {@link #TYPE_CLASS_TEXT}: the text editor is performing
124      * auto-completion of the text being entered based on its own semantics,
125      * which it will present to the user as they type.  This generally means
126      * that the input method should not be showing candidates itself, but can
127      * expect for the editor to supply its own completions/candidates from
128      * {@link android.view.inputmethod.InputMethodSession#displayCompletions
129      * InputMethodSession.displayCompletions()} as a result of the editor calling
130      * {@link android.view.inputmethod.InputMethodManager#displayCompletions
131      * InputMethodManager.displayCompletions()}.
132      */
133     public static final int TYPE_TEXT_FLAG_AUTO_COMPLETE = 0x00010000;
134 
135     /**
136      * Flag for {@link #TYPE_CLASS_TEXT}: multiple lines of text can be
137      * entered into the field.  If this flag is not set, the text field
138      * will be constrained to a single line.
139      */
140     public static final int TYPE_TEXT_FLAG_MULTI_LINE = 0x00020000;
141 
142     /**
143      * Flag for {@link #TYPE_CLASS_TEXT}: the regular text view associated
144      * with this should not be multi-line, but when a fullscreen input method
145      * is providing text it should use multiple lines if it can.
146      */
147     public static final int TYPE_TEXT_FLAG_IME_MULTI_LINE = 0x00040000;
148 
149     /**
150      * Flag for {@link #TYPE_CLASS_TEXT}: the input method does not need to
151      * display any dictionary-based candidates. This is useful for text views that
152      * do not contain words from the language and do not benefit from any
153      * dictionary-based completions or corrections. It overrides the
154      * {@link #TYPE_TEXT_FLAG_AUTO_CORRECT} value when set.
155      */
156     public static final int TYPE_TEXT_FLAG_NO_SUGGESTIONS = 0x00080000;
157 
158     // ----------------------------------------------------------------------
159 
160     /**
161      * Default variation of {@link #TYPE_CLASS_TEXT}: plain old normal text.
162      */
163     public static final int TYPE_TEXT_VARIATION_NORMAL = 0x00000000;
164 
165     /**
166      * Variation of {@link #TYPE_CLASS_TEXT}: entering a URI.
167      */
168     public static final int TYPE_TEXT_VARIATION_URI = 0x00000010;
169 
170     /**
171      * Variation of {@link #TYPE_CLASS_TEXT}: entering an e-mail address.
172      */
173     public static final int TYPE_TEXT_VARIATION_EMAIL_ADDRESS = 0x00000020;
174 
175     /**
176      * Variation of {@link #TYPE_CLASS_TEXT}: entering the subject line of
177      * an e-mail.
178      */
179     public static final int TYPE_TEXT_VARIATION_EMAIL_SUBJECT = 0x00000030;
180 
181     /**
182      * Variation of {@link #TYPE_CLASS_TEXT}: entering a short, possibly informal
183      * message such as an instant message or a text message.
184      */
185     public static final int TYPE_TEXT_VARIATION_SHORT_MESSAGE = 0x00000040;
186 
187     /**
188      * Variation of {@link #TYPE_CLASS_TEXT}: entering the content of a long, possibly
189      * formal message such as the body of an e-mail.
190      */
191     public static final int TYPE_TEXT_VARIATION_LONG_MESSAGE = 0x00000050;
192 
193     /**
194      * Variation of {@link #TYPE_CLASS_TEXT}: entering the name of a person.
195      */
196     public static final int TYPE_TEXT_VARIATION_PERSON_NAME = 0x00000060;
197 
198     /**
199      * Variation of {@link #TYPE_CLASS_TEXT}: entering a postal mailing address.
200      */
201     public static final int TYPE_TEXT_VARIATION_POSTAL_ADDRESS = 0x00000070;
202 
203     /**
204      * Variation of {@link #TYPE_CLASS_TEXT}: entering a password.
205      */
206     public static final int TYPE_TEXT_VARIATION_PASSWORD = 0x00000080;
207 
208     /**
209      * Variation of {@link #TYPE_CLASS_TEXT}: entering a password, which should
210      * be visible to the user.
211      */
212     public static final int TYPE_TEXT_VARIATION_VISIBLE_PASSWORD = 0x00000090;
213 
214     /**
215      * Variation of {@link #TYPE_CLASS_TEXT}: entering text inside of a web form.
216      */
217     public static final int TYPE_TEXT_VARIATION_WEB_EDIT_TEXT = 0x000000a0;
218 
219     /**
220      * Variation of {@link #TYPE_CLASS_TEXT}: entering text to filter contents
221      * of a list etc.
222      */
223     public static final int TYPE_TEXT_VARIATION_FILTER = 0x000000b0;
224 
225     /**
226      * Variation of {@link #TYPE_CLASS_TEXT}: entering text for phonetic
227      * pronunciation, such as a phonetic name field in contacts.
228      */
229     public static final int TYPE_TEXT_VARIATION_PHONETIC = 0x000000c0;
230 
231     // ----------------------------------------------------------------------
232     // ----------------------------------------------------------------------
233     // ----------------------------------------------------------------------
234 
235     /**
236      * Class for numeric text.  This class supports the following flag:
237      * {@link #TYPE_NUMBER_FLAG_SIGNED} and
238      * {@link #TYPE_NUMBER_FLAG_DECIMAL}.
239      */
240     public static final int TYPE_CLASS_NUMBER = 0x00000002;
241 
242     /**
243      * Flag of {@link #TYPE_CLASS_NUMBER}: the number is signed, allowing
244      * a positive or negative sign at the start.
245      */
246     public static final int TYPE_NUMBER_FLAG_SIGNED = 0x00001000;
247 
248     /**
249      * Flag of {@link #TYPE_CLASS_NUMBER}: the number is decimal, allowing
250      * a decimal point to provide fractional values.
251      */
252     public static final int TYPE_NUMBER_FLAG_DECIMAL = 0x00002000;
253 
254     // ----------------------------------------------------------------------
255     // ----------------------------------------------------------------------
256     // ----------------------------------------------------------------------
257 
258     /**
259      * Class for a phone number.  This class currently supports no variations
260      * or flags.
261      */
262     public static final int TYPE_CLASS_PHONE = 0x00000003;
263 
264     // ----------------------------------------------------------------------
265     // ----------------------------------------------------------------------
266     // ----------------------------------------------------------------------
267 
268     /**
269      * Class for dates and times.  It supports the
270      * following variations:
271      * {@link #TYPE_DATETIME_VARIATION_NORMAL}
272      * {@link #TYPE_DATETIME_VARIATION_DATE}, and
273      * {@link #TYPE_DATETIME_VARIATION_TIME},.
274      */
275     public static final int TYPE_CLASS_DATETIME = 0x00000004;
276 
277     /**
278      * Default variation of {@link #TYPE_CLASS_DATETIME}: allows entering
279      * both a date and time.
280      */
281     public static final int TYPE_DATETIME_VARIATION_NORMAL = 0x00000000;
282 
283     /**
284      * Default variation of {@link #TYPE_CLASS_DATETIME}: allows entering
285      * only a date.
286      */
287     public static final int TYPE_DATETIME_VARIATION_DATE = 0x00000010;
288 
289     /**
290      * Default variation of {@link #TYPE_CLASS_DATETIME}: allows entering
291      * only a time.
292      */
293     public static final int TYPE_DATETIME_VARIATION_TIME = 0x00000020;
294 }
295