summaryrefslogtreecommitdiffstats
path: root/src/com/android/messaging/datamodel/media/VCardResourceEntry.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/messaging/datamodel/media/VCardResourceEntry.java')
-rw-r--r--src/com/android/messaging/datamodel/media/VCardResourceEntry.java389
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;
- }
- };
- }
- }
-}