diff options
Diffstat (limited to 'src/com/android/messaging/datamodel/media/VCardResourceEntry.java')
-rw-r--r-- | src/com/android/messaging/datamodel/media/VCardResourceEntry.java | 389 |
1 files changed, 0 insertions, 389 deletions
diff --git a/src/com/android/messaging/datamodel/media/VCardResourceEntry.java b/src/com/android/messaging/datamodel/media/VCardResourceEntry.java deleted file mode 100644 index f76b796..0000000 --- a/src/com/android/messaging/datamodel/media/VCardResourceEntry.java +++ /dev/null @@ -1,389 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.messaging.datamodel.media; - -import android.content.Intent; -import android.content.res.Resources; -import android.content.res.Resources.NotFoundException; -import android.net.Uri; -import android.provider.ContactsContract.CommonDataKinds.Im; -import android.provider.ContactsContract.CommonDataKinds.Organization; -import android.provider.ContactsContract.CommonDataKinds.Phone; -import android.support.v4.util.ArrayMap; -import android.text.TextUtils; - -import com.android.messaging.Factory; -import com.android.messaging.R; -import com.android.messaging.datamodel.MediaScratchFileProvider; -import com.android.messaging.datamodel.data.PersonItemData; -import com.android.messaging.util.ContactUtil; -import com.android.messaging.util.LogUtil; -import com.android.messaging.util.SafeAsyncTask; -import com.android.vcard.VCardEntry; -import com.android.vcard.VCardEntry.EmailData; -import com.android.vcard.VCardEntry.ImData; -import com.android.vcard.VCardEntry.NoteData; -import com.android.vcard.VCardEntry.OrganizationData; -import com.android.vcard.VCardEntry.PhoneData; -import com.android.vcard.VCardEntry.PostalData; -import com.android.vcard.VCardEntry.WebsiteData; -import com.android.vcard.VCardProperty; - -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.List; - -/** - * Holds one entry item (i.e. a single contact) within a VCard resource. It is able to take - * a VCardEntry and extract relevant information from it. - */ -public class VCardResourceEntry { - public static final String PROPERTY_KIND = "KIND"; - - public static final String KIND_LOCATION = "location"; - - private final List<VCardResourceEntry.VCardResourceEntryDestinationItem> mContactInfo; - private final Uri mAvatarUri; - private final String mDisplayName; - private final CustomVCardEntry mVCard; - - public VCardResourceEntry(final CustomVCardEntry vcard, final Uri avatarUri) { - mContactInfo = getContactInfoFromVCardEntry(vcard); - mDisplayName = getDisplayNameFromVCardEntry(vcard); - mAvatarUri = avatarUri; - mVCard = vcard; - } - - void close() { - // If the avatar image was temporarily saved in the scratch folder, remove that. - if (MediaScratchFileProvider.isMediaScratchSpaceUri(mAvatarUri)) { - SafeAsyncTask.executeOnThreadPool(new Runnable() { - @Override - public void run() { - Factory.get().getApplicationContext().getContentResolver().delete( - mAvatarUri, null, null); - } - }); - } - } - - public String getKind() { - VCardProperty kindProperty = mVCard.getProperty(PROPERTY_KIND); - return kindProperty == null ? null : kindProperty.getRawValue(); - } - - public Uri getAvatarUri() { - return mAvatarUri; - } - - public String getDisplayName() { - return mDisplayName; - } - - public String getDisplayAddress() { - List<PostalData> postalList = mVCard.getPostalList(); - if (postalList == null || postalList.size() < 1) { - return null; - } - - return formatAddress(postalList.get(0)); - } - - public String getNotes() { - List<NoteData> notes = mVCard.getNotes(); - if (notes == null || notes.size() == 0) { - return null; - } - StringBuilder noteBuilder = new StringBuilder(); - for (NoteData note : notes) { - noteBuilder.append(note.getNote()); - } - return noteBuilder.toString(); - } - - /** - * Returns a UI-facing representation that can be bound and consumed by the UI layer to display - * this VCard resource entry. - */ - public PersonItemData getDisplayItem() { - return new PersonItemData() { - @Override - public Uri getAvatarUri() { - return VCardResourceEntry.this.getAvatarUri(); - } - - @Override - public String getDisplayName() { - return VCardResourceEntry.this.getDisplayName(); - } - - @Override - public String getDetails() { - return null; - } - - @Override - public Intent getClickIntent() { - return null; - } - - @Override - public long getContactId() { - return ContactUtil.INVALID_CONTACT_ID; - } - - @Override - public String getLookupKey() { - return null; - } - - @Override - public String getNormalizedDestination() { - return null; - } - }; - } - - public List<VCardResourceEntry.VCardResourceEntryDestinationItem> getContactInfo() { - return mContactInfo; - } - - private static List<VCardResourceEntryDestinationItem> getContactInfoFromVCardEntry( - final VCardEntry vcard) { - final Resources resources = Factory.get().getApplicationContext().getResources(); - final List<VCardResourceEntry.VCardResourceEntryDestinationItem> retList = - new ArrayList<VCardResourceEntry.VCardResourceEntryDestinationItem>(); - if (vcard.getPhoneList() != null) { - for (final PhoneData phone : vcard.getPhoneList()) { - final Intent intent = new Intent(Intent.ACTION_DIAL); - intent.setData(Uri.parse("tel:" + phone.getNumber())); - retList.add(new VCardResourceEntryDestinationItem(phone.getNumber(), - Phone.getTypeLabel(resources, phone.getType(), phone.getLabel()).toString(), - intent)); - } - } - - if (vcard.getEmailList() != null) { - for (final EmailData email : vcard.getEmailList()) { - final Intent intent = new Intent(Intent.ACTION_SENDTO); - intent.setData(Uri.parse("mailto:")); - intent.putExtra(Intent.EXTRA_EMAIL, new String[] { email.getAddress() }); - retList.add(new VCardResourceEntryDestinationItem(email.getAddress(), - Phone.getTypeLabel(resources, email.getType(), - email.getLabel()).toString(), intent)); - } - } - - if (vcard.getPostalList() != null) { - for (final PostalData postalData : vcard.getPostalList()) { - String type; - try { - type = resources. - getStringArray(android.R.array.postalAddressTypes) - [postalData.getType() - 1]; - } catch (final NotFoundException ex) { - type = resources.getStringArray(android.R.array.postalAddressTypes)[2]; - } catch (final Exception e) { - LogUtil.e(LogUtil.BUGLE_TAG, "createContactItem postal Exception:" + e); - type = resources.getStringArray(android.R.array.postalAddressTypes)[2]; - } - Intent intent = new Intent(Intent.ACTION_VIEW); - final String address = formatAddress(postalData); - try { - intent.setData(Uri.parse("geo:0,0?q=" + URLEncoder.encode(address, "UTF-8"))); - } catch (UnsupportedEncodingException e) { - intent = null; - } - - retList.add(new VCardResourceEntryDestinationItem(address, type, intent)); - } - } - - if (vcard.getImList() != null) { - for (final ImData imData : vcard.getImList()) { - String type = null; - try { - type = resources. - getString(Im.getProtocolLabelResource(imData.getProtocol())); - } catch (final NotFoundException ex) { - // Do nothing since this implies an empty label. - } - retList.add(new VCardResourceEntryDestinationItem(imData.getAddress(), type, null)); - } - } - - if (vcard.getOrganizationList() != null) { - for (final OrganizationData organtization : vcard.getOrganizationList()) { - String type = null; - try { - type = resources.getString(Organization.getTypeLabelResource( - organtization.getType())); - } catch (final NotFoundException ex) { - //set other kind as "other" - type = resources.getStringArray(android.R.array.organizationTypes)[1]; - } catch (final Exception e) { - LogUtil.e(LogUtil.BUGLE_TAG, "createContactItem org Exception:" + e); - type = resources.getStringArray(android.R.array.organizationTypes)[1]; - } - retList.add(new VCardResourceEntryDestinationItem( - organtization.getOrganizationName(), type, null)); - } - } - - if (vcard.getWebsiteList() != null) { - for (final WebsiteData web : vcard.getWebsiteList()) { - if (web != null && TextUtils.isGraphic(web.getWebsite())){ - String website = web.getWebsite(); - if (!website.startsWith("http://") && !website.startsWith("https://")) { - // Prefix required for parsing to end up with a scheme and result in - // navigation - website = "http://" + website; - } - final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(website)); - retList.add(new VCardResourceEntryDestinationItem(web.getWebsite(), null, - intent)); - } - } - } - - if (vcard.getBirthday() != null) { - final String birthday = vcard.getBirthday(); - if (TextUtils.isGraphic(birthday)){ - retList.add(new VCardResourceEntryDestinationItem(birthday, - resources.getString(R.string.vcard_detail_birthday_label), null)); - } - } - - if (vcard.getNotes() != null) { - for (final NoteData note : vcard.getNotes()) { - final ArrayMap<String, String> curChildMap = new ArrayMap<String, String>(); - if (TextUtils.isGraphic(note.getNote())){ - retList.add(new VCardResourceEntryDestinationItem(note.getNote(), - resources.getString(R.string.vcard_detail_notes_label), null)); - } - } - } - return retList; - } - - private static String formatAddress(final PostalData postalData) { - final StringBuilder sb = new StringBuilder(); - final String poBox = postalData.getPobox(); - if (!TextUtils.isEmpty(poBox)) { - sb.append(poBox); - sb.append(" "); - } - final String extendedAddress = postalData.getExtendedAddress(); - if (!TextUtils.isEmpty(extendedAddress)) { - sb.append(extendedAddress); - sb.append(" "); - } - final String street = postalData.getStreet(); - if (!TextUtils.isEmpty(street)) { - sb.append(street); - sb.append(" "); - } - final String localty = postalData.getLocalty(); - if (!TextUtils.isEmpty(localty)) { - sb.append(localty); - sb.append(" "); - } - final String region = postalData.getRegion(); - if (!TextUtils.isEmpty(region)) { - sb.append(region); - sb.append(" "); - } - final String postalCode = postalData.getPostalCode(); - if (!TextUtils.isEmpty(postalCode)) { - sb.append(postalCode); - sb.append(" "); - } - final String country = postalData.getCountry(); - if (!TextUtils.isEmpty(country)) { - sb.append(country); - } - return sb.toString(); - } - - private static String getDisplayNameFromVCardEntry(final VCardEntry vcard) { - String name = vcard.getDisplayName(); - if (name == null) { - vcard.consolidateFields(); - name = vcard.getDisplayName(); - } - return name; - } - - /** - * Represents one entry line (e.g. phone number and phone label) for a single contact. Each - * VCardResourceEntry may hold one or more VCardResourceEntryDestinationItem's. - */ - public static class VCardResourceEntryDestinationItem { - private final String mDisplayDestination; - private final String mDestinationType; - private final Intent mClickIntent; - public VCardResourceEntryDestinationItem(final String displayDestination, - final String destinationType, final Intent clickIntent) { - mDisplayDestination = displayDestination; - mDestinationType = destinationType; - mClickIntent = clickIntent; - } - - /** - * Returns a UI-facing representation that can be bound and consumed by the UI layer to - * display this VCard resource destination entry. - */ - public PersonItemData getDisplayItem() { - return new PersonItemData() { - @Override - public Uri getAvatarUri() { - return null; - } - - @Override - public String getDisplayName() { - return mDisplayDestination; - } - - @Override - public String getDetails() { - return mDestinationType; - } - - @Override - public Intent getClickIntent() { - return mClickIntent; - } - - @Override - public long getContactId() { - return ContactUtil.INVALID_CONTACT_ID; - } - - @Override - public String getLookupKey() { - return null; - } - - @Override - public String getNormalizedDestination() { - return null; - } - }; - } - } -} |