RecipientEntry.java revision b5ebb8916a1bb178062a0ccb59e80de27ec1bb2d
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 */ 24f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereirapublic class RecipientEntry { 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. */ 33f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira public static final RecipientEntry SEP_NORMAL = 34f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira new RecipientEntry(ENTRY_TYPE_SEP_NORMAL); 3541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa /** Separator entry dividing two entries inside a person or a group. */ 36f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira public static final RecipientEntry SEP_WITHIN_GROUP = 37f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira new RecipientEntry(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; 49b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa /** ID for the person */ 5041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private final int mContactId; 51b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa /** ID for the destination */ 52b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa private final int mDataId; 5341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private final boolean mIsDivider; 5424a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 5524a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa private final Uri mPhotoThumbnailUri; 5624a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 5724a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa /** 5824a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa * This can be updated after this object being constructed, when the photo is fetched 5924a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa * from remote directories. 6024a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa */ 6141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private byte[] mPhotoBytes; 6241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 63f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira private RecipientEntry(int entryType) { 6424a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mEntryType = entryType; 6541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDisplayName = null; 6641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDestination = null; 6741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mContactId = -1; 68b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa mDataId = -1; 6924a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoThumbnailUri = null; 7041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mPhotoBytes = null; 7141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mIsDivider = true; 7241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 7341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 74b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa 75f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira private RecipientEntry( 76b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa int entryType, String displayName, String destination, int contactId, int dataId) { 7724a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mEntryType = entryType; 7841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mIsFirstLevel = false; 7941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDisplayName = displayName; 8041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDestination = destination; 8141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mContactId = contactId; 82b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa mDataId = dataId; 8324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoThumbnailUri = null; 8424a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoBytes = null; 8541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mIsDivider = false; 8641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 8741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 88f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira private RecipientEntry( 89b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa int entryType, String displayName, String destination, int contactId, int dataId, 9024a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa Uri photoThumbnailUri) { 9124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mEntryType = entryType; 9241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mIsFirstLevel = true; 9341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDisplayName = displayName; 9441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDestination = destination; 9541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mContactId = contactId; 96b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa mDataId = dataId; 9724a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoThumbnailUri = photoThumbnailUri; 9824a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoBytes = null; 9941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mIsDivider = false; 10041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 10141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 102f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira /** 103f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira * Construct a RecipientEntry from just an address that has been entered. 104f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira * This address has not been resolved to a contact and therefore does not 105f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira * have a contact id or photo. 106f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira */ 107f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira public static RecipientEntry constructFakeEntry(String address) { 108b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa return new RecipientEntry(ENTRY_TYPE_PERSON, address, address, -1, -1, null); 109f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira } 110f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira 111f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira public static RecipientEntry constructTopLevelEntry( 112b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa String displayName, String destination, int contactId, int dataId, 113b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa Uri photoThumbnailUri) { 114f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira return new RecipientEntry( 115b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa ENTRY_TYPE_PERSON, displayName, destination, contactId, dataId, photoThumbnailUri); 11624a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa } 11724a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 118f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira public static RecipientEntry constructTopLevelEntry( 119b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa String displayName, String destination, int contactId, int dataId, 120b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa String thumbnailUriAsString) { 121f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira return new RecipientEntry( 122b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa ENTRY_TYPE_PERSON, displayName, destination, contactId, dataId, 12324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa (thumbnailUriAsString != null ? Uri.parse(thumbnailUriAsString) : null)); 12441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 12541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 126f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira public static RecipientEntry constructSecondLevelEntry( 127b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa String displayName, String destination, int contactId, int dataId) { 128b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa return new RecipientEntry( 129b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa ENTRY_TYPE_PERSON, displayName, destination, contactId, dataId); 13024a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa } 13124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 13224a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public int getEntryType() { 13324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa return mEntryType; 13441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 13541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 13641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public String getDisplayName() { 13741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mDisplayName; 13841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 13941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 14041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public String getDestination() { 14141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mDestination; 14241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 14341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 14441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public int getContactId() { 14541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mContactId; 14641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 14741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 148b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa public int getDataId() { 149b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa return mDataId; 150b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa } 151b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa 15241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public boolean isFirstLevel() { 15341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mIsFirstLevel; 15441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 15541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 15624a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public Uri getPhotoThumbnailUri() { 15724a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa return mPhotoThumbnailUri; 15824a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa } 15924a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 16024a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa /** This can be called outside main Looper thread. */ 16124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public synchronized void setPhotoBytes(byte[] photoBytes) { 16224a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoBytes = photoBytes; 16324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa } 16424a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 16524a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa /** This can be called outside main Looper thread. */ 16624a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public synchronized byte[] getPhotoBytes() { 16741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mPhotoBytes; 16841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 16941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 17041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public boolean isSeparator() { 17141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mIsDivider; 17241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 17341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa}