SpellCheckerInfo.java revision 562ab585f9e413d9696ee250e5ec02f95889a157
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.content.ComponentName;
20988323c57bd25a58f05dfa492d9b9c8ab62c5153satokimport android.content.Context;
21562ab585f9e413d9696ee250e5ec02f95889a157satokimport android.content.pm.PackageManager;
22988323c57bd25a58f05dfa492d9b9c8ab62c5153satokimport android.content.pm.ResolveInfo;
23988323c57bd25a58f05dfa492d9b9c8ab62c5153satokimport android.content.pm.ServiceInfo;
24562ab585f9e413d9696ee250e5ec02f95889a157satokimport android.graphics.drawable.Drawable;
25988323c57bd25a58f05dfa492d9b9c8ab62c5153satokimport android.os.Parcel;
26988323c57bd25a58f05dfa492d9b9c8ab62c5153satokimport android.os.Parcelable;
27988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
28988323c57bd25a58f05dfa492d9b9c8ab62c5153satok/**
29988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * This class is used to specify meta information of an spell checker.
30988323c57bd25a58f05dfa492d9b9c8ab62c5153satok */
31988323c57bd25a58f05dfa492d9b9c8ab62c5153satokpublic final class SpellCheckerInfo implements Parcelable {
32988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    private final ResolveInfo mService;
33988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    private final String mId;
34988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
35988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
36988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Constructor.
37988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @hide
38988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
39988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public SpellCheckerInfo(Context context, ResolveInfo service) {
40988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mService = service;
41988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        ServiceInfo si = service.serviceInfo;
42988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mId = new ComponentName(si.packageName, si.name).flattenToShortString();
43988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
44988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
45988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
46988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Constructor.
47988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @hide
48988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
49988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public SpellCheckerInfo(Parcel source) {
50988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mId = source.readString();
51988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mService = ResolveInfo.CREATOR.createFromParcel(source);
52988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
53988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
54988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
55988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Return a unique ID for this spell checker.  The ID is generated from
56988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * the package and class name implementing the method.
57988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
58988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public String getId() {
59988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        return mId;
60988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
61988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
62988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
63988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
64988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Return the component of the service that implements.
65988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
66988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public ComponentName getComponent() {
67988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        return new ComponentName(
68988323c57bd25a58f05dfa492d9b9c8ab62c5153satok                mService.serviceInfo.packageName, mService.serviceInfo.name);
69988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
70988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
71988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
72988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Return the .apk package that implements this input method.
73988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
74988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public String getPackageName() {
75988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        return mService.serviceInfo.packageName;
76988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
77988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
78988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
79988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Used to package this object into a {@link Parcel}.
80988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     *
81988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param dest The {@link Parcel} to be written.
82988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param flags The flags used for parceling.
83988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
84988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    @Override
85988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public void writeToParcel(Parcel dest, int flags) {
86988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        dest.writeString(mId);
87988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mService.writeToParcel(dest, flags);
88988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
89988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
90988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
91988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
92988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Used to make this class parcelable.
93988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
94988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public static final Parcelable.Creator<SpellCheckerInfo> CREATOR
95988323c57bd25a58f05dfa492d9b9c8ab62c5153satok            = new Parcelable.Creator<SpellCheckerInfo>() {
96988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        @Override
97988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        public SpellCheckerInfo createFromParcel(Parcel source) {
98988323c57bd25a58f05dfa492d9b9c8ab62c5153satok            return new SpellCheckerInfo(source);
99988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        }
100988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
101988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        @Override
102988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        public SpellCheckerInfo[] newArray(int size) {
103988323c57bd25a58f05dfa492d9b9c8ab62c5153satok            return new SpellCheckerInfo[size];
104988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        }
105988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    };
106988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
107988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
108562ab585f9e413d9696ee250e5ec02f95889a157satok     * Load the user-displayed label for this spell checker.
109562ab585f9e413d9696ee250e5ec02f95889a157satok     *
110562ab585f9e413d9696ee250e5ec02f95889a157satok     * @param pm Supply a PackageManager used to load the spell checker's resources.
111562ab585f9e413d9696ee250e5ec02f95889a157satok     */
112562ab585f9e413d9696ee250e5ec02f95889a157satok    public CharSequence loadLabel(PackageManager pm) {
113562ab585f9e413d9696ee250e5ec02f95889a157satok        return mService.loadLabel(pm);
114562ab585f9e413d9696ee250e5ec02f95889a157satok    }
115562ab585f9e413d9696ee250e5ec02f95889a157satok
116562ab585f9e413d9696ee250e5ec02f95889a157satok    /**
117562ab585f9e413d9696ee250e5ec02f95889a157satok     * Load the user-displayed icon for this spell checker.
118562ab585f9e413d9696ee250e5ec02f95889a157satok     *
119562ab585f9e413d9696ee250e5ec02f95889a157satok     * @param pm Supply a PackageManager used to load the spell checker's resources.
120562ab585f9e413d9696ee250e5ec02f95889a157satok     */
121562ab585f9e413d9696ee250e5ec02f95889a157satok    public Drawable loadIcon(PackageManager pm) {
122562ab585f9e413d9696ee250e5ec02f95889a157satok        return mService.loadIcon(pm);
123562ab585f9e413d9696ee250e5ec02f95889a157satok    }
124562ab585f9e413d9696ee250e5ec02f95889a157satok
125562ab585f9e413d9696ee250e5ec02f95889a157satok    /**
126988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Used to make this class parcelable.
127988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
128988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    @Override
129988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public int describeContents() {
130988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        return 0;
131988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
132988323c57bd25a58f05dfa492d9b9c8ab62c5153satok}
133