1e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng/* 2e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * Copyright (C) 2009 The Android Open Source Project 3e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * 4e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * Licensed under the Apache License, Version 2.0 (the "License"); 5e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * you may not use this file except in compliance with the License. 6e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * You may obtain a copy of the License at 7e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * 8e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * http://www.apache.org/licenses/LICENSE-2.0 9e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * 10e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * Unless required by applicable law or agreed to in writing, software 11e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * distributed under the License is distributed on an "AS IS" BASIS, 12e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * See the License for the specific language governing permissions and 14e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * limitations under the License. 15e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng */ 16e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 1769c182afb0e6d82a341a28b4317aa703af768906Gary Maipackage com.android.contacts.model.account; 18e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 19e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport android.content.ContentValues; 20e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport android.content.Context; 21e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport android.provider.ContactsContract.CommonDataKinds.Email; 22e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport android.provider.ContactsContract.CommonDataKinds.Event; 23e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport android.provider.ContactsContract.CommonDataKinds.Im; 24e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport android.provider.ContactsContract.CommonDataKinds.Nickname; 25e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport android.provider.ContactsContract.CommonDataKinds.Note; 26e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport android.provider.ContactsContract.CommonDataKinds.Organization; 27e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport android.provider.ContactsContract.CommonDataKinds.Phone; 28e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport android.provider.ContactsContract.CommonDataKinds.Photo; 29e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport android.provider.ContactsContract.CommonDataKinds.StructuredName; 30e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport android.provider.ContactsContract.CommonDataKinds.StructuredPostal; 31e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport android.provider.ContactsContract.CommonDataKinds.Website; 32e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 333f6a2444e0134b7380cdb2e13abf4bf1163336d0Arthur Wangimport com.android.contacts.R; 3469c182afb0e6d82a341a28b4317aa703af768906Gary Maiimport com.android.contacts.model.dataitem.DataKind; 3569c182afb0e6d82a341a28b4317aa703af768906Gary Maiimport com.android.contacts.util.CommonDateUtils; 363a0b483ff715959b88d7ef20877a7c89d211fde2Walter Jangimport com.android.contactsbind.FeedbackHelper; 373a0b483ff715959b88d7ef20877a7c89d211fde2Walter Jang 38e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport com.google.common.collect.Lists; 39e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 40e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport java.util.Locale; 41e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 42e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengpublic class ExchangeAccountType extends BaseAccountType { 43e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng private static final String TAG = "ExchangeAccountType"; 44e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 45419fed1b064078a9e6a5892db73a40c6d6f382b4Brian Attwell private static final String ACCOUNT_TYPE_AOSP = "com.android.exchange"; 46419fed1b064078a9e6a5892db73a40c6d6f382b4Brian Attwell private static final String ACCOUNT_TYPE_GOOGLE_1 = "com.google.android.exchange"; 47419fed1b064078a9e6a5892db73a40c6d6f382b4Brian Attwell private static final String ACCOUNT_TYPE_GOOGLE_2 = "com.google.android.gm.exchange"; 48e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 49e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng public ExchangeAccountType(Context context, String authenticatorPackageName, String type) { 50e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng this.accountType = type; 51e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng this.resourcePackageName = null; 52e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng this.syncAdapterPackageName = authenticatorPackageName; 53e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 54e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng try { 55e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindStructuredName(context); 567a6daea69ea47c31a1b838a423e7cdaceafae753Gary Mai addDataKindName(context); 57e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindPhoneticName(context); 58e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindNickname(context); 59e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindPhone(context); 60e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindEmail(context); 61e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindStructuredPostal(context); 62e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindIm(context); 63e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindOrganization(context); 64e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindPhoto(context); 65e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindNote(context); 66e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindEvent(context); 67e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindWebsite(context); 68e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindGroupMembership(context); 69e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 70e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng mIsInitialized = true; 71e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } catch (DefinitionException e) { 723a0b483ff715959b88d7ef20877a7c89d211fde2Walter Jang // TODO: Change this to fail fast if there are no feedback reports 733a0b483ff715959b88d7ef20877a7c89d211fde2Walter Jang FeedbackHelper.sendFeedback(context, TAG, "Failed to build exchange account type", e); 74e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 75e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 76e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 77e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng public static boolean isExchangeType(String type) { 78419fed1b064078a9e6a5892db73a40c6d6f382b4Brian Attwell return ACCOUNT_TYPE_AOSP.equals(type) || ACCOUNT_TYPE_GOOGLE_1.equals(type) 79419fed1b064078a9e6a5892db73a40c6d6f382b4Brian Attwell || ACCOUNT_TYPE_GOOGLE_2.equals(type); 80e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 81e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 82e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng @Override 83e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng protected DataKind addDataKindStructuredName(Context context) throws DefinitionException { 84e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng DataKind kind = addKind(new DataKind(StructuredName.CONTENT_ITEM_TYPE, 85913e18a7d53132fefb59229574cd329c9935b85fBrian Attwell R.string.nameLabelsGroup, Weight.NONE, true)); 86e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.actionHeader = new SimpleInflater(R.string.nameLabelsGroup); 87e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.actionBody = new SimpleInflater(Nickname.NAME); 88e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 89e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeOverallMax = 1; 90e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 91e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList = Lists.newArrayList(); 92e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix, 93e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng FLAGS_PERSON_NAME).setOptional(true)); 94e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME, 95e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng R.string.name_family, FLAGS_PERSON_NAME)); 96e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, 97e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng R.string.name_middle, FLAGS_PERSON_NAME)); 98e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME, 99e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng R.string.name_given, FLAGS_PERSON_NAME)); 100e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(StructuredName.SUFFIX, 101e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng R.string.name_suffix, FLAGS_PERSON_NAME)); 102e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 103e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME, 104e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng R.string.name_phonetic_family, FLAGS_PHONETIC)); 105e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME, 106e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng R.string.name_phonetic_given, FLAGS_PHONETIC)); 107e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 108e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return kind; 109e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 110e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 111e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng @Override 112e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng protected DataKind addDataKindPhoneticName(Context context) throws DefinitionException { 113e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng DataKind kind = addKind(new DataKind(DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME, 114913e18a7d53132fefb59229574cd329c9935b85fBrian Attwell R.string.name_phonetic, Weight.NONE, true)); 115e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.actionHeader = new SimpleInflater(R.string.nameLabelsGroup); 116e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.actionBody = new SimpleInflater(Nickname.NAME); 117e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 118e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeOverallMax = 1; 119e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 120e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList = Lists.newArrayList(); 121e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME, 122e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng R.string.name_phonetic_family, FLAGS_PHONETIC)); 123e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME, 124e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng R.string.name_phonetic_given, FLAGS_PHONETIC)); 125e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 126e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return kind; 127e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 128e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 129e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng @Override 130e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng protected DataKind addDataKindNickname(Context context) throws DefinitionException { 131e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng final DataKind kind = super.addDataKindNickname(context); 132e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 133e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeOverallMax = 1; 134e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 135e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList = Lists.newArrayList(); 136e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(Nickname.NAME, R.string.nicknameLabelsGroup, 137e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng FLAGS_PERSON_NAME)); 138e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 139e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return kind; 140e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 141e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 142e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng @Override 143e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng protected DataKind addDataKindPhone(Context context) throws DefinitionException { 144e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng final DataKind kind = super.addDataKindPhone(context); 145e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 146e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeColumn = Phone.TYPE; 147e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList = Lists.newArrayList(); 148e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildPhoneType(Phone.TYPE_MOBILE).setSpecificMax(1)); 149e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildPhoneType(Phone.TYPE_HOME).setSpecificMax(2)); 150e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildPhoneType(Phone.TYPE_WORK).setSpecificMax(2)); 151e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_WORK).setSecondary(true) 152e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng .setSpecificMax(1)); 153e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_HOME).setSecondary(true) 154e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng .setSpecificMax(1)); 155e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList 156e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng .add(buildPhoneType(Phone.TYPE_PAGER).setSecondary(true).setSpecificMax(1)); 157e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildPhoneType(Phone.TYPE_CAR).setSecondary(true).setSpecificMax(1)); 158e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildPhoneType(Phone.TYPE_COMPANY_MAIN).setSecondary(true) 159e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng .setSpecificMax(1)); 160e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildPhoneType(Phone.TYPE_MMS).setSecondary(true).setSpecificMax(1)); 161e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList 162e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng .add(buildPhoneType(Phone.TYPE_RADIO).setSecondary(true).setSpecificMax(1)); 163e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildPhoneType(Phone.TYPE_ASSISTANT).setSecondary(true) 164e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng .setSpecificMax(1)); 165e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 166e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList = Lists.newArrayList(); 167e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(Phone.NUMBER, R.string.phoneLabelsGroup, FLAGS_PHONE)); 168e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 169e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return kind; 170e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 171e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 172e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng @Override 173e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng protected DataKind addDataKindEmail(Context context) throws DefinitionException { 174e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng final DataKind kind = super.addDataKindEmail(context); 175e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 176e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeOverallMax = 3; 177e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 178e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList = Lists.newArrayList(); 179e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(Email.DATA, R.string.emailLabelsGroup, FLAGS_EMAIL)); 180e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 181e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return kind; 182e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 183e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 184e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng @Override 185e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng protected DataKind addDataKindStructuredPostal(Context context) throws DefinitionException { 186e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng final DataKind kind = super.addDataKindStructuredPostal(context); 187e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 188e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng final boolean useJapaneseOrder = 189e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng Locale.JAPANESE.getLanguage().equals(Locale.getDefault().getLanguage()); 190e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeColumn = StructuredPostal.TYPE; 191e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList = Lists.newArrayList(); 192e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildPostalType(StructuredPostal.TYPE_WORK).setSpecificMax(1)); 193e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildPostalType(StructuredPostal.TYPE_HOME).setSpecificMax(1)); 194e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildPostalType(StructuredPostal.TYPE_OTHER).setSpecificMax(1)); 195e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 196e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList = Lists.newArrayList(); 197e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng if (useJapaneseOrder) { 198e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(StructuredPostal.COUNTRY, 199e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng R.string.postal_country, FLAGS_POSTAL).setOptional(true)); 200e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(StructuredPostal.POSTCODE, 201e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng R.string.postal_postcode, FLAGS_POSTAL)); 202e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(StructuredPostal.REGION, 203e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng R.string.postal_region, FLAGS_POSTAL)); 204e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(StructuredPostal.CITY, 205e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng R.string.postal_city,FLAGS_POSTAL)); 206e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(StructuredPostal.STREET, 207e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng R.string.postal_street, FLAGS_POSTAL)); 208e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } else { 209e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(StructuredPostal.STREET, 210e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng R.string.postal_street, FLAGS_POSTAL)); 211e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(StructuredPostal.CITY, 212e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng R.string.postal_city,FLAGS_POSTAL)); 213e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(StructuredPostal.REGION, 214e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng R.string.postal_region, FLAGS_POSTAL)); 215e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(StructuredPostal.POSTCODE, 216e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng R.string.postal_postcode, FLAGS_POSTAL)); 217e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(StructuredPostal.COUNTRY, 218e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng R.string.postal_country, FLAGS_POSTAL).setOptional(true)); 219e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 220e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 221e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return kind; 222e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 223e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 224e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng @Override 225e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng protected DataKind addDataKindIm(Context context) throws DefinitionException { 226e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng final DataKind kind = super.addDataKindIm(context); 227e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 228e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng // Types are not supported for IM. There can be 3 IMs, but OWA only shows only the first 229e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeOverallMax = 3; 230e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 231e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.defaultValues = new ContentValues(); 232e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.defaultValues.put(Im.TYPE, Im.TYPE_OTHER); 233e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 234e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList = Lists.newArrayList(); 235e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(Im.DATA, R.string.imLabelsGroup, FLAGS_EMAIL)); 236e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 237e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return kind; 238e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 239e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 240e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng @Override 241e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng protected DataKind addDataKindOrganization(Context context) throws DefinitionException { 242e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng final DataKind kind = super.addDataKindOrganization(context); 243e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 244e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeOverallMax = 1; 245e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 246e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList = Lists.newArrayList(); 247e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(Organization.COMPANY, R.string.ghostData_company, 248e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng FLAGS_GENERIC_NAME)); 249e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(Organization.TITLE, R.string.ghostData_title, 250e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng FLAGS_GENERIC_NAME)); 251e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 252e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return kind; 253e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 254e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 255e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng @Override 256e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng protected DataKind addDataKindPhoto(Context context) throws DefinitionException { 257e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng final DataKind kind = super.addDataKindPhoto(context); 258e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 259e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeOverallMax = 1; 260e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 261e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList = Lists.newArrayList(); 262e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(Photo.PHOTO, -1, -1)); 263e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 264e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return kind; 265e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 266e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 267e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng @Override 268e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng protected DataKind addDataKindNote(Context context) throws DefinitionException { 269e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng final DataKind kind = super.addDataKindNote(context); 270e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 271e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList = Lists.newArrayList(); 272e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(Note.NOTE, R.string.label_notes, FLAGS_NOTE)); 273e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 274e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return kind; 275e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 276e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 277e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng protected DataKind addDataKindEvent(Context context) throws DefinitionException { 2784eff3d80a65d84cafbbb8ed146f40aeb5e4fed9dChiao Cheng DataKind kind = addKind(new DataKind(Event.CONTENT_ITEM_TYPE, R.string.eventLabelsGroup, 279913e18a7d53132fefb59229574cd329c9935b85fBrian Attwell Weight.EVENT, true)); 280e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.actionHeader = new EventActionInflater(); 281e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.actionBody = new SimpleInflater(Event.START_DATE); 282e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 283e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeOverallMax = 1; 284e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 285e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeColumn = Event.TYPE; 286e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList = Lists.newArrayList(); 287e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildEventType(Event.TYPE_BIRTHDAY, false).setSpecificMax(1)); 288e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 289e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.dateFormatWithYear = CommonDateUtils.DATE_AND_TIME_FORMAT; 290e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 291e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList = Lists.newArrayList(); 292e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(Event.DATA, R.string.eventLabelsGroup, FLAGS_EVENT)); 293e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 294e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return kind; 295e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 296e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 297e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng @Override 298e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng protected DataKind addDataKindWebsite(Context context) throws DefinitionException { 299e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng final DataKind kind = super.addDataKindWebsite(context); 300e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 301e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeOverallMax = 1; 302e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 303e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList = Lists.newArrayList(); 304e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(Website.URL, R.string.websiteLabelsGroup, FLAGS_WEBSITE)); 305e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 306e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return kind; 307e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 308e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 309e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng @Override 310e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng public boolean isGroupMembershipEditable() { 311e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return true; 312e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 313e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 314e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng @Override 315e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng public boolean areContactsWritable() { 316e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return true; 317e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 318e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng} 319