RecipientEntry.java revision 886150f6f05991d33a57213274bd51f94140f4e3
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; 208c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawaimport android.provider.ContactsContract.CommonDataKinds.Email; 2124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 2241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa/** 2341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * Represents one entry inside recipient auto-complete list. 2441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa */ 25f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereirapublic class RecipientEntry { 268c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa /* package */ static final int INVALID_CONTACT = -1; 271174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira /** 281174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira * A GENERATED_CONTACT is one that was created based entirely on 291174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira * information passed in to the RecipientEntry from an external source 301174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira * that is not a real contact. 311174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira */ 328c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa /* package */ static final int GENERATED_CONTACT = -2; 338c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa 348c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa /** Used when {@link #mDestinationType} is invalid and thus shouldn't be used for display. */ 358c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa /* package */ static final int INVALID_DESTINATION_TYPE = -1; 3624a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 3724a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public static final int ENTRY_TYPE_PERSON = 0; 38886150f6f05991d33a57213274bd51f94140f4e3Mindy Pereira public static final int ENTRY_TYPE_WAITING_FOR_DIRECTORY_SEARCH = 1; 3924a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 40886150f6f05991d33a57213274bd51f94140f4e3Mindy Pereira public static final int ENTRY_TYPE_SIZE = 2; 4124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 42a601adc796fa7276771e6ab2670bf50663555489Daisuke Miyakawa public static final RecipientEntry WAITING_FOR_DIRECTORY_SEARCH = 43a601adc796fa7276771e6ab2670bf50663555489Daisuke Miyakawa new RecipientEntry(ENTRY_TYPE_WAITING_FOR_DIRECTORY_SEARCH); 4424a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 4524a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa private final int mEntryType; 4641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 4741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa /** 4841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * True when this entry is the first entry in a group, which should have a photo and display 4941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * name, while the second or later entries won't. 5041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa */ 5141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private boolean mIsFirstLevel; 5241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private final String mDisplayName; 5341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa /** Destination for this contact entry. Would be an email address or a phone number. */ 5441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private final String mDestination; 558c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa /** Type of the destination like {@link Email#TYPE_HOME} */ 568c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa private final int mDestinationType; 578c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa /** 588c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa * Label of the destination which will be used when type was {@link Email#TYPE_CUSTOM}. 598c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa * Can be null when {@link #mDestinationType} is {@link #INVALID_DESTINATION_TYPE}. 608c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa */ 618c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa private final String mDestinationLabel; 62b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa /** ID for the person */ 6365b8c0327b00beda9309c7b7c116013d03b06d90Daisuke Miyakawa private final long mContactId; 64b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa /** ID for the destination */ 6565b8c0327b00beda9309c7b7c116013d03b06d90Daisuke Miyakawa private final long mDataId; 6641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private final boolean mIsDivider; 6724a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 6824a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa private final Uri mPhotoThumbnailUri; 6924a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 7024a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa /** 7124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa * This can be updated after this object being constructed, when the photo is fetched 7224a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa * from remote directories. 7324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa */ 7441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private byte[] mPhotoBytes; 7541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 76f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira private RecipientEntry(int entryType) { 7724a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mEntryType = entryType; 7841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDisplayName = null; 7941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDestination = null; 808c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa mDestinationType = INVALID_DESTINATION_TYPE; 818c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa mDestinationLabel = null; 8241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mContactId = -1; 83b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa mDataId = -1; 8424a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoThumbnailUri = null; 8541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mPhotoBytes = null; 8641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mIsDivider = true; 8741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 8841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 89f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira private RecipientEntry( 908c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa int entryType, String displayName, 918c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa String destination, int destinationType, String destinationLabel, 928c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa long contactId, long dataId, Uri photoThumbnailUri, boolean isFirstLevel) { 9324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mEntryType = entryType; 9490081ee88c7eb216ea22f426aa6856e310a867e1Mindy Pereira mIsFirstLevel = isFirstLevel; 9541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDisplayName = displayName; 9641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDestination = destination; 978c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa mDestinationType = destinationType; 988c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa mDestinationLabel = destinationLabel; 9941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mContactId = contactId; 100b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa mDataId = dataId; 10124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoThumbnailUri = photoThumbnailUri; 10224a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoBytes = null; 10341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mIsDivider = false; 10441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 10541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 106f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira /** 1071174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira * Determine if this was a RecipientEntry created from recipient info or 1081174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira * an entry from contacts. 1091174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira */ 1101174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira public static boolean isCreatedRecipient(long id) { 1111174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira return id == RecipientEntry.INVALID_CONTACT || id == RecipientEntry.GENERATED_CONTACT; 1121174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira } 1131174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira 1141174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira /** 115f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira * Construct a RecipientEntry from just an address that has been entered. 116f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira * This address has not been resolved to a contact and therefore does not 117f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira * have a contact id or photo. 118f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira */ 119f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira public static RecipientEntry constructFakeEntry(String address) { 1208c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa return new RecipientEntry(ENTRY_TYPE_PERSON, address, address, 1218c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa INVALID_DESTINATION_TYPE, null, 1228c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa INVALID_CONTACT, INVALID_CONTACT, null, true); 1231174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira } 1241174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira 1251174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira /** 1261174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira * Construct a RecipientEntry from just an address that has been entered 1271174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira * with both an associated display name. This address has not been resolved 1281174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira * to a contact and therefore does not have a contact id or photo. 1291174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira */ 1301174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira public static RecipientEntry constructGeneratedEntry(String display, String address) { 1318c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa return new RecipientEntry(ENTRY_TYPE_PERSON, display, 1328c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa address, INVALID_DESTINATION_TYPE, null, 1338c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa GENERATED_CONTACT, GENERATED_CONTACT, null, true); 134f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira } 135f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira 136f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira public static RecipientEntry constructTopLevelEntry( 1378c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa String displayName, String destination, int destinationType, String destinationLabel, 1388c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa long contactId, long dataId, Uri photoThumbnailUri) { 1398c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa return new RecipientEntry(ENTRY_TYPE_PERSON, displayName, 1408c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa destination, destinationType, destinationLabel, 1418c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa contactId, dataId, 14290081ee88c7eb216ea22f426aa6856e310a867e1Mindy Pereira photoThumbnailUri, true); 14324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa } 14424a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 145f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira public static RecipientEntry constructTopLevelEntry( 1468c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa String displayName, String destination, int destinationType, String destinationLabel, 1478c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa long contactId, long dataId, 148b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa String thumbnailUriAsString) { 149f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira return new RecipientEntry( 1508c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa ENTRY_TYPE_PERSON, displayName, 1518c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa destination, destinationType, destinationLabel, 1528c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa contactId, dataId, 15390081ee88c7eb216ea22f426aa6856e310a867e1Mindy Pereira (thumbnailUriAsString != null ? Uri.parse(thumbnailUriAsString) : null), true); 15441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 15541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 156f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira public static RecipientEntry constructSecondLevelEntry( 1578c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa String displayName, String destination, int destinationType, String destinationLabel, 1588c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa long contactId, long dataId, String thumbnailUriAsString) { 159b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa return new RecipientEntry( 1608c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa ENTRY_TYPE_PERSON, displayName, 1618c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa destination, destinationType, destinationLabel, 1628c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa contactId, dataId, 16390081ee88c7eb216ea22f426aa6856e310a867e1Mindy Pereira (thumbnailUriAsString != null ? Uri.parse(thumbnailUriAsString) : null), false); 16424a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa } 16524a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 16624a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public int getEntryType() { 16724a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa return mEntryType; 16841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 16941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 17041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public String getDisplayName() { 17141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mDisplayName; 17241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 17341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 17441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public String getDestination() { 17541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mDestination; 17641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 17741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 1788c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa public int getDestinationType() { 1798c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa return mDestinationType; 1808c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa } 1818c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa 1828c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa public String getDestinationLabel() { 1838c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa return mDestinationLabel; 1848c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa } 1858c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa 18665b8c0327b00beda9309c7b7c116013d03b06d90Daisuke Miyakawa public long getContactId() { 18741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mContactId; 18841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 18941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 19065b8c0327b00beda9309c7b7c116013d03b06d90Daisuke Miyakawa public long getDataId() { 191b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa return mDataId; 192b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa } 193b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa 19441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public boolean isFirstLevel() { 19541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mIsFirstLevel; 19641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 19741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 19824a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public Uri getPhotoThumbnailUri() { 19924a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa return mPhotoThumbnailUri; 20024a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa } 20124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 20224a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa /** This can be called outside main Looper thread. */ 20324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public synchronized void setPhotoBytes(byte[] photoBytes) { 20424a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoBytes = photoBytes; 20524a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa } 20624a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 20724a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa /** This can be called outside main Looper thread. */ 20824a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public synchronized byte[] getPhotoBytes() { 20941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mPhotoBytes; 21041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 21141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 21241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public boolean isSeparator() { 21341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mIsDivider; 21441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 215e8adc2935e128eec6cae87ebfb3959b5bc6ec219Daisuke Miyakawa 216e8adc2935e128eec6cae87ebfb3959b5bc6ec219Daisuke Miyakawa public boolean isSelectable() { 217e8adc2935e128eec6cae87ebfb3959b5bc6ec219Daisuke Miyakawa return mEntryType == ENTRY_TYPE_PERSON; 218e8adc2935e128eec6cae87ebfb3959b5bc6ec219Daisuke Miyakawa } 21941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa}