19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.text;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.text.TextUtils;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Bit definitions for an integer defining the basic content type of text
23d3badad3aa7fd250a0a81549c6c3c15d8aee9f8dKenny Root * held in an {@link Editable} object. Supported classes may be combined
24d3badad3aa7fd250a0a81549c6c3c15d8aee9f8dKenny Root * with variations and flags to indicate desired behaviors.
25d3badad3aa7fd250a0a81549c6c3c15d8aee9f8dKenny Root *
26d3badad3aa7fd250a0a81549c6c3c15d8aee9f8dKenny Root * <h3>Examples</h3>
27d3badad3aa7fd250a0a81549c6c3c15d8aee9f8dKenny Root *
28d3badad3aa7fd250a0a81549c6c3c15d8aee9f8dKenny Root * <dl>
29d3badad3aa7fd250a0a81549c6c3c15d8aee9f8dKenny Root * <dt>A password field with with the password visible to the user:
30d3badad3aa7fd250a0a81549c6c3c15d8aee9f8dKenny Root * <dd>inputType = TYPE_CLASS_TEXT |
31d3badad3aa7fd250a0a81549c6c3c15d8aee9f8dKenny Root *     TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
32d3badad3aa7fd250a0a81549c6c3c15d8aee9f8dKenny Root *
33d3badad3aa7fd250a0a81549c6c3c15d8aee9f8dKenny Root * <dt>A multi-line postal address with automatic capitalization:
34d3badad3aa7fd250a0a81549c6c3c15d8aee9f8dKenny Root * <dd>inputType = TYPE_CLASS_TEXT |
35d3badad3aa7fd250a0a81549c6c3c15d8aee9f8dKenny Root *     TYPE_TEXT_VARIATION_POSTAL_ADDRESS |
36d3badad3aa7fd250a0a81549c6c3c15d8aee9f8dKenny Root *     TYPE_TEXT_FLAG_MULTI_LINE
37d3badad3aa7fd250a0a81549c6c3c15d8aee9f8dKenny Root *
38d3badad3aa7fd250a0a81549c6c3c15d8aee9f8dKenny Root * <dt>A time field:
39d3badad3aa7fd250a0a81549c6c3c15d8aee9f8dKenny Root * <dd>inputType = TYPE_CLASS_DATETIME |
40d3badad3aa7fd250a0a81549c6c3c15d8aee9f8dKenny Root *     TYPE_DATETIME_VARIATION_TIME
41d3badad3aa7fd250a0a81549c6c3c15d8aee9f8dKenny Root * </dl>
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic interface InputType {
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Mask of bits that determine the overall class
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of text being given.  Currently supported classes are:
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #TYPE_CLASS_TEXT}, {@link #TYPE_CLASS_NUMBER},
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #TYPE_CLASS_PHONE}, {@link #TYPE_CLASS_DATETIME}.
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If the class is not one you
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * understand, assume {@link #TYPE_CLASS_TEXT} with NO variation
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or flags.
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_MASK_CLASS = 0x0000000f;
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Mask of bits that determine the variation of
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the base content class.
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_MASK_VARIATION = 0x00000ff0;
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Mask of bits that provide addition bit flags
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of options.
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_MASK_FLAGS = 0x00fff000;
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Special content type for when no explicit type has been specified.
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This should be interpreted to mean that the target input connection
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is not rich, it can not process and show things like candidate text nor
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * retrieve the current text, so the input method will need to run in a
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * limited "generate key events" mode.
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_NULL = 0x00000000;
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // ----------------------------------------------------------------------
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // ----------------------------------------------------------------------
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // ----------------------------------------------------------------------
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Class for normal text.  This class supports the following flags (only
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * one of which should be set):
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #TYPE_TEXT_FLAG_CAP_CHARACTERS},
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #TYPE_TEXT_FLAG_CAP_WORDS}, and.
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #TYPE_TEXT_FLAG_CAP_SENTENCES}.  It also supports the
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * following variations:
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #TYPE_TEXT_VARIATION_NORMAL}, and
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #TYPE_TEXT_VARIATION_URI}.  If you do not recognize the
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * variation, normal should be assumed.
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_CLASS_TEXT = 0x00000001;
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Flag for {@link #TYPE_CLASS_TEXT}: capitalize all characters.  Overrides
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #TYPE_TEXT_FLAG_CAP_WORDS} and
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #TYPE_TEXT_FLAG_CAP_SENTENCES}.  This value is explicitly defined
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to be the same as {@link TextUtils#CAP_MODE_CHARACTERS}.
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_TEXT_FLAG_CAP_CHARACTERS = 0x00001000;
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Flag for {@link #TYPE_CLASS_TEXT}: capitalize first character of
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * all words.  Overrides {@link #TYPE_TEXT_FLAG_CAP_SENTENCES}.  This
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * value is explicitly defined
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to be the same as {@link TextUtils#CAP_MODE_WORDS}.
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_TEXT_FLAG_CAP_WORDS = 0x00002000;
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Flag for {@link #TYPE_CLASS_TEXT}: capitalize first character of
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * each sentence.  This value is explicitly defined
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to be the same as {@link TextUtils#CAP_MODE_SENTENCES}.
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_TEXT_FLAG_CAP_SENTENCES = 0x00004000;
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Flag for {@link #TYPE_CLASS_TEXT}: the user is entering free-form
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * text that should have auto-correction applied to it.
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_TEXT_FLAG_AUTO_CORRECT = 0x00008000;
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Flag for {@link #TYPE_CLASS_TEXT}: the text editor is performing
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * auto-completion of the text being entered based on its own semantics,
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * which it will present to the user as they type.  This generally means
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that the input method should not be showing candidates itself, but can
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * expect for the editor to supply its own completions/candidates from
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.view.inputmethod.InputMethodSession#displayCompletions
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * InputMethodSession.displayCompletions()} as a result of the editor calling
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.view.inputmethod.InputMethodManager#displayCompletions
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * InputMethodManager.displayCompletions()}.
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_TEXT_FLAG_AUTO_COMPLETE = 0x00010000;
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Flag for {@link #TYPE_CLASS_TEXT}: multiple lines of text can be
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * entered into the field.  If this flag is not set, the text field
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * will be constrained to a single line.
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_TEXT_FLAG_MULTI_LINE = 0x00020000;
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Flag for {@link #TYPE_CLASS_TEXT}: the regular text view associated
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * with this should not be multi-line, but when a fullscreen input method
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is providing text it should use multiple lines if it can.
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_TEXT_FLAG_IME_MULTI_LINE = 0x00040000;
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
14912cc9d82a6f3bd2aebad8ed97a29e2cbad3ec77aAmith Yamasani    /**
15012cc9d82a6f3bd2aebad8ed97a29e2cbad3ec77aAmith Yamasani     * Flag for {@link #TYPE_CLASS_TEXT}: the input method does not need to
15112cc9d82a6f3bd2aebad8ed97a29e2cbad3ec77aAmith Yamasani     * display any dictionary-based candidates. This is useful for text views that
15212cc9d82a6f3bd2aebad8ed97a29e2cbad3ec77aAmith Yamasani     * do not contain words from the language and do not benefit from any
15312cc9d82a6f3bd2aebad8ed97a29e2cbad3ec77aAmith Yamasani     * dictionary-based completions or corrections. It overrides the
15412cc9d82a6f3bd2aebad8ed97a29e2cbad3ec77aAmith Yamasani     * {@link #TYPE_TEXT_FLAG_AUTO_CORRECT} value when set.
15512cc9d82a6f3bd2aebad8ed97a29e2cbad3ec77aAmith Yamasani     */
15612cc9d82a6f3bd2aebad8ed97a29e2cbad3ec77aAmith Yamasani    public static final int TYPE_TEXT_FLAG_NO_SUGGESTIONS = 0x00080000;
15712cc9d82a6f3bd2aebad8ed97a29e2cbad3ec77aAmith Yamasani
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // ----------------------------------------------------------------------
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Default variation of {@link #TYPE_CLASS_TEXT}: plain old normal text.
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_TEXT_VARIATION_NORMAL = 0x00000000;
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Variation of {@link #TYPE_CLASS_TEXT}: entering a URI.
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_TEXT_VARIATION_URI = 0x00000010;
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Variation of {@link #TYPE_CLASS_TEXT}: entering an e-mail address.
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_TEXT_VARIATION_EMAIL_ADDRESS = 0x00000020;
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Variation of {@link #TYPE_CLASS_TEXT}: entering the subject line of
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * an e-mail.
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_TEXT_VARIATION_EMAIL_SUBJECT = 0x00000030;
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Variation of {@link #TYPE_CLASS_TEXT}: entering a short, possibly informal
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * message such as an instant message or a text message.
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_TEXT_VARIATION_SHORT_MESSAGE = 0x00000040;
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Variation of {@link #TYPE_CLASS_TEXT}: entering the content of a long, possibly
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * formal message such as the body of an e-mail.
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_TEXT_VARIATION_LONG_MESSAGE = 0x00000050;
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Variation of {@link #TYPE_CLASS_TEXT}: entering the name of a person.
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_TEXT_VARIATION_PERSON_NAME = 0x00000060;
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Variation of {@link #TYPE_CLASS_TEXT}: entering a postal mailing address.
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_TEXT_VARIATION_POSTAL_ADDRESS = 0x00000070;
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Variation of {@link #TYPE_CLASS_TEXT}: entering a password.
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_TEXT_VARIATION_PASSWORD = 0x00000080;
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2094df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * Variation of {@link #TYPE_CLASS_TEXT}: entering a password, which should
2104df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * be visible to the user.
2114df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     */
2124df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project    public static final int TYPE_TEXT_VARIATION_VISIBLE_PASSWORD = 0x00000090;
2134df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project
2144df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project    /**
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Variation of {@link #TYPE_CLASS_TEXT}: entering text inside of a web form.
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2174df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project    public static final int TYPE_TEXT_VARIATION_WEB_EDIT_TEXT = 0x000000a0;
2184df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project
2194df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project    /**
2204df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * Variation of {@link #TYPE_CLASS_TEXT}: entering text to filter contents
2214df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * of a list etc.
2224df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     */
2234df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project    public static final int TYPE_TEXT_VARIATION_FILTER = 0x000000b0;
2244df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project
2254df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project    /**
2264df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * Variation of {@link #TYPE_CLASS_TEXT}: entering text for phonetic
2274df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * pronunciation, such as a phonetic name field in contacts.
2284df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     */
2294df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project    public static final int TYPE_TEXT_VARIATION_PHONETIC = 0x000000c0;
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
231dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn    /**
232dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn     * Variation of {@link #TYPE_CLASS_TEXT}: entering e-mail address inside
233dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn     * of a web form.  This was added in
234dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn     * {@link android.os.Build.VERSION_CODES#HONEYCOMB}.  An IME must target
235dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn     * this API version or later to see this input type; if it doesn't, a request
236dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn     * for this type will be seen as {@link #TYPE_TEXT_VARIATION_EMAIL_ADDRESS}
237dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn     * when passed through {@link android.view.inputmethod.EditorInfo#makeCompatible(int)
238dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn     * EditorInfo.makeCompatible(int)}.
239dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn     */
240dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn    public static final int TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS = 0x000000d0;
241dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn
242dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn    /**
243dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn     * Variation of {@link #TYPE_CLASS_TEXT}: entering password inside
244dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn     * of a web form.  This was added in
245dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn     * {@link android.os.Build.VERSION_CODES#HONEYCOMB}.  An IME must target
246dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn     * this API version or later to see this input type; if it doesn't, a request
247dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn     * for this type will be seen as {@link #TYPE_TEXT_VARIATION_PASSWORD}
248dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn     * when passed through {@link android.view.inputmethod.EditorInfo#makeCompatible(int)
249dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn     * EditorInfo.makeCompatible(int)}.
250dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn     */
251dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn    public static final int TYPE_TEXT_VARIATION_WEB_PASSWORD = 0x000000e0;
252dea3ef7967228f0ddcc03f2455a4f1254758e584Dianne Hackborn
2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // ----------------------------------------------------------------------
2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // ----------------------------------------------------------------------
2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // ----------------------------------------------------------------------
2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Class for numeric text.  This class supports the following flag:
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #TYPE_NUMBER_FLAG_SIGNED} and
26082d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa     * {@link #TYPE_NUMBER_FLAG_DECIMAL}.  It also supports the following
26182d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa     * variations: {@link #TYPE_NUMBER_VARIATION_NORMAL} and
26282d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa     * {@link #TYPE_NUMBER_VARIATION_PASSWORD}.  If you do not recognize
26382d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa     * the variation, normal should be assumed.
2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_CLASS_NUMBER = 0x00000002;
2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Flag of {@link #TYPE_CLASS_NUMBER}: the number is signed, allowing
2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a positive or negative sign at the start.
2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_NUMBER_FLAG_SIGNED = 0x00001000;
2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Flag of {@link #TYPE_CLASS_NUMBER}: the number is decimal, allowing
2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a decimal point to provide fractional values.
2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_NUMBER_FLAG_DECIMAL = 0x00002000;
2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // ----------------------------------------------------------------------
28082d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa
28182d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa    /**
28282d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa     * Default variation of {@link #TYPE_CLASS_NUMBER}: plain normal
28382d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa     * numeric text.  This was added in
28482d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa     * {@link android.os.Build.VERSION_CODES#HONEYCOMB}.  An IME must target
28582d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa     * this API version or later to see this input type; if it doesn't, a request
28682d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa     * for this type will be dropped when passed through
28782d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa     * {@link android.view.inputmethod.EditorInfo#makeCompatible(int)
28882d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa     * EditorInfo.makeCompatible(int)}.
28982d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa     */
29082d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa    public static final int TYPE_NUMBER_VARIATION_NORMAL = 0x00000000;
29182d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa
29282d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa    /**
29382d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa     * Variation of {@link #TYPE_CLASS_NUMBER}: entering a numeric password.
29482d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa     * This was added in {@link android.os.Build.VERSION_CODES#HONEYCOMB}.  An
29582d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa     * IME must target this API version or later to see this input type; if it
29682d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa     * doesn't, a request for this type will be dropped when passed
29782d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa     * through {@link android.view.inputmethod.EditorInfo#makeCompatible(int)
29882d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa     * EditorInfo.makeCompatible(int)}.
29982d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa     */
30082d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa    public static final int TYPE_NUMBER_VARIATION_PASSWORD = 0x00000010;
30182d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa
30282d731ac5d28fb54c49948116786813a62b07b8bKen Wakasa    // ----------------------------------------------------------------------
3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // ----------------------------------------------------------------------
3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // ----------------------------------------------------------------------
3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Class for a phone number.  This class currently supports no variations
3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or flags.
3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_CLASS_PHONE = 0x00000003;
3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // ----------------------------------------------------------------------
3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // ----------------------------------------------------------------------
3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // ----------------------------------------------------------------------
3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Class for dates and times.  It supports the
3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * following variations:
3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #TYPE_DATETIME_VARIATION_NORMAL}
3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #TYPE_DATETIME_VARIATION_DATE}, and
3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #TYPE_DATETIME_VARIATION_TIME},.
3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_CLASS_DATETIME = 0x00000004;
3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Default variation of {@link #TYPE_CLASS_DATETIME}: allows entering
3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * both a date and time.
3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_DATETIME_VARIATION_NORMAL = 0x00000000;
3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Default variation of {@link #TYPE_CLASS_DATETIME}: allows entering
3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * only a date.
3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_DATETIME_VARIATION_DATE = 0x00000010;
3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Default variation of {@link #TYPE_CLASS_DATETIME}: allows entering
3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * only a time.
3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int TYPE_DATETIME_VARIATION_TIME = 0x00000020;
3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
343