SuggestionsInfo.java revision 1bedd99761e3d2acdac947d641e7fee5db556141
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 { 261bedd99761e3d2acdac947d641e7fee5db556141satok private static final String[] EMPTY = new String[0]; 271bedd99761e3d2acdac947d641e7fee5db556141satok 28988323c57bd25a58f05dfa492d9b9c8ab62c5153satok /** 29988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * Flag of the attributes of the suggestions that can be obtained by 303de3d6ad584d6f08f50aac1b04bc0fe6cb02fb09satok * {@link #getSuggestionsAttributes}: this tells that the requested word was found 31988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * in the dictionary in the text service. 32988323c57bd25a58f05dfa492d9b9c8ab62c5153satok */ 33988323c57bd25a58f05dfa492d9b9c8ab62c5153satok public static final int RESULT_ATTR_IN_THE_DICTIONARY = 0x0001; 34988323c57bd25a58f05dfa492d9b9c8ab62c5153satok /** 35988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * Flag of the attributes of the suggestions that can be obtained by 363de3d6ad584d6f08f50aac1b04bc0fe6cb02fb09satok * {@link #getSuggestionsAttributes}: this tells that the text service thinks the requested 373de3d6ad584d6f08f50aac1b04bc0fe6cb02fb09satok * word looks a typo. 38988323c57bd25a58f05dfa492d9b9c8ab62c5153satok */ 391bedd99761e3d2acdac947d641e7fee5db556141satok public static final int RESULT_ATTR_LOOKS_TYPO = 0x0002; 40988323c57bd25a58f05dfa492d9b9c8ab62c5153satok private final int mSuggestionsAttributes; 41988323c57bd25a58f05dfa492d9b9c8ab62c5153satok private final String[] mSuggestions; 421bedd99761e3d2acdac947d641e7fee5db556141satok private final boolean mSuggestionsAvailable; 43988323c57bd25a58f05dfa492d9b9c8ab62c5153satok private int mCookie; 44988323c57bd25a58f05dfa492d9b9c8ab62c5153satok private int mSequence; 45988323c57bd25a58f05dfa492d9b9c8ab62c5153satok 46988323c57bd25a58f05dfa492d9b9c8ab62c5153satok /** 47988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * Constructor. 48988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * @param suggestionsAttributes from the text service 49988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * @param suggestions from the text service 50988323c57bd25a58f05dfa492d9b9c8ab62c5153satok */ 51988323c57bd25a58f05dfa492d9b9c8ab62c5153satok public SuggestionsInfo(int suggestionsAttributes, String[] suggestions) { 521bedd99761e3d2acdac947d641e7fee5db556141satok mSuggestionsAttributes = suggestionsAttributes; 53988323c57bd25a58f05dfa492d9b9c8ab62c5153satok if (suggestions == null) { 541bedd99761e3d2acdac947d641e7fee5db556141satok mSuggestions = EMPTY; 551bedd99761e3d2acdac947d641e7fee5db556141satok mSuggestionsAvailable = false; 561bedd99761e3d2acdac947d641e7fee5db556141satok } else { 571bedd99761e3d2acdac947d641e7fee5db556141satok mSuggestions = suggestions; 581bedd99761e3d2acdac947d641e7fee5db556141satok mSuggestionsAvailable = true; 59988323c57bd25a58f05dfa492d9b9c8ab62c5153satok } 60988323c57bd25a58f05dfa492d9b9c8ab62c5153satok mCookie = 0; 61988323c57bd25a58f05dfa492d9b9c8ab62c5153satok mSequence = 0; 62988323c57bd25a58f05dfa492d9b9c8ab62c5153satok } 63988323c57bd25a58f05dfa492d9b9c8ab62c5153satok 64988323c57bd25a58f05dfa492d9b9c8ab62c5153satok /** 65988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * Constructor. 66988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * @param suggestionsAttributes from the text service 67988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * @param suggestions from the text service 68988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * @param cookie the cookie of the input TextInfo 69988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * @param sequence the cookie of the input TextInfo 70988323c57bd25a58f05dfa492d9b9c8ab62c5153satok */ 71988323c57bd25a58f05dfa492d9b9c8ab62c5153satok public SuggestionsInfo( 72988323c57bd25a58f05dfa492d9b9c8ab62c5153satok int suggestionsAttributes, String[] suggestions, int cookie, int sequence) { 73988323c57bd25a58f05dfa492d9b9c8ab62c5153satok if (suggestions == null) { 741bedd99761e3d2acdac947d641e7fee5db556141satok mSuggestions = EMPTY; 751bedd99761e3d2acdac947d641e7fee5db556141satok mSuggestionsAvailable = false; 761bedd99761e3d2acdac947d641e7fee5db556141satok } else { 771bedd99761e3d2acdac947d641e7fee5db556141satok mSuggestions = suggestions; 781bedd99761e3d2acdac947d641e7fee5db556141satok mSuggestionsAvailable = true; 79988323c57bd25a58f05dfa492d9b9c8ab62c5153satok } 80988323c57bd25a58f05dfa492d9b9c8ab62c5153satok mSuggestionsAttributes = suggestionsAttributes; 81988323c57bd25a58f05dfa492d9b9c8ab62c5153satok mCookie = cookie; 82988323c57bd25a58f05dfa492d9b9c8ab62c5153satok mSequence = sequence; 83988323c57bd25a58f05dfa492d9b9c8ab62c5153satok } 84988323c57bd25a58f05dfa492d9b9c8ab62c5153satok 85988323c57bd25a58f05dfa492d9b9c8ab62c5153satok public SuggestionsInfo(Parcel source) { 86988323c57bd25a58f05dfa492d9b9c8ab62c5153satok mSuggestionsAttributes = source.readInt(); 87988323c57bd25a58f05dfa492d9b9c8ab62c5153satok mSuggestions = source.readStringArray(); 88988323c57bd25a58f05dfa492d9b9c8ab62c5153satok mCookie = source.readInt(); 89988323c57bd25a58f05dfa492d9b9c8ab62c5153satok mSequence = source.readInt(); 901bedd99761e3d2acdac947d641e7fee5db556141satok mSuggestionsAvailable = source.readInt() == 1; 91988323c57bd25a58f05dfa492d9b9c8ab62c5153satok } 92988323c57bd25a58f05dfa492d9b9c8ab62c5153satok 93988323c57bd25a58f05dfa492d9b9c8ab62c5153satok /** 94988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * Used to package this object into a {@link Parcel}. 95988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * 96988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * @param dest The {@link Parcel} to be written. 97988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * @param flags The flags used for parceling. 98988323c57bd25a58f05dfa492d9b9c8ab62c5153satok */ 99988323c57bd25a58f05dfa492d9b9c8ab62c5153satok @Override 100988323c57bd25a58f05dfa492d9b9c8ab62c5153satok public void writeToParcel(Parcel dest, int flags) { 101988323c57bd25a58f05dfa492d9b9c8ab62c5153satok dest.writeInt(mSuggestionsAttributes); 102988323c57bd25a58f05dfa492d9b9c8ab62c5153satok dest.writeStringArray(mSuggestions); 103988323c57bd25a58f05dfa492d9b9c8ab62c5153satok dest.writeInt(mCookie); 104988323c57bd25a58f05dfa492d9b9c8ab62c5153satok dest.writeInt(mSequence); 1051bedd99761e3d2acdac947d641e7fee5db556141satok dest.writeInt(mSuggestionsAvailable ? 1 : 0); 106988323c57bd25a58f05dfa492d9b9c8ab62c5153satok } 107988323c57bd25a58f05dfa492d9b9c8ab62c5153satok 108988323c57bd25a58f05dfa492d9b9c8ab62c5153satok /** 109988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * Set the cookie and the sequence of SuggestionsInfo which are set to TextInfo from a client 110988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * application 111988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * @param cookie the cookie of an input TextInfo 112988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * @param sequence the cookie of an input TextInfo 113988323c57bd25a58f05dfa492d9b9c8ab62c5153satok */ 114988323c57bd25a58f05dfa492d9b9c8ab62c5153satok public void setCookieAndSequence(int cookie, int sequence) { 115988323c57bd25a58f05dfa492d9b9c8ab62c5153satok mCookie = cookie; 116988323c57bd25a58f05dfa492d9b9c8ab62c5153satok mSequence = sequence; 117988323c57bd25a58f05dfa492d9b9c8ab62c5153satok } 118988323c57bd25a58f05dfa492d9b9c8ab62c5153satok 119988323c57bd25a58f05dfa492d9b9c8ab62c5153satok /** 120988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * @return the cookie which may be set by a client application 121988323c57bd25a58f05dfa492d9b9c8ab62c5153satok */ 122988323c57bd25a58f05dfa492d9b9c8ab62c5153satok public int getCookie() { 123988323c57bd25a58f05dfa492d9b9c8ab62c5153satok return mCookie; 124988323c57bd25a58f05dfa492d9b9c8ab62c5153satok } 125988323c57bd25a58f05dfa492d9b9c8ab62c5153satok 126988323c57bd25a58f05dfa492d9b9c8ab62c5153satok /** 127988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * @return the sequence which may be set by a client application 128988323c57bd25a58f05dfa492d9b9c8ab62c5153satok */ 129988323c57bd25a58f05dfa492d9b9c8ab62c5153satok public int getSequence() { 130988323c57bd25a58f05dfa492d9b9c8ab62c5153satok return mSequence; 131988323c57bd25a58f05dfa492d9b9c8ab62c5153satok } 132988323c57bd25a58f05dfa492d9b9c8ab62c5153satok 133988323c57bd25a58f05dfa492d9b9c8ab62c5153satok /** 134988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * @return the attributes of suggestions. This includes whether the spell checker has the word 135988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * in its dictionary or not and whether the spell checker has confident suggestions for the 136988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * word or not. 137988323c57bd25a58f05dfa492d9b9c8ab62c5153satok */ 138988323c57bd25a58f05dfa492d9b9c8ab62c5153satok public int getSuggestionsAttributes() { 139988323c57bd25a58f05dfa492d9b9c8ab62c5153satok return mSuggestionsAttributes; 140988323c57bd25a58f05dfa492d9b9c8ab62c5153satok } 141988323c57bd25a58f05dfa492d9b9c8ab62c5153satok 142988323c57bd25a58f05dfa492d9b9c8ab62c5153satok /** 1431bedd99761e3d2acdac947d641e7fee5db556141satok * @return the count of the suggestions. If there's no suggestions at all, this method returns 1441bedd99761e3d2acdac947d641e7fee5db556141satok * -1. Even if this method returns 0, it doesn't necessarily mean that there are no suggestions 1451bedd99761e3d2acdac947d641e7fee5db556141satok * for the requested word. For instance, the caller could have been asked to limit the maximum 1461bedd99761e3d2acdac947d641e7fee5db556141satok * number of suggestions returned. 147988323c57bd25a58f05dfa492d9b9c8ab62c5153satok */ 148988323c57bd25a58f05dfa492d9b9c8ab62c5153satok public int getSuggestionsCount() { 1491bedd99761e3d2acdac947d641e7fee5db556141satok if (!mSuggestionsAvailable) { 1501bedd99761e3d2acdac947d641e7fee5db556141satok return -1; 1511bedd99761e3d2acdac947d641e7fee5db556141satok } 152988323c57bd25a58f05dfa492d9b9c8ab62c5153satok return mSuggestions.length; 153988323c57bd25a58f05dfa492d9b9c8ab62c5153satok } 154988323c57bd25a58f05dfa492d9b9c8ab62c5153satok 155988323c57bd25a58f05dfa492d9b9c8ab62c5153satok /** 156988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * @param i the id of suggestions 157988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * @return the suggestion at the specified id 158988323c57bd25a58f05dfa492d9b9c8ab62c5153satok */ 159988323c57bd25a58f05dfa492d9b9c8ab62c5153satok public String getSuggestionAt(int i) { 160988323c57bd25a58f05dfa492d9b9c8ab62c5153satok return mSuggestions[i]; 161988323c57bd25a58f05dfa492d9b9c8ab62c5153satok } 162988323c57bd25a58f05dfa492d9b9c8ab62c5153satok 163988323c57bd25a58f05dfa492d9b9c8ab62c5153satok /** 164988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * Used to make this class parcelable. 165988323c57bd25a58f05dfa492d9b9c8ab62c5153satok */ 166988323c57bd25a58f05dfa492d9b9c8ab62c5153satok public static final Parcelable.Creator<SuggestionsInfo> CREATOR 167988323c57bd25a58f05dfa492d9b9c8ab62c5153satok = new Parcelable.Creator<SuggestionsInfo>() { 168988323c57bd25a58f05dfa492d9b9c8ab62c5153satok @Override 169988323c57bd25a58f05dfa492d9b9c8ab62c5153satok public SuggestionsInfo createFromParcel(Parcel source) { 170988323c57bd25a58f05dfa492d9b9c8ab62c5153satok return new SuggestionsInfo(source); 171988323c57bd25a58f05dfa492d9b9c8ab62c5153satok } 172988323c57bd25a58f05dfa492d9b9c8ab62c5153satok 173988323c57bd25a58f05dfa492d9b9c8ab62c5153satok @Override 174988323c57bd25a58f05dfa492d9b9c8ab62c5153satok public SuggestionsInfo[] newArray(int size) { 175988323c57bd25a58f05dfa492d9b9c8ab62c5153satok return new SuggestionsInfo[size]; 176988323c57bd25a58f05dfa492d9b9c8ab62c5153satok } 177988323c57bd25a58f05dfa492d9b9c8ab62c5153satok }; 178988323c57bd25a58f05dfa492d9b9c8ab62c5153satok 179988323c57bd25a58f05dfa492d9b9c8ab62c5153satok /** 180988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * Used to make this class parcelable. 181988323c57bd25a58f05dfa492d9b9c8ab62c5153satok */ 182988323c57bd25a58f05dfa492d9b9c8ab62c5153satok @Override 183988323c57bd25a58f05dfa492d9b9c8ab62c5153satok public int describeContents() { 184988323c57bd25a58f05dfa492d9b9c8ab62c5153satok return 0; 185988323c57bd25a58f05dfa492d9b9c8ab62c5153satok } 186988323c57bd25a58f05dfa492d9b9c8ab62c5153satok} 187