RecipientEntry.java revision 24a05a268d1fa2839d62361dc50b88a4c2a2975b
141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa/* 241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * Copyright (C) 2011 The Android Open Source Project 341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * 441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * Licensed under the Apache License, Version 2.0 (the "License"); 541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * you may not use this file except in compliance with the License. 641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * You may obtain a copy of the License at 741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * 841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * http://www.apache.org/licenses/LICENSE-2.0 941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * 1041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * Unless required by applicable law or agreed to in writing, software 1141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * distributed under the License is distributed on an "AS IS" BASIS, 1241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * See the License for the specific language governing permissions and 1441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * limitations under the License. 1541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa */ 1641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 1741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawapackage com.android.ex.chips; 1841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 1924a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawaimport android.net.Uri; 2024a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 2141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa/** 2241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * Represents one entry inside recipient auto-complete list. 2341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa */ 2441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawapublic class RecipientListEntry { 2524a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 2624a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public static final int ENTRY_TYPE_PERSON = 0; 2724a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public static final int ENTRY_TYPE_SEP_NORMAL = 1; 2824a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public static final int ENTRY_TYPE_SEP_WITHIN_GROUP = 2; 2924a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 3024a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public static final int ENTRY_TYPE_SIZE = 3; 3124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 3241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa /** Separator entry dividing two persons or groups. */ 3324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public static final RecipientListEntry SEP_NORMAL = 3424a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa new RecipientListEntry(ENTRY_TYPE_SEP_NORMAL); 3541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa /** Separator entry dividing two entries inside a person or a group. */ 3624a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public static final RecipientListEntry SEP_WITHIN_GROUP = 3724a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa new RecipientListEntry(ENTRY_TYPE_SEP_WITHIN_GROUP); 3824a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 3924a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa private final int mEntryType; 4041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 4141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa /** 4241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * True when this entry is the first entry in a group, which should have a photo and display 4341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * name, while the second or later entries won't. 4441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa */ 4541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private boolean mIsFirstLevel; 4641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private final String mDisplayName; 4741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa /** Destination for this contact entry. Would be an email address or a phone number. */ 4841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private final String mDestination; 4941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private final int mContactId; 5041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private final boolean mIsDivider; 5124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 5224a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa private final Uri mPhotoThumbnailUri; 5324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 5424a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa /** 5524a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa * This can be updated after this object being constructed, when the photo is fetched 5624a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa * from remote directories. 5724a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa */ 5841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private byte[] mPhotoBytes; 5941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 6024a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa private RecipientListEntry(int entryType) { 6124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mEntryType = entryType; 6241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDisplayName = null; 6341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDestination = null; 6441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mContactId = -1; 6524a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoThumbnailUri = null; 6641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mPhotoBytes = null; 6741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mIsDivider = true; 6841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 6941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 7024a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa private RecipientListEntry( 7124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa int entryType, String displayName, String destination, int contactId) { 7224a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mEntryType = entryType; 7341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mIsFirstLevel = false; 7441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDisplayName = displayName; 7541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDestination = destination; 7641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mContactId = contactId; 7724a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoThumbnailUri = null; 7824a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoBytes = null; 7941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mIsDivider = false; 8041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 8141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 8241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private RecipientListEntry( 8324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa int entryType, String displayName, String destination, int contactId, 8424a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa Uri photoThumbnailUri) { 8524a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mEntryType = entryType; 8641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mIsFirstLevel = true; 8741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDisplayName = displayName; 8841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDestination = destination; 8941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mContactId = contactId; 9024a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoThumbnailUri = photoThumbnailUri; 9124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoBytes = null; 9241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mIsDivider = false; 9341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 9441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 9541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public static RecipientListEntry constructTopLevelEntry( 9624a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa String displayName, String destination, int contactId, Uri photoThumbnailUri) { 9724a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa return new RecipientListEntry( 9824a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa ENTRY_TYPE_PERSON, displayName, destination, contactId, photoThumbnailUri); 9924a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa } 10024a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 10124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public static RecipientListEntry constructTopLevelEntry( 10224a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa String displayName, String destination, int contactId, String thumbnailUriAsString) { 10324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa return new RecipientListEntry( 10424a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa ENTRY_TYPE_PERSON, displayName, destination, contactId, 10524a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa (thumbnailUriAsString != null ? Uri.parse(thumbnailUriAsString) : null)); 10641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 10741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 10841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public static RecipientListEntry constructSecondLevelEntry( 10941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa String displayName, String destination, int contactId) { 11024a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa return new RecipientListEntry(ENTRY_TYPE_PERSON, displayName, destination, contactId); 11124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa } 11224a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 11324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public int getEntryType() { 11424a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa return mEntryType; 11541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 11641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 11741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public String getDisplayName() { 11841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mDisplayName; 11941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 12041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 12141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public String getDestination() { 12241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mDestination; 12341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 12441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 12541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public int getContactId() { 12641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mContactId; 12741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 12841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 12941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public boolean isFirstLevel() { 13041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mIsFirstLevel; 13141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 13241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 13324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public Uri getPhotoThumbnailUri() { 13424a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa return mPhotoThumbnailUri; 13524a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa } 13624a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 13724a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa /** This can be called outside main Looper thread. */ 13824a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public synchronized void setPhotoBytes(byte[] photoBytes) { 13924a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoBytes = photoBytes; 14024a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa } 14124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 14224a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa /** This can be called outside main Looper thread. */ 14324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public synchronized byte[] getPhotoBytes() { 14441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mPhotoBytes; 14541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 14641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 14741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public boolean isSeparator() { 14841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mIsDivider; 14941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 15041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa}