SuggestionsInfo.java revision 3de3d6ad584d6f08f50aac1b04bc0fe6cb02fb09
1988323c57bd25a58f05dfa492d9b9c8ab62c5153satok/*
2988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * Copyright (C) 2011 The Android Open Source Project
3988323c57bd25a58f05dfa492d9b9c8ab62c5153satok *
4988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * use this file except in compliance with the License. You may obtain a copy of
6988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * the License at
7988323c57bd25a58f05dfa492d9b9c8ab62c5153satok *
8988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * http://www.apache.org/licenses/LICENSE-2.0
9988323c57bd25a58f05dfa492d9b9c8ab62c5153satok *
10988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * Unless required by applicable law or agreed to in writing, software
11988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * License for the specific language governing permissions and limitations under
14988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * the License.
15988323c57bd25a58f05dfa492d9b9c8ab62c5153satok */
16988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
17988323c57bd25a58f05dfa492d9b9c8ab62c5153satokpackage android.view.textservice;
18988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
19988323c57bd25a58f05dfa492d9b9c8ab62c5153satokimport android.os.Parcel;
20988323c57bd25a58f05dfa492d9b9c8ab62c5153satokimport android.os.Parcelable;
21988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
22988323c57bd25a58f05dfa492d9b9c8ab62c5153satok/**
23988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * This class contains a metadata of suggestions from the text service
24988323c57bd25a58f05dfa492d9b9c8ab62c5153satok */
25988323c57bd25a58f05dfa492d9b9c8ab62c5153satokpublic final class SuggestionsInfo implements Parcelable {
26988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
27988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Flag of the attributes of the suggestions that can be obtained by
283de3d6ad584d6f08f50aac1b04bc0fe6cb02fb09satok     * {@link #getSuggestionsAttributes}: this tells that the requested word was found
29988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * in the dictionary in the text service.
30988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
31988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public static final int RESULT_ATTR_IN_THE_DICTIONARY = 0x0001;
32988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /** Flag of the attributes of the suggestions that can be obtained by
333de3d6ad584d6f08f50aac1b04bc0fe6cb02fb09satok     * {@link #getSuggestionsAttributes}: this tells that there are one or more suggestions
343de3d6ad584d6f08f50aac1b04bc0fe6cb02fb09satok     * available for the requested word.  This doesn't necessarily mean that the suggestions
353de3d6ad584d6f08f50aac1b04bc0fe6cb02fb09satok     * are actually in this SuggestionsInfo.  For instance, the caller could have been asked to
363de3d6ad584d6f08f50aac1b04bc0fe6cb02fb09satok     * limit the maximum number of suggestions returned.
37988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
38988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public static final int RESULT_ATTR_SUGGESTIONS_AVAILABLE = 0x0002;
39988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
40988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Flag of the attributes of the suggestions that can be obtained by
413de3d6ad584d6f08f50aac1b04bc0fe6cb02fb09satok     * {@link #getSuggestionsAttributes}: this tells that the text service thinks the requested
423de3d6ad584d6f08f50aac1b04bc0fe6cb02fb09satok     * word looks a typo.
43988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
44988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public static final int RESULT_ATTR_LOOKS_TYPO = 0x0004;
45988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    private final int mSuggestionsAttributes;
46988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    private final String[] mSuggestions;
47988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    private int mCookie;
48988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    private int mSequence;
49988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
50988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
51988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Constructor.
52988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param suggestionsAttributes from the text service
53988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param suggestions from the text service
54988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
55988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public SuggestionsInfo(int suggestionsAttributes, String[] suggestions) {
56988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        if (suggestions == null) {
57988323c57bd25a58f05dfa492d9b9c8ab62c5153satok            throw new NullPointerException();
58988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        }
59988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mSuggestionsAttributes = suggestionsAttributes;
60988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mSuggestions = suggestions;
61988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mCookie = 0;
62988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mSequence = 0;
63988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
64988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
65988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
66988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Constructor.
67988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param suggestionsAttributes from the text service
68988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param suggestions from the text service
69988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param cookie the cookie of the input TextInfo
70988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param sequence the cookie of the input TextInfo
71988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
72988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public SuggestionsInfo(
73988323c57bd25a58f05dfa492d9b9c8ab62c5153satok            int suggestionsAttributes, String[] suggestions, int cookie, int sequence) {
74988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        if (suggestions == null) {
75988323c57bd25a58f05dfa492d9b9c8ab62c5153satok            throw new NullPointerException();
76988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        }
77988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mSuggestionsAttributes = suggestionsAttributes;
78988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mSuggestions = suggestions;
79988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mCookie = cookie;
80988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mSequence = sequence;
81988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
82988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
83988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public SuggestionsInfo(Parcel source) {
84988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mSuggestionsAttributes = source.readInt();
85988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mSuggestions = source.readStringArray();
86988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mCookie = source.readInt();
87988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mSequence = source.readInt();
88988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
89988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
90988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
91988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Used to package this object into a {@link Parcel}.
92988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     *
93988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param dest The {@link Parcel} to be written.
94988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param flags The flags used for parceling.
95988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
96988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    @Override
97988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public void writeToParcel(Parcel dest, int flags) {
98988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        dest.writeInt(mSuggestionsAttributes);
99988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        dest.writeStringArray(mSuggestions);
100988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        dest.writeInt(mCookie);
101988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        dest.writeInt(mSequence);
102988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
103988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
104988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
105988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Set the cookie and the sequence of SuggestionsInfo which are set to TextInfo from a client
106988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * application
107988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param cookie the cookie of an input TextInfo
108988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param sequence the cookie of an input TextInfo
109988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
110988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public void setCookieAndSequence(int cookie, int sequence) {
111988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mCookie = cookie;
112988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mSequence = sequence;
113988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
114988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
115988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
116988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @return the cookie which may be set by a client application
117988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
118988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public int getCookie() {
119988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        return mCookie;
120988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
121988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
122988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
123988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @return the sequence which may be set by a client application
124988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
125988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public int getSequence() {
126988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        return mSequence;
127988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
128988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
129988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
130988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @return the attributes of suggestions. This includes whether the spell checker has the word
131988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * in its dictionary or not and whether the spell checker has confident suggestions for the
132988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * word or not.
133988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
134988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public int getSuggestionsAttributes() {
135988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        return mSuggestionsAttributes;
136988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
137988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
138988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
139988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @return the count of suggestions
140988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
141988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public int getSuggestionsCount() {
142988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        return mSuggestions.length;
143988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
144988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
145988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
146988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param i the id of suggestions
147988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @return the suggestion at the specified id
148988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
149988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public String getSuggestionAt(int i) {
150988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        return mSuggestions[i];
151988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
152988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
153988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
154988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Used to make this class parcelable.
155988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
156988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public static final Parcelable.Creator<SuggestionsInfo> CREATOR
157988323c57bd25a58f05dfa492d9b9c8ab62c5153satok            = new Parcelable.Creator<SuggestionsInfo>() {
158988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        @Override
159988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        public SuggestionsInfo createFromParcel(Parcel source) {
160988323c57bd25a58f05dfa492d9b9c8ab62c5153satok            return new SuggestionsInfo(source);
161988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        }
162988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
163988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        @Override
164988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        public SuggestionsInfo[] newArray(int size) {
165988323c57bd25a58f05dfa492d9b9c8ab62c5153satok            return new SuggestionsInfo[size];
166988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        }
167988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    };
168988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
169988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
170988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Used to make this class parcelable.
171988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
172988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    @Override
173988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public int describeContents() {
174988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        return 0;
175988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
176988323c57bd25a58f05dfa492d9b9c8ab62c5153satok}
177