1ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey/* 2ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * Copyright (C) 2009 The Android Open Source Project 3ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * 4ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * Licensed under the Apache License, Version 2.0 (the "License"); 5ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * you may not use this file except in compliance with the License. 6ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * You may obtain a copy of the License at 7ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * 8ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * http://www.apache.org/licenses/LICENSE-2.0 9ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * 10ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * Unless required by applicable law or agreed to in writing, software 11ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * distributed under the License is distributed on an "AS IS" BASIS, 12ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * See the License for the specific language governing permissions and 14ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * limitations under the License. 15ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey */ 16ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 17ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkeypackage com.android.contacts.model; 18ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 19ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkeyimport com.android.contacts.R; 2086ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onukiimport com.android.contacts.model.AccountType.DefinitionException; 21392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmannimport com.android.contacts.util.DateUtils; 22ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkeyimport com.google.android.collect.Lists; 23ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 24ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkeyimport android.content.ContentValues; 25ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkeyimport android.content.Context; 26ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkeyimport android.provider.ContactsContract.CommonDataKinds.Email; 27392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmannimport android.provider.ContactsContract.CommonDataKinds.Event; 28ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkeyimport android.provider.ContactsContract.CommonDataKinds.Im; 29ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkeyimport android.provider.ContactsContract.CommonDataKinds.Nickname; 30ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkeyimport android.provider.ContactsContract.CommonDataKinds.Note; 31ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkeyimport android.provider.ContactsContract.CommonDataKinds.Organization; 32ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkeyimport android.provider.ContactsContract.CommonDataKinds.Phone; 33ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkeyimport android.provider.ContactsContract.CommonDataKinds.Photo; 34ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkeyimport android.provider.ContactsContract.CommonDataKinds.StructuredName; 35ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkeyimport android.provider.ContactsContract.CommonDataKinds.StructuredPostal; 36ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkeyimport android.provider.ContactsContract.CommonDataKinds.Website; 3786ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onukiimport android.util.Log; 38ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 39f4ac04628763d8df783768b86d5e7b162a9a3d38Daisuke Miyakawaimport java.util.Locale; 40f4ac04628763d8df783768b86d5e7b162a9a3d38Daisuke Miyakawa 411dc28bef7d5353310359c3711b6cdac390d8a2e0Dmitri Plotnikovpublic class ExchangeAccountType extends BaseAccountType { 4286ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki private static final String TAG = "ExchangeAccountType"; 43ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 44ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey public static final String ACCOUNT_TYPE = "com.android.exchange"; 45ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 46b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov public ExchangeAccountType(Context context, String resPackageName) { 47ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey this.accountType = ACCOUNT_TYPE; 48ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey this.resPackageName = null; 49ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey this.summaryResPackageName = resPackageName; 50ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 5186ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki try { 5286ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindStructuredName(context); 5386ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindDisplayName(context); 5486ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindPhoneticName(context); 5586ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindNickname(context); 5686ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindPhone(context); 5786ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindEmail(context); 5886ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindStructuredPostal(context); 5986ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindIm(context); 6086ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindOrganization(context); 6186ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindPhoto(context); 6286ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindNote(context); 6386ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindEvent(context); 6486ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindWebsite(context); 6586ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindGroupMembership(context); 6686ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki 6786ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki mIsInitialized = true; 6886ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki } catch (DefinitionException e) { 6986ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki Log.e(TAG, "Problem building account type", e); 7086ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki } 71ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey } 72ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 73ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey @Override 7486ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki protected DataKind addDataKindStructuredName(Context context) throws DefinitionException { 755ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov DataKind kind = addKind(new DataKind(StructuredName.CONTENT_ITEM_TYPE, 7650a27b70581b0191995969c63edd1f6a3db3d1b7Makoto Onuki R.string.nameLabelsGroup, -1, true, R.layout.structured_name_editor_view)); 775ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov kind.actionHeader = new SimpleInflater(R.string.nameLabelsGroup); 785ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov kind.actionBody = new SimpleInflater(Nickname.NAME); 795ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov 805ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov kind.typeOverallMax = 1; 815ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov 825ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov kind.fieldList = Lists.newArrayList(); 835ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix, 845ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov FLAGS_PERSON_NAME).setOptional(true)); 855ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME, 865ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov R.string.name_family, FLAGS_PERSON_NAME)); 875ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, 885ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov R.string.name_middle, FLAGS_PERSON_NAME)); 895ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME, 905ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov R.string.name_given, FLAGS_PERSON_NAME)); 915ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredName.SUFFIX, 925ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov R.string.name_suffix, FLAGS_PERSON_NAME)); 935ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov 945ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME, 955ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov R.string.name_phonetic_family, FLAGS_PHONETIC)); 965ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME, 975ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov R.string.name_phonetic_given, FLAGS_PHONETIC)); 985ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov 995ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov return kind; 1005ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov } 1015ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov 1025ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov @Override 10386ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki protected DataKind addDataKindDisplayName(Context context) throws DefinitionException { 1045ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov DataKind kind = addKind(new DataKind(DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME, 10550a27b70581b0191995969c63edd1f6a3db3d1b7Makoto Onuki R.string.nameLabelsGroup, -1, true, R.layout.text_fields_editor_view)); 106b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov 107b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov boolean displayOrderPrimary = 108b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov context.getResources().getBoolean(R.bool.config_editor_field_order_primary); 109b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeOverallMax = 1; 110b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov 111b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList = Lists.newArrayList(); 112b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix, 113b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov FLAGS_PERSON_NAME).setOptional(true)); 114b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov if (!displayOrderPrimary) { 115b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME, 116b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov R.string.name_family, FLAGS_PERSON_NAME)); 117b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, 118b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov R.string.name_middle, FLAGS_PERSON_NAME).setOptional(true)); 119b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME, 120b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov R.string.name_given, FLAGS_PERSON_NAME)); 121b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov } else { 122b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME, 123b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov R.string.name_given, FLAGS_PERSON_NAME)); 124b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, 125b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov R.string.name_middle, FLAGS_PERSON_NAME).setOptional(true)); 126b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME, 127b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov R.string.name_family, FLAGS_PERSON_NAME)); 128ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey } 1295ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredName.SUFFIX, 1305ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov R.string.name_suffix, FLAGS_PERSON_NAME).setOptional(true)); 1315ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov 1325ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov return kind; 1335ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov } 134ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 1355ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov @Override 13686ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki protected DataKind addDataKindPhoneticName(Context context) throws DefinitionException { 1375ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov DataKind kind = addKind(new DataKind(DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME, 13850a27b70581b0191995969c63edd1f6a3db3d1b7Makoto Onuki R.string.name_phonetic, -1, true, R.layout.phonetic_name_editor_view)); 1395ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov kind.actionHeader = new SimpleInflater(R.string.nameLabelsGroup); 1405ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov kind.actionBody = new SimpleInflater(Nickname.NAME); 1415ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov 1425ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov kind.typeOverallMax = 1; 1435ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov 1445ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov kind.fieldList = Lists.newArrayList(); 14527e78563c1f04490ffa8b850a0442715482d1f2cDmitri Plotnikov kind.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME, 1465ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov R.string.name_phonetic_family, FLAGS_PHONETIC)); 14727e78563c1f04490ffa8b850a0442715482d1f2cDmitri Plotnikov kind.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME, 1485ec40b04041818bc042c0671cb1a43b54f650e25Dmitri Plotnikov R.string.name_phonetic_given, FLAGS_PHONETIC)); 14927e78563c1f04490ffa8b850a0442715482d1f2cDmitri Plotnikov 150ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey return kind; 151ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey } 152ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 153ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey @Override 15486ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki protected DataKind addDataKindNickname(Context context) throws DefinitionException { 155b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov final DataKind kind = super.addDataKindNickname(context); 156ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 15750a27b70581b0191995969c63edd1f6a3db3d1b7Makoto Onuki kind.typeOverallMax = 1; 158ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 159b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList = Lists.newArrayList(); 160b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(Nickname.NAME, R.string.nicknameLabelsGroup, 161b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov FLAGS_PERSON_NAME)); 162ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 163ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey return kind; 164ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey } 165ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 166ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey @Override 16786ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki protected DataKind addDataKindPhone(Context context) throws DefinitionException { 168b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov final DataKind kind = super.addDataKindPhone(context); 169b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov 170b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeColumn = Phone.TYPE; 171b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList = Lists.newArrayList(); 172b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildPhoneType(Phone.TYPE_HOME).setSpecificMax(2)); 173b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildPhoneType(Phone.TYPE_MOBILE).setSpecificMax(1)); 174b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildPhoneType(Phone.TYPE_WORK).setSpecificMax(2)); 175b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_WORK).setSecondary(true) 176b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov .setSpecificMax(1)); 177b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_HOME).setSecondary(true) 178b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov .setSpecificMax(1)); 179b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList 180b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov .add(buildPhoneType(Phone.TYPE_PAGER).setSecondary(true).setSpecificMax(1)); 181b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildPhoneType(Phone.TYPE_CAR).setSecondary(true).setSpecificMax(1)); 182b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildPhoneType(Phone.TYPE_COMPANY_MAIN).setSecondary(true) 183b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov .setSpecificMax(1)); 184b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildPhoneType(Phone.TYPE_MMS).setSecondary(true).setSpecificMax(1)); 185b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList 186b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov .add(buildPhoneType(Phone.TYPE_RADIO).setSecondary(true).setSpecificMax(1)); 187b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildPhoneType(Phone.TYPE_ASSISTANT).setSecondary(true) 188b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov .setSpecificMax(1)); 189b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov 190b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList = Lists.newArrayList(); 191b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(Phone.NUMBER, R.string.phoneLabelsGroup, FLAGS_PHONE)); 192ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 193ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey return kind; 194ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey } 195ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 196ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey @Override 19786ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki protected DataKind addDataKindEmail(Context context) throws DefinitionException { 198b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov final DataKind kind = super.addDataKindEmail(context); 199ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 200b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeOverallMax = 3; 201ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 202b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList = Lists.newArrayList(); 203b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(Email.DATA, R.string.emailLabelsGroup, FLAGS_EMAIL)); 204ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 205ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey return kind; 206ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey } 207ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 208ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey @Override 20986ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki protected DataKind addDataKindStructuredPostal(Context context) throws DefinitionException { 210b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov final DataKind kind = super.addDataKindStructuredPostal(context); 211b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov 212b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov final boolean useJapaneseOrder = 213b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov Locale.JAPANESE.getLanguage().equals(Locale.getDefault().getLanguage()); 214b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeColumn = StructuredPostal.TYPE; 215b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList = Lists.newArrayList(); 216b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildPostalType(StructuredPostal.TYPE_WORK).setSpecificMax(1)); 217b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildPostalType(StructuredPostal.TYPE_HOME).setSpecificMax(1)); 218b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildPostalType(StructuredPostal.TYPE_OTHER).setSpecificMax(1)); 219b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov 220b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList = Lists.newArrayList(); 221b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov if (useJapaneseOrder) { 222b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredPostal.COUNTRY, 223b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov R.string.postal_country, FLAGS_POSTAL).setOptional(true)); 224b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredPostal.POSTCODE, 225b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov R.string.postal_postcode, FLAGS_POSTAL)); 226b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredPostal.REGION, 227b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov R.string.postal_region, FLAGS_POSTAL)); 228b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredPostal.CITY, 229b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov R.string.postal_city,FLAGS_POSTAL)); 230b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredPostal.STREET, 231b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov R.string.postal_street, FLAGS_POSTAL)); 232b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov } else { 233b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredPostal.STREET, 234b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov R.string.postal_street, FLAGS_POSTAL)); 235b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredPostal.CITY, 236b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov R.string.postal_city,FLAGS_POSTAL)); 237b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredPostal.REGION, 238b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov R.string.postal_region, FLAGS_POSTAL)); 239b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredPostal.POSTCODE, 240b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov R.string.postal_postcode, FLAGS_POSTAL)); 241b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(StructuredPostal.COUNTRY, 242b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov R.string.postal_country, FLAGS_POSTAL).setOptional(true)); 243ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey } 244ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 245ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey return kind; 246ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey } 247ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 248ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey @Override 24986ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki protected DataKind addDataKindIm(Context context) throws DefinitionException { 250b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov final DataKind kind = super.addDataKindIm(context); 251ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 252b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov // Types are not supported for IM. There can be 3 IMs, but OWA only shows only the first 253b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeOverallMax = 3; 254ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 255b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.defaultValues = new ContentValues(); 256b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.defaultValues.put(Im.TYPE, Im.TYPE_OTHER); 257ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 258b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList = Lists.newArrayList(); 259b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(Im.DATA, R.string.imLabelsGroup, FLAGS_EMAIL)); 260ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 261ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey return kind; 262ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey } 263ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 264ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey @Override 26586ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki protected DataKind addDataKindOrganization(Context context) throws DefinitionException { 266b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov final DataKind kind = super.addDataKindOrganization(context); 267ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 26850a27b70581b0191995969c63edd1f6a3db3d1b7Makoto Onuki kind.typeOverallMax = 1; 269ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 270b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList = Lists.newArrayList(); 271b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(Organization.COMPANY, R.string.ghostData_company, 272b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov FLAGS_GENERIC_NAME)); 273b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(Organization.TITLE, R.string.ghostData_title, 274b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov FLAGS_GENERIC_NAME)); 275ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 276ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey return kind; 277ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey } 278ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 279ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey @Override 28086ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki protected DataKind addDataKindPhoto(Context context) throws DefinitionException { 281b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov final DataKind kind = super.addDataKindPhoto(context); 282ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 283b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeOverallMax = 1; 284ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 285b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList = Lists.newArrayList(); 286b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(Photo.PHOTO, -1, -1)); 287ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 288ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey return kind; 289ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey } 290ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 291ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey @Override 29286ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki protected DataKind addDataKindNote(Context context) throws DefinitionException { 293b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov final DataKind kind = super.addDataKindNote(context); 294ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 295b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList = Lists.newArrayList(); 296b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(Note.NOTE, R.string.label_notes, FLAGS_NOTE)); 297ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 298ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey return kind; 299ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey } 300ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 30186ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki protected DataKind addDataKindEvent(Context context) throws DefinitionException { 302b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov DataKind kind = addKind( 303ee05dcdd4b066ad909322c10919fb1812214673bKatherine Kuan new DataKind(Event.CONTENT_ITEM_TYPE, R.string.eventLabelsGroup, 150, true, 30450a27b70581b0191995969c63edd1f6a3db3d1b7Makoto Onuki R.layout.event_field_editor_view)); 305b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.actionHeader = new EventActionInflater(); 306b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.actionBody = new SimpleInflater(Event.START_DATE); 307392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 30850a27b70581b0191995969c63edd1f6a3db3d1b7Makoto Onuki kind.typeOverallMax = 1; 309392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 310b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeColumn = Event.TYPE; 311b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList = Lists.newArrayList(); 312b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildEventType(Event.TYPE_BIRTHDAY, false).setSpecificMax(1)); 313392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 314b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.dateFormatWithYear = DateUtils.DATE_AND_TIME_FORMAT; 315392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 316b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList = Lists.newArrayList(); 317b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(Event.DATA, R.string.eventLabelsGroup, FLAGS_EVENT)); 318392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 319392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann return kind; 320392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 321392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 322ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey @Override 32386ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki protected DataKind addDataKindWebsite(Context context) throws DefinitionException { 324b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov final DataKind kind = super.addDataKindWebsite(context); 325ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 32650a27b70581b0191995969c63edd1f6a3db3d1b7Makoto Onuki kind.typeOverallMax = 1; 327ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 328b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList = Lists.newArrayList(); 329b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(Website.URL, R.string.websiteLabelsGroup, FLAGS_WEBSITE)); 330ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 331ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey return kind; 332ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey } 3335297c6af41f3fd2f08cff5b84105af4efd1ab79fJeff Hamilton 3345297c6af41f3fd2f08cff5b84105af4efd1ab79fJeff Hamilton @Override 335fd33cc3ab956222dffa6b669a13a614747a5cdffKatherine Kuan public boolean isGroupMembershipEditable() { 336fd33cc3ab956222dffa6b669a13a614747a5cdffKatherine Kuan return true; 337fd33cc3ab956222dffa6b669a13a614747a5cdffKatherine Kuan } 33896e87fd6e808e9d853263ffeb5104f3253a18639Daniel Lehmann 33996e87fd6e808e9d853263ffeb5104f3253a18639Daniel Lehmann @Override 34096e87fd6e808e9d853263ffeb5104f3253a18639Daniel Lehmann public boolean areContactsWritable() { 34196e87fd6e808e9d853263ffeb5104f3253a18639Daniel Lehmann return true; 34296e87fd6e808e9d853263ffeb5104f3253a18639Daniel Lehmann } 343ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey} 344