12aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton/*
22aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * Copyright (C) 2009 The Android Open Source Project
32aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton *
42aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * Licensed under the Apache License, Version 2.0 (the "License");
52aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * you may not use this file except in compliance with the License.
62aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * You may obtain a copy of the License at
72aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton *
82aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton *      http://www.apache.org/licenses/LICENSE-2.0
92aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton *
102aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * Unless required by applicable law or agreed to in writing, software
112aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * distributed under the License is distributed on an "AS IS" BASIS,
122aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * See the License for the specific language governing permissions and
142aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton * limitations under the License.
152aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton */
162aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
172aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonpackage com.android.loaderapp.model;
182aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
192aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport com.android.loaderapp.R;
202aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport com.google.android.collect.Lists;
212aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
222aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.content.ContentValues;
232aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.content.Context;
242aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.Email;
252aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.Im;
262aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.Nickname;
272aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.Note;
282aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.Organization;
292aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.Phone;
302aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.Photo;
312aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.StructuredName;
322aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
332aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport android.provider.ContactsContract.CommonDataKinds.Website;
342aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
352aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonimport java.util.Locale;
362aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
372aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamiltonpublic class ExchangeSource extends FallbackSource {
382aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
392aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    public static final String ACCOUNT_TYPE = "com.android.exchange";
402aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
412aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    public ExchangeSource(String resPackageName) {
422aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        this.accountType = ACCOUNT_TYPE;
432aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        this.resPackageName = null;
442aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        this.summaryResPackageName = resPackageName;
452aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    }
462aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
472aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    @Override
482aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    protected void inflate(Context context, int inflateLevel) {
492aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
502aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        inflateStructuredName(context, inflateLevel);
512aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        inflateNickname(context, inflateLevel);
522aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        inflatePhone(context, inflateLevel);
532aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        inflateEmail(context, inflateLevel);
542aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        inflateStructuredPostal(context, inflateLevel);
552aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        inflateIm(context, inflateLevel);
562aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        inflateOrganization(context, inflateLevel);
572aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        inflatePhoto(context, inflateLevel);
582aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        inflateNote(context, inflateLevel);
592aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        inflateWebsite(context, inflateLevel);
602aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
612aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        setInflatedLevel(inflateLevel);
622aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    }
632aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
642aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    @Override
652aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    protected DataKind inflateStructuredName(Context context, int inflateLevel) {
662aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        final DataKind kind = super.inflateStructuredName(context, ContactsSource.LEVEL_MIMETYPES);
672aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
682aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        if (inflateLevel >= ContactsSource.LEVEL_CONSTRAINTS) {
692aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            final boolean useJapaneseOrder =
702aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                Locale.JAPANESE.getLanguage().equals(Locale.getDefault().getLanguage());
712aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeOverallMax = 1;
722aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
732aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.fieldList = Lists.newArrayList();
742aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix,
752aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                    FLAGS_PERSON_NAME).setOptional(true));
762aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            if (useJapaneseOrder) {
772aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME,
782aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.name_family, FLAGS_PERSON_NAME));
792aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME,
802aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.name_middle, FLAGS_PERSON_NAME).setOptional(true));
812aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME,
822aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.name_given, FLAGS_PERSON_NAME));
832aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredName.SUFFIX,
842aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.name_suffix, FLAGS_PERSON_NAME).setOptional(true));
852aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME,
862aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.name_phonetic_family, FLAGS_PHONETIC).setOptional(true));
872aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME,
882aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.name_phonetic_given, FLAGS_PHONETIC).setOptional(true));
892aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            } else {
902aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME,
912aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.name_given, FLAGS_PERSON_NAME));
922aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME,
932aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.name_middle, FLAGS_PERSON_NAME).setOptional(true));
942aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME,
952aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.name_family, FLAGS_PERSON_NAME));
962aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredName.SUFFIX,
972aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.name_suffix, FLAGS_PERSON_NAME).setOptional(true));
982aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME,
992aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.name_phonetic_given, FLAGS_PHONETIC).setOptional(true));
1002aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME,
1012aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.name_phonetic_family, FLAGS_PHONETIC).setOptional(true));
1022aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            }
1032aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        }
1042aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
1052aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        return kind;
1062aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    }
1072aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
1082aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    @Override
1092aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    protected DataKind inflateNickname(Context context, int inflateLevel) {
1102aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        final DataKind kind = super.inflateNickname(context, ContactsSource.LEVEL_MIMETYPES);
1112aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
1122aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        if (inflateLevel >= ContactsSource.LEVEL_CONSTRAINTS) {
1132aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.isList = false;
1142aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
1152aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.fieldList = Lists.newArrayList();
1162aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.fieldList.add(new EditField(Nickname.NAME, R.string.nicknameLabelsGroup,
1172aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                    FLAGS_PERSON_NAME));
1182aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        }
1192aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
1202aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        return kind;
1212aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    }
1222aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
1232aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    @Override
1242aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    protected DataKind inflatePhone(Context context, int inflateLevel) {
1252aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        final DataKind kind = super.inflatePhone(context, ContactsSource.LEVEL_MIMETYPES);
1262aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
1272aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        if (inflateLevel >= ContactsSource.LEVEL_CONSTRAINTS) {
1282aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeColumn = Phone.TYPE;
1292aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList = Lists.newArrayList();
1302aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_HOME).setSpecificMax(2));
1312aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_MOBILE).setSpecificMax(1));
1322aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_WORK).setSpecificMax(2));
1332aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_WORK).setSecondary(true)
1342aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                    .setSpecificMax(1));
1352aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_HOME).setSecondary(true)
1362aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                    .setSpecificMax(1));
1372aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList
1382aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                    .add(buildPhoneType(Phone.TYPE_PAGER).setSecondary(true).setSpecificMax(1));
1392aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_CAR).setSecondary(true).setSpecificMax(1));
1402aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_COMPANY_MAIN).setSecondary(true)
1412aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                    .setSpecificMax(1));
1422aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_MMS).setSecondary(true).setSpecificMax(1));
1432aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList
1442aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                    .add(buildPhoneType(Phone.TYPE_RADIO).setSecondary(true).setSpecificMax(1));
1452aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildPhoneType(Phone.TYPE_ASSISTANT).setSecondary(true)
1462aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                    .setSpecificMax(1).setCustomColumn(Phone.LABEL));
1472aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
1482aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.fieldList = Lists.newArrayList();
1492aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.fieldList.add(new EditField(Phone.NUMBER, R.string.phoneLabelsGroup, FLAGS_PHONE));
1502aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        }
1512aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
1522aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        return kind;
1532aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    }
1542aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
1552aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    @Override
1562aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    protected DataKind inflateEmail(Context context, int inflateLevel) {
1572aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        final DataKind kind = super.inflateEmail(context, ContactsSource.LEVEL_MIMETYPES);
1582aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
1592aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        if (inflateLevel >= ContactsSource.LEVEL_CONSTRAINTS) {
1602aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeOverallMax = 3;
1612aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
1622aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.fieldList = Lists.newArrayList();
1632aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.fieldList.add(new EditField(Email.DATA, R.string.emailLabelsGroup, FLAGS_EMAIL));
1642aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        }
1652aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
1662aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        return kind;
1672aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    }
1682aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
1692aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    @Override
1702aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    protected DataKind inflateStructuredPostal(Context context, int inflateLevel) {
1712aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        final DataKind kind = super.inflateStructuredPostal(context, ContactsSource.LEVEL_MIMETYPES);
1722aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
1732aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        if (inflateLevel >= ContactsSource.LEVEL_CONSTRAINTS) {
1742aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            final boolean useJapaneseOrder =
1752aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                Locale.JAPANESE.getLanguage().equals(Locale.getDefault().getLanguage());
1762aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeColumn = StructuredPostal.TYPE;
1772aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList = Lists.newArrayList();
1782aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildPostalType(StructuredPostal.TYPE_WORK).setSpecificMax(1));
1792aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildPostalType(StructuredPostal.TYPE_HOME).setSpecificMax(1));
1802aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildPostalType(StructuredPostal.TYPE_OTHER).setSpecificMax(1));
1812aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
1822aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.fieldList = Lists.newArrayList();
1832aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            if (useJapaneseOrder) {
1842aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.COUNTRY,
1852aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.postal_country, FLAGS_POSTAL).setOptional(true));
1862aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.POSTCODE,
1872aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.postal_postcode, FLAGS_POSTAL));
1882aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.REGION,
1892aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.postal_region, FLAGS_POSTAL));
1902aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.CITY,
1912aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.postal_city,FLAGS_POSTAL));
1922aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.STREET,
1932aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.postal_street, FLAGS_POSTAL));
1942aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            } else {
1952aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.STREET,
1962aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.postal_street, FLAGS_POSTAL));
1972aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.CITY,
1982aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.postal_city,FLAGS_POSTAL));
1992aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.REGION,
2002aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.postal_region, FLAGS_POSTAL));
2012aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.POSTCODE,
2022aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.postal_postcode, FLAGS_POSTAL));
2032aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                kind.fieldList.add(new EditField(StructuredPostal.COUNTRY,
2042aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                        R.string.postal_country, FLAGS_POSTAL).setOptional(true));
2052aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            }
2062aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        }
2072aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
2082aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        return kind;
2092aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    }
2102aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
2112aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    @Override
2122aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    protected DataKind inflateIm(Context context, int inflateLevel) {
2132aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        final DataKind kind = super.inflateIm(context, ContactsSource.LEVEL_MIMETYPES);
2142aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
2152aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        if (inflateLevel >= ContactsSource.LEVEL_CONSTRAINTS) {
2162aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeOverallMax = 3;
2172aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
2182aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            // NOTE: even though a traditional "type" exists, for editing
2192aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            // purposes we're using the protocol to pick labels
2202aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
2212aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.defaultValues = new ContentValues();
2222aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.defaultValues.put(Im.TYPE, Im.TYPE_OTHER);
2232aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
2242aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeColumn = Im.PROTOCOL;
2252aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList = Lists.newArrayList();
2262aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildImType(Im.PROTOCOL_AIM));
2272aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildImType(Im.PROTOCOL_MSN));
2282aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildImType(Im.PROTOCOL_YAHOO));
2292aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildImType(Im.PROTOCOL_SKYPE));
2302aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildImType(Im.PROTOCOL_QQ));
2312aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildImType(Im.PROTOCOL_GOOGLE_TALK));
2322aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildImType(Im.PROTOCOL_ICQ));
2332aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildImType(Im.PROTOCOL_JABBER));
2342aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildImType(Im.PROTOCOL_CUSTOM).setSecondary(true).setCustomColumn(
2352aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                    Im.CUSTOM_PROTOCOL));
2362aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
2372aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.fieldList = Lists.newArrayList();
2382aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.fieldList.add(new EditField(Im.DATA, R.string.imLabelsGroup, FLAGS_EMAIL));
2392aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        }
2402aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
2412aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        return kind;
2422aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    }
2432aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
2442aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    @Override
2452aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    protected DataKind inflateOrganization(Context context, int inflateLevel) {
2462aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        final DataKind kind = super.inflateOrganization(context, ContactsSource.LEVEL_MIMETYPES);
2472aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
2482aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        if (inflateLevel >= ContactsSource.LEVEL_CONSTRAINTS) {
2492aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.isList = false;
2502aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeColumn = Organization.TYPE;
2512aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList = Lists.newArrayList();
2522aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildOrgType(Organization.TYPE_WORK).setSpecificMax(1));
2532aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildOrgType(Organization.TYPE_OTHER).setSpecificMax(1));
2542aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeList.add(buildOrgType(Organization.TYPE_CUSTOM).setSecondary(true)
2552aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                    .setSpecificMax(1));
2562aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
2572aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.fieldList = Lists.newArrayList();
2582aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.fieldList.add(new EditField(Organization.COMPANY, R.string.ghostData_company,
2592aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                    FLAGS_GENERIC_NAME));
2602aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.fieldList.add(new EditField(Organization.TITLE, R.string.ghostData_title,
2612aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton                    FLAGS_GENERIC_NAME));
2622aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        }
2632aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
2642aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        return kind;
2652aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    }
2662aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
2672aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    @Override
2682aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    protected DataKind inflatePhoto(Context context, int inflateLevel) {
2692aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        final DataKind kind = super.inflatePhoto(context, ContactsSource.LEVEL_MIMETYPES);
2702aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
2712aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        if (inflateLevel >= ContactsSource.LEVEL_CONSTRAINTS) {
2722aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.typeOverallMax = 1;
2732aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
2742aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.fieldList = Lists.newArrayList();
2752aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.fieldList.add(new EditField(Photo.PHOTO, -1, -1));
2762aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        }
2772aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
2782aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        return kind;
2792aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    }
2802aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
2812aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    @Override
2822aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    protected DataKind inflateNote(Context context, int inflateLevel) {
2832aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        final DataKind kind = super.inflateNote(context, ContactsSource.LEVEL_MIMETYPES);
2842aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
2852aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        if (inflateLevel >= ContactsSource.LEVEL_CONSTRAINTS) {
2862aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.fieldList = Lists.newArrayList();
2872aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.fieldList.add(new EditField(Note.NOTE, R.string.label_notes, FLAGS_NOTE));
2882aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        }
2892aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
2902aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        return kind;
2912aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    }
2922aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
2932aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    @Override
2942aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    protected DataKind inflateWebsite(Context context, int inflateLevel) {
2952aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        final DataKind kind = super.inflateWebsite(context, ContactsSource.LEVEL_MIMETYPES);
2962aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
2972aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        if (inflateLevel >= ContactsSource.LEVEL_CONSTRAINTS) {
2982aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.isList = false;
2992aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
3002aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.fieldList = Lists.newArrayList();
3012aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton            kind.fieldList.add(new EditField(Website.URL, R.string.websiteLabelsGroup, FLAGS_WEBSITE));
3022aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        }
3032aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
3042aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        return kind;
3052aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    }
3062aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
3072aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    @Override
3082aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    public int getHeaderColor(Context context) {
3092aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        return 0xffd5ba96;
3102aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    }
3112aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton
3122aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    @Override
3132aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    public int getSideBarColor(Context context) {
3142aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton        return 0xffb58e59;
3152aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton    }
3162aee0983597c8b0e65766c4b278d4b1c7d13605fJeff Hamilton}
317