1863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton/*
2863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton * Copyright (C) 2009 The Android Open Source Project
3863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton *
4863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton * Licensed under the Apache License, Version 2.0 (the "License");
5863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton * you may not use this file except in compliance with the License.
6863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton * You may obtain a copy of the License at
7863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton *
8863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton *      http://www.apache.org/licenses/LICENSE-2.0
9863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton *
10863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton * Unless required by applicable law or agreed to in writing, software
11863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton * distributed under the License is distributed on an "AS IS" BASIS,
12863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton * See the License for the specific language governing permissions and
14863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton * limitations under the License.
15863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton */
16863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
17863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonpackage com.android.loaderapp.model;
18863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
19863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonimport com.android.loaderapp.R;
20863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonimport com.google.android.collect.Lists;
21863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
22863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonimport android.content.ContentValues;
23863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonimport android.content.Context;
24863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonimport android.content.res.Resources;
25863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonimport android.database.Cursor;
26863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.BaseTypes;
27863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.Email;
28863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.Event;
29863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.Im;
30863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.Nickname;
31863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.Note;
32863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.Organization;
33863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.Phone;
34863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.Photo;
35863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.StructuredName;
36863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
37863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.Website;
38863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonimport android.view.inputmethod.EditorInfo;
39863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
40863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonimport java.util.Locale;
41863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
42863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamiltonpublic class FallbackSource extends ContactsSource {
43863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected static final int FLAGS_PHONE = EditorInfo.TYPE_CLASS_PHONE;
44863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected static final int FLAGS_EMAIL = EditorInfo.TYPE_CLASS_TEXT
45863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            | EditorInfo.TYPE_TEXT_VARIATION_EMAIL_ADDRESS;
46863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected static final int FLAGS_PERSON_NAME = EditorInfo.TYPE_CLASS_TEXT
47863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            | EditorInfo.TYPE_TEXT_FLAG_CAP_WORDS | EditorInfo.TYPE_TEXT_VARIATION_PERSON_NAME;
48863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected static final int FLAGS_PHONETIC = EditorInfo.TYPE_CLASS_TEXT
49863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            | EditorInfo.TYPE_TEXT_VARIATION_PHONETIC;
50863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected static final int FLAGS_GENERIC_NAME = EditorInfo.TYPE_CLASS_TEXT
51863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            | EditorInfo.TYPE_TEXT_FLAG_CAP_WORDS;
52863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected static final int FLAGS_NOTE = EditorInfo.TYPE_CLASS_TEXT
53863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            | EditorInfo.TYPE_TEXT_FLAG_CAP_SENTENCES | EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE;
54863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected static final int FLAGS_WEBSITE = EditorInfo.TYPE_CLASS_TEXT
55863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            | EditorInfo.TYPE_TEXT_VARIATION_URI;
56863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected static final int FLAGS_POSTAL = EditorInfo.TYPE_CLASS_TEXT
57863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            | EditorInfo.TYPE_TEXT_VARIATION_POSTAL_ADDRESS | EditorInfo.TYPE_TEXT_FLAG_CAP_WORDS
58863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            | EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE;
59863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
60863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    public FallbackSource() {
61863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        this.accountType = null;
62863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        this.titleRes = R.string.account_phone;
63863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        this.iconRes = R.drawable.ic_launcher_contacts;
64863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
65863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
66863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    @Override
67863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected void inflate(Context context, int inflateLevel) {
68863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
69863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        inflateStructuredName(context, inflateLevel);
70863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        inflateNickname(context, inflateLevel);
71863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        inflatePhone(context, inflateLevel);
72863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        inflateEmail(context, inflateLevel);
73863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        inflateStructuredPostal(context, inflateLevel);
74863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        inflateIm(context, inflateLevel);
75863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        inflateOrganization(context, inflateLevel);
76863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        inflatePhoto(context, inflateLevel);
77863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        inflateNote(context, inflateLevel);
78863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        inflateWebsite(context, inflateLevel);
79863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        inflateEvent(context, inflateLevel);
80863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
81863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        setInflatedLevel(inflateLevel);
82863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
83863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
84863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
85863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected EditType buildPhoneType(int type) {
86863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        return new EditType(type, Phone.getTypeLabelResource(type));
87863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
88863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
89863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected EditType buildEmailType(int type) {
90863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        return new EditType(type, Email.getTypeLabelResource(type));
91863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
92863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
93863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected EditType buildPostalType(int type) {
94863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        return new EditType(type, StructuredPostal.getTypeLabelResource(type));
95863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
96863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
97863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected EditType buildImType(int type) {
98863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        return new EditType(type, Im.getProtocolLabelResource(type));
99863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
100863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
101863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected EditType buildOrgType(int type) {
102863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        return new EditType(type, Organization.getTypeLabelResource(type));
103863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
104863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
105863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected DataKind inflateStructuredName(Context context, int inflateLevel) {
106863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        DataKind kind = getKindForMimetype(StructuredName.CONTENT_ITEM_TYPE);
107863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        if (kind == null) {
108863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind = addKind(new DataKind(StructuredName.CONTENT_ITEM_TYPE,
109863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                    R.string.nameLabelsGroup, -1, -1, true));
110863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
111863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
112863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        if (inflateLevel >= ContactsSource.LEVEL_CONSTRAINTS) {
113863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            boolean displayOrderPrimary =
114863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                    context.getResources().getBoolean(R.bool.config_editor_field_order_primary);
115863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
116863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.fieldList = Lists.newArrayList();
117863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix,
118863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                    FLAGS_PERSON_NAME).setOptional(true));
119863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            if (!displayOrderPrimary) {
120863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME, R.string.name_family,
121863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        FLAGS_PERSON_NAME));
122863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, R.string.name_middle,
123863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        FLAGS_PERSON_NAME).setOptional(true));
124863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME, R.string.name_given,
125863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        FLAGS_PERSON_NAME));
126863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredName.SUFFIX, R.string.name_suffix,
127863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        FLAGS_PERSON_NAME).setOptional(true));
128863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME,
129863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        R.string.name_phonetic_family, FLAGS_PHONETIC).setOptional(true));
130863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredName.PHONETIC_MIDDLE_NAME,
131863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        R.string.name_phonetic_middle, FLAGS_PHONETIC).setOptional(true));
132863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME,
133863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        R.string.name_phonetic_given, FLAGS_PHONETIC).setOptional(true));
134863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            } else {
135863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME, R.string.name_given,
136863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        FLAGS_PERSON_NAME));
137863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, R.string.name_middle,
138863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        FLAGS_PERSON_NAME).setOptional(true));
139863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME, R.string.name_family,
140863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        FLAGS_PERSON_NAME));
141863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredName.SUFFIX, R.string.name_suffix,
142863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        FLAGS_PERSON_NAME).setOptional(true));
143863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME,
144863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        R.string.name_phonetic_given, FLAGS_PHONETIC).setOptional(true));
145863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredName.PHONETIC_MIDDLE_NAME,
146863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        R.string.name_phonetic_middle, FLAGS_PHONETIC).setOptional(true));
147863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME,
148863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        R.string.name_phonetic_family, FLAGS_PHONETIC).setOptional(true));
149863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            }
150863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
151863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
152863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        return kind;
153863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
154863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
155863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected DataKind inflateNickname(Context context, int inflateLevel) {
156863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        DataKind kind = getKindForMimetype(Nickname.CONTENT_ITEM_TYPE);
157863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        if (kind == null) {
158863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind = addKind(new DataKind(Nickname.CONTENT_ITEM_TYPE,
159863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                    R.string.nicknameLabelsGroup, -1, 115, true));
160863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.secondary = true;
161863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.isList = false;
162863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.actionHeader = new SimpleInflater(R.string.nicknameLabelsGroup);
163863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.actionBody = new SimpleInflater(Nickname.NAME);
164863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
165863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
166863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        if (inflateLevel >= ContactsSource.LEVEL_CONSTRAINTS) {
167863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.defaultValues = new ContentValues();
168863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.defaultValues.put(Nickname.TYPE, Nickname.TYPE_DEFAULT);
169863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
170863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.fieldList = Lists.newArrayList();
171863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.fieldList.add(new EditField(Nickname.NAME, R.string.nicknameLabelsGroup,
172863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                    FLAGS_PERSON_NAME));
173863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
174863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
175863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        return kind;
176863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
177863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
178863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected DataKind inflatePhone(Context context, int inflateLevel) {
179863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        DataKind kind = getKindForMimetype(Phone.CONTENT_ITEM_TYPE);
180863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        if (kind == null) {
181863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind = addKind(new DataKind(Phone.CONTENT_ITEM_TYPE, R.string.phoneLabelsGroup,
182863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                    android.R.drawable.sym_action_call, 10, true));
183863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.iconAltRes = R.drawable.sym_action_sms;
184863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.actionHeader = new PhoneActionInflater();
185863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.actionAltHeader = new PhoneActionAltInflater();
186863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.actionBody = new SimpleInflater(Phone.NUMBER);
187863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
188863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
189863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        if (inflateLevel >= ContactsSource.LEVEL_CONSTRAINTS) {
190863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeColumn = Phone.TYPE;
191863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList = Lists.newArrayList();
192863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_HOME));
193863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_MOBILE));
194863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_WORK));
195863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_WORK).setSecondary(true));
196863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_HOME).setSecondary(true));
197863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_PAGER).setSecondary(true));
198863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_OTHER));
199863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_CUSTOM).setSecondary(true).setCustomColumn(
200863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                    Phone.LABEL));
201863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_CALLBACK).setSecondary(true));
202863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_CAR).setSecondary(true));
203863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_COMPANY_MAIN).setSecondary(true));
204863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_ISDN).setSecondary(true));
205863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_MAIN).setSecondary(true));
206863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_OTHER_FAX).setSecondary(true));
207863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_RADIO).setSecondary(true));
208863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_TELEX).setSecondary(true));
209863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_TTY_TDD).setSecondary(true));
210863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_WORK_MOBILE).setSecondary(true));
211863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_WORK_PAGER).setSecondary(true));
212863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_ASSISTANT).setSecondary(true)
213863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                    .setCustomColumn(Phone.LABEL));
214863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_MMS).setSecondary(true));
215863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
216863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.fieldList = Lists.newArrayList();
217863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.fieldList.add(new EditField(Phone.NUMBER, R.string.phoneLabelsGroup, FLAGS_PHONE));
218863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
219863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
220863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        return kind;
221863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
222863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
223863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected DataKind inflateEmail(Context context, int inflateLevel) {
224863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        DataKind kind = getKindForMimetype(Email.CONTENT_ITEM_TYPE);
225863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        if (kind == null) {
226863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind = addKind(new DataKind(Email.CONTENT_ITEM_TYPE,
227863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                    R.string.emailLabelsGroup, android.R.drawable.sym_action_email, 15, true));
228863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.actionHeader = new EmailActionInflater();
229863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.actionBody = new SimpleInflater(Email.DATA);
230863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
231863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
232863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        if (inflateLevel >= ContactsSource.LEVEL_CONSTRAINTS) {
233863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeColumn = Email.TYPE;
234863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList = Lists.newArrayList();
235863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildEmailType(Email.TYPE_HOME));
236863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildEmailType(Email.TYPE_WORK));
237863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildEmailType(Email.TYPE_OTHER));
238863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildEmailType(Email.TYPE_MOBILE));
239863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildEmailType(Email.TYPE_CUSTOM).setSecondary(true).setCustomColumn(
240863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                    Email.LABEL));
241863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
242863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.fieldList = Lists.newArrayList();
243863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.fieldList.add(new EditField(Email.DATA, R.string.emailLabelsGroup, FLAGS_EMAIL));
244863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
245863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
246863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        return kind;
247863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
248863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
249863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected DataKind inflateStructuredPostal(Context context, int inflateLevel) {
250863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        DataKind kind = getKindForMimetype(StructuredPostal.CONTENT_ITEM_TYPE);
251863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        if (kind == null) {
252863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind = addKind(new DataKind(StructuredPostal.CONTENT_ITEM_TYPE,
253863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                    R.string.postalLabelsGroup, R.drawable.sym_action_map, 25, true));
254863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.actionHeader = new PostalActionInflater();
255863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.actionBody = new SimpleInflater(StructuredPostal.FORMATTED_ADDRESS);
256863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
257863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
258863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        if (inflateLevel >= ContactsSource.LEVEL_CONSTRAINTS) {
259863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            final boolean useJapaneseOrder =
260863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                Locale.JAPANESE.getLanguage().equals(Locale.getDefault().getLanguage());
261863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeColumn = StructuredPostal.TYPE;
262863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList = Lists.newArrayList();
263863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPostalType(StructuredPostal.TYPE_HOME));
264863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPostalType(StructuredPostal.TYPE_WORK));
265863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPostalType(StructuredPostal.TYPE_OTHER));
266863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildPostalType(StructuredPostal.TYPE_CUSTOM).setSecondary(true)
267863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                    .setCustomColumn(StructuredPostal.LABEL));
268863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
269863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.fieldList = Lists.newArrayList();
270863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
271863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            if (useJapaneseOrder) {
272863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.COUNTRY,
273863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        R.string.postal_country, FLAGS_POSTAL).setOptional(true));
274863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.POSTCODE,
275863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        R.string.postal_postcode, FLAGS_POSTAL));
276863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.REGION,
277863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        R.string.postal_region, FLAGS_POSTAL));
278863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.CITY,
279863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        R.string.postal_city, FLAGS_POSTAL));
280863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.NEIGHBORHOOD,
281863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        R.string.postal_neighborhood, FLAGS_POSTAL).setOptional(true));
282863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.STREET,
283863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        R.string.postal_street, FLAGS_POSTAL));
284863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.POBOX,
285863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        R.string.postal_pobox, FLAGS_POSTAL).setOptional(true));
286863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            } else {
287863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.STREET,
288863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        R.string.postal_street, FLAGS_POSTAL));
289863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.POBOX,
290863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        R.string.postal_pobox, FLAGS_POSTAL).setOptional(true));
291863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.NEIGHBORHOOD,
292863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        R.string.postal_neighborhood, FLAGS_POSTAL).setOptional(true));
293863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.CITY,
294863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        R.string.postal_city, FLAGS_POSTAL));
295863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.REGION,
296863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        R.string.postal_region, FLAGS_POSTAL));
297863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.POSTCODE,
298863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        R.string.postal_postcode, FLAGS_POSTAL));
299863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.COUNTRY,
300863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                        R.string.postal_country, FLAGS_POSTAL).setOptional(true));
301863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            }
302863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
303863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
304863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        return kind;
305863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
306863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
307863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected DataKind inflateIm(Context context, int inflateLevel) {
308863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        DataKind kind = getKindForMimetype(Im.CONTENT_ITEM_TYPE);
309863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        if (kind == null) {
310863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind = addKind(new DataKind(Im.CONTENT_ITEM_TYPE, R.string.imLabelsGroup,
311863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                    android.R.drawable.sym_action_chat, 20, true));
312863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.secondary = true;
313863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.actionHeader = new ImActionInflater();
314863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.actionBody = new SimpleInflater(Im.DATA);
315863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
316863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
317863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        if (inflateLevel >= ContactsSource.LEVEL_CONSTRAINTS) {
318863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            // NOTE: even though a traditional "type" exists, for editing
319863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            // purposes we're using the protocol to pick labels
320863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
321863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.defaultValues = new ContentValues();
322863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.defaultValues.put(Im.TYPE, Im.TYPE_OTHER);
323863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
324863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeColumn = Im.PROTOCOL;
325863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList = Lists.newArrayList();
326863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildImType(Im.PROTOCOL_AIM));
327863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildImType(Im.PROTOCOL_MSN));
328863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildImType(Im.PROTOCOL_YAHOO));
329863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildImType(Im.PROTOCOL_SKYPE));
330863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildImType(Im.PROTOCOL_QQ));
331863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildImType(Im.PROTOCOL_GOOGLE_TALK));
332863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildImType(Im.PROTOCOL_ICQ));
333863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildImType(Im.PROTOCOL_JABBER));
334863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildImType(Im.PROTOCOL_CUSTOM).setSecondary(true).setCustomColumn(
335863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                    Im.CUSTOM_PROTOCOL));
336863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
337863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.fieldList = Lists.newArrayList();
338863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.fieldList.add(new EditField(Im.DATA, R.string.imLabelsGroup, FLAGS_EMAIL));
339863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
340863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
341863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        return kind;
342863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
343863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
344863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected DataKind inflateOrganization(Context context, int inflateLevel) {
345863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        DataKind kind = getKindForMimetype(Organization.CONTENT_ITEM_TYPE);
346863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        if (kind == null) {
347863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind = addKind(new DataKind(Organization.CONTENT_ITEM_TYPE,
348863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                    R.string.organizationLabelsGroup, R.drawable.sym_action_organization, 30, true));
349863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.actionHeader = new SimpleInflater(Organization.COMPANY);
350863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.actionBody = new SimpleInflater(Organization.TITLE);
351863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
352863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
353863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        if (inflateLevel >= ContactsSource.LEVEL_CONSTRAINTS) {
354863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeColumn = Organization.TYPE;
355863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList = Lists.newArrayList();
356863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildOrgType(Organization.TYPE_WORK));
357863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildOrgType(Organization.TYPE_OTHER));
358863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.typeList.add(buildOrgType(Organization.TYPE_CUSTOM).setSecondary(true)
359863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                    .setCustomColumn(Organization.LABEL));
360863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
361863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.fieldList = Lists.newArrayList();
362863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.fieldList.add(new EditField(Organization.COMPANY, R.string.ghostData_company,
363863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                    FLAGS_GENERIC_NAME));
364863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.fieldList.add(new EditField(Organization.TITLE, R.string.ghostData_title,
365863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                    FLAGS_GENERIC_NAME));
366863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
367863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
368863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        return kind;
369863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
370863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
371863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected DataKind inflatePhoto(Context context, int inflateLevel) {
372863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        DataKind kind = getKindForMimetype(Photo.CONTENT_ITEM_TYPE);
373863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        if (kind == null) {
374863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind = addKind(new DataKind(Photo.CONTENT_ITEM_TYPE, -1, -1, -1, true));
375863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
376863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
377863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        if (inflateLevel >= ContactsSource.LEVEL_CONSTRAINTS) {
378863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.fieldList = Lists.newArrayList();
379863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.fieldList.add(new EditField(Photo.PHOTO, -1, -1));
380863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
381863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
382863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        return kind;
383863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
384863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
385863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected DataKind inflateNote(Context context, int inflateLevel) {
386863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        DataKind kind = getKindForMimetype(Note.CONTENT_ITEM_TYPE);
387863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        if (kind == null) {
388863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind = addKind(new DataKind(Note.CONTENT_ITEM_TYPE,
389863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                    R.string.label_notes, R.drawable.sym_note, 110, true));
390863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.isList = false;
391863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.secondary = true;
392863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.actionHeader = new SimpleInflater(R.string.label_notes);
393863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.actionBody = new SimpleInflater(Note.NOTE);
394863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
395863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
396863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        if (inflateLevel >= ContactsSource.LEVEL_CONSTRAINTS) {
397863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.fieldList = Lists.newArrayList();
398863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.fieldList.add(new EditField(Note.NOTE, R.string.label_notes, FLAGS_NOTE));
399863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
400863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
401863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        return kind;
402863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
403863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
404863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected DataKind inflateWebsite(Context context, int inflateLevel) {
405863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        DataKind kind = getKindForMimetype(Website.CONTENT_ITEM_TYPE);
406863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        if (kind == null) {
407863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind = addKind(new DataKind(Website.CONTENT_ITEM_TYPE,
408863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                    R.string.websiteLabelsGroup, -1, 120, true));
409863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.secondary = true;
410863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.actionHeader = new SimpleInflater(R.string.websiteLabelsGroup);
411863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.actionBody = new SimpleInflater(Website.URL);
412863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
413863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
414863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        if (inflateLevel >= ContactsSource.LEVEL_CONSTRAINTS) {
415863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.defaultValues = new ContentValues();
416863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.defaultValues.put(Website.TYPE, Website.TYPE_OTHER);
417863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
418863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.fieldList = Lists.newArrayList();
419863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.fieldList.add(new EditField(Website.URL, R.string.websiteLabelsGroup, FLAGS_WEBSITE));
420863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
421863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
422863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        return kind;
423863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
424863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
425863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    protected DataKind inflateEvent(Context context, int inflateLevel) {
426863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        DataKind kind = getKindForMimetype(Event.CONTENT_ITEM_TYPE);
427863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        if (kind == null) {
428863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind = addKind(new DataKind(Event.CONTENT_ITEM_TYPE,
429863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                    R.string.eventLabelsGroup, -1, 150, false));
430863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.secondary = true;
431863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.actionHeader = new EventActionInflater();
432863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            kind.actionBody = new SimpleInflater(Event.START_DATE);
433863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
434863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
435863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        return kind;
436863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
437863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
438863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    /**
439863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton     * Simple inflater that assumes a string resource has a "%s" that will be
440863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton     * filled from the given column.
441863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton     */
442863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    public static class SimpleInflater implements StringInflater {
443863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        private final int mStringRes;
444863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        private final String mColumnName;
445863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
446863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        public SimpleInflater(int stringRes) {
447863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            this(stringRes, null);
448863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
449863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
450863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        public SimpleInflater(String columnName) {
451863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            this(-1, columnName);
452863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
453863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
454863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        public SimpleInflater(int stringRes, String columnName) {
455863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            mStringRes = stringRes;
456863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            mColumnName = columnName;
457863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
458863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
459863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        public CharSequence inflateUsing(Context context, Cursor cursor) {
460863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            final int index = mColumnName != null ? cursor.getColumnIndex(mColumnName) : -1;
461863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            final boolean validString = mStringRes > 0;
462863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            final boolean validColumn = index != -1;
463863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
464863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            final CharSequence stringValue = validString ? context.getText(mStringRes) : null;
465863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            final CharSequence columnValue = validColumn ? cursor.getString(index) : null;
466863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
467863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            if (validString && validColumn) {
468863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                return String.format(stringValue.toString(), columnValue);
469863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            } else if (validString) {
470863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                return stringValue;
471863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            } else if (validColumn) {
472863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                return columnValue;
473863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            } else {
474863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                return null;
475863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            }
476863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
477863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
478863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        public CharSequence inflateUsing(Context context, ContentValues values) {
479863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            final boolean validColumn = values.containsKey(mColumnName);
480863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            final boolean validString = mStringRes > 0;
481863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
482863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            final CharSequence stringValue = validString ? context.getText(mStringRes) : null;
483863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            final CharSequence columnValue = validColumn ? values.getAsString(mColumnName) : null;
484863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
485863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            if (validString && validColumn) {
486863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                return String.format(stringValue.toString(), columnValue);
487863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            } else if (validString) {
488863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                return stringValue;
489863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            } else if (validColumn) {
490863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                return columnValue;
491863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            } else {
492863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                return null;
493863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            }
494863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
495863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
496863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
497863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    public static abstract class CommonInflater implements StringInflater {
498863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        protected abstract int getTypeLabelResource(Integer type);
499863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
500863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        protected boolean isCustom(Integer type) {
501863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            return type == BaseTypes.TYPE_CUSTOM;
502863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
503863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
504863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        protected String getTypeColumn() {
505863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            return Phone.TYPE;
506863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
507863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
508863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        protected String getLabelColumn() {
509863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            return Phone.LABEL;
510863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
511863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
512863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        protected CharSequence getTypeLabel(Resources res, Integer type, CharSequence label) {
513863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            final int labelRes = getTypeLabelResource(type);
514863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            if (type == null) {
515863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                return res.getText(labelRes);
516863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            } else if (isCustom(type)) {
517863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                return res.getString(labelRes, label == null ? "" : label);
518863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            } else {
519863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                return res.getText(labelRes);
520863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            }
521863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
522863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
523863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        public CharSequence inflateUsing(Context context, Cursor cursor) {
524863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            final Integer type = cursor.getInt(cursor.getColumnIndex(getTypeColumn()));
525863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            final String label = cursor.getString(cursor.getColumnIndex(getLabelColumn()));
526863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            return getTypeLabel(context.getResources(), type, label);
527863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
528863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
529863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        public CharSequence inflateUsing(Context context, ContentValues values) {
530863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            final Integer type = values.getAsInteger(getTypeColumn());
531863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            final String label = values.getAsString(getLabelColumn());
532863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            return getTypeLabel(context.getResources(), type, label);
533863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
534863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
535863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
536863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    public static class PhoneActionInflater extends CommonInflater {
537863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        @Override
538863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        protected boolean isCustom(Integer type) {
539863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            return type == Phone.TYPE_CUSTOM || type == Phone.TYPE_ASSISTANT;
540863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
541863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
542863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        @Override
543863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        protected int getTypeLabelResource(Integer type) {
544863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            if (type == null) return R.string.call_other;
545863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            switch (type) {
546863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_HOME: return R.string.call_home;
547863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_MOBILE: return R.string.call_mobile;
548863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_WORK: return R.string.call_work;
549863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_FAX_WORK: return R.string.call_fax_work;
550863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_FAX_HOME: return R.string.call_fax_home;
551863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_PAGER: return R.string.call_pager;
552863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_OTHER: return R.string.call_other;
553863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_CALLBACK: return R.string.call_callback;
554863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_CAR: return R.string.call_car;
555863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_COMPANY_MAIN: return R.string.call_company_main;
556863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_ISDN: return R.string.call_isdn;
557863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_MAIN: return R.string.call_main;
558863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_OTHER_FAX: return R.string.call_other_fax;
559863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_RADIO: return R.string.call_radio;
560863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_TELEX: return R.string.call_telex;
561863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_TTY_TDD: return R.string.call_tty_tdd;
562863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_WORK_MOBILE: return R.string.call_work_mobile;
563863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_WORK_PAGER: return R.string.call_work_pager;
564863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_ASSISTANT: return R.string.call_assistant;
565863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_MMS: return R.string.call_mms;
566863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                default: return R.string.call_custom;
567863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            }
568863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
569863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
570863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
571863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    public static class PhoneActionAltInflater extends CommonInflater {
572863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        @Override
573863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        protected boolean isCustom(Integer type) {
574863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            return (type == Phone.TYPE_CUSTOM || type == Phone.TYPE_ASSISTANT);
575863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
576863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
577863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        @Override
578863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        protected int getTypeLabelResource(Integer type) {
579863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            if (type == null) return R.string.sms_other;
580863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            switch (type) {
581863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_HOME: return R.string.sms_home;
582863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_MOBILE: return R.string.sms_mobile;
583863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_WORK: return R.string.sms_work;
584863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_FAX_WORK: return R.string.sms_fax_work;
585863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_FAX_HOME: return R.string.sms_fax_home;
586863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_PAGER: return R.string.sms_pager;
587863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_OTHER: return R.string.sms_other;
588863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_CALLBACK: return R.string.sms_callback;
589863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_CAR: return R.string.sms_car;
590863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_COMPANY_MAIN: return R.string.sms_company_main;
591863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_ISDN: return R.string.sms_isdn;
592863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_MAIN: return R.string.sms_main;
593863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_OTHER_FAX: return R.string.sms_other_fax;
594863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_RADIO: return R.string.sms_radio;
595863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_TELEX: return R.string.sms_telex;
596863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_TTY_TDD: return R.string.sms_tty_tdd;
597863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_WORK_MOBILE: return R.string.sms_work_mobile;
598863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_WORK_PAGER: return R.string.sms_work_pager;
599863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_ASSISTANT: return R.string.sms_assistant;
600863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Phone.TYPE_MMS: return R.string.sms_mms;
601863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                default: return R.string.sms_custom;
602863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            }
603863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
604863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
605863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
606863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    public static class EmailActionInflater extends CommonInflater {
607863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        @Override
608863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        protected int getTypeLabelResource(Integer type) {
609863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            if (type == null) return R.string.email;
610863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            switch (type) {
611863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Email.TYPE_HOME: return R.string.email_home;
612863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Email.TYPE_WORK: return R.string.email_work;
613863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Email.TYPE_OTHER: return R.string.email_other;
614863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Email.TYPE_MOBILE: return R.string.email_mobile;
615863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                default: return R.string.email_custom;
616863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            }
617863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
618863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
619863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
620863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    public static class EventActionInflater extends CommonInflater {
621863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        @Override
622863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        protected int getTypeLabelResource(Integer type) {
623863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            return Event.getTypeResource(type);
624863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
625863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
626863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
627863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    public static class PostalActionInflater extends CommonInflater {
628863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        @Override
629863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        protected int getTypeLabelResource(Integer type) {
630863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            if (type == null) return R.string.map_other;
631863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            switch (type) {
632863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case StructuredPostal.TYPE_HOME: return R.string.map_home;
633863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case StructuredPostal.TYPE_WORK: return R.string.map_work;
634863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case StructuredPostal.TYPE_OTHER: return R.string.map_other;
635863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                default: return R.string.map_custom;
636863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            }
637863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
638863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
639863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
640863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    public static class ImActionInflater extends CommonInflater {
641863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        @Override
642863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        protected String getTypeColumn() {
643863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            return Im.PROTOCOL;
644863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
645863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
646863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        @Override
647863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        protected String getLabelColumn() {
648863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            return Im.CUSTOM_PROTOCOL;
649863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
650863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
651863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        @Override
652863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        protected int getTypeLabelResource(Integer type) {
653863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            if (type == null) return R.string.chat;
654863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            switch (type) {
655863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Im.PROTOCOL_AIM: return R.string.chat_aim;
656863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Im.PROTOCOL_MSN: return R.string.chat_msn;
657863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Im.PROTOCOL_YAHOO: return R.string.chat_yahoo;
658863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Im.PROTOCOL_SKYPE: return R.string.chat_skype;
659863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Im.PROTOCOL_QQ: return R.string.chat_qq;
660863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Im.PROTOCOL_GOOGLE_TALK: return R.string.chat_gtalk;
661863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Im.PROTOCOL_ICQ: return R.string.chat_icq;
662863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Im.PROTOCOL_JABBER: return R.string.chat_jabber;
663863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                case Im.PROTOCOL_NETMEETING: return R.string.chat;
664863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton                default: return R.string.chat;
665863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton            }
666863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        }
667863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
668863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
669863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    @Override
670863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    public int getHeaderColor(Context context) {
671863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        return 0xff7f93bc;
672863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
673863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton
674863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    @Override
675863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    public int getSideBarColor(Context context) {
676863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton        return 0xffbdc7b8;
677863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton    }
678863e7a55dc45cd1210e4d07e5847f48dfe301876Jeff Hamilton}
679