RecipientEntry.java revision 8c03d35fec744db28a2a3230795f123c7afd50cc
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; 3824a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public static final int ENTRY_TYPE_SEP_NORMAL = 1; 3924a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public static final int ENTRY_TYPE_SEP_WITHIN_GROUP = 2; 40a601adc796fa7276771e6ab2670bf50663555489Daisuke Miyakawa public static final int ENTRY_TYPE_WAITING_FOR_DIRECTORY_SEARCH = 3; 4124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 42a601adc796fa7276771e6ab2670bf50663555489Daisuke Miyakawa public static final int ENTRY_TYPE_SIZE = 4; 4324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 4441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa /** Separator entry dividing two persons or groups. */ 45f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira public static final RecipientEntry SEP_NORMAL = 46f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira new RecipientEntry(ENTRY_TYPE_SEP_NORMAL); 4741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa /** Separator entry dividing two entries inside a person or a group. */ 48f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira public static final RecipientEntry SEP_WITHIN_GROUP = 49f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira new RecipientEntry(ENTRY_TYPE_SEP_WITHIN_GROUP); 50a601adc796fa7276771e6ab2670bf50663555489Daisuke Miyakawa public static final RecipientEntry WAITING_FOR_DIRECTORY_SEARCH = 51a601adc796fa7276771e6ab2670bf50663555489Daisuke Miyakawa new RecipientEntry(ENTRY_TYPE_WAITING_FOR_DIRECTORY_SEARCH); 5224a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 5324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa private final int mEntryType; 5441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 5541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa /** 5641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * True when this entry is the first entry in a group, which should have a photo and display 5741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * name, while the second or later entries won't. 5841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa */ 5941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private boolean mIsFirstLevel; 6041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private final String mDisplayName; 6141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa /** Destination for this contact entry. Would be an email address or a phone number. */ 6241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private final String mDestination; 638c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa /** Type of the destination like {@link Email#TYPE_HOME} */ 648c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa private final int mDestinationType; 658c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa /** 668c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa * Label of the destination which will be used when type was {@link Email#TYPE_CUSTOM}. 678c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa * Can be null when {@link #mDestinationType} is {@link #INVALID_DESTINATION_TYPE}. 688c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa */ 698c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa private final String mDestinationLabel; 70b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa /** ID for the person */ 7165b8c0327b00beda9309c7b7c116013d03b06d90Daisuke Miyakawa private final long mContactId; 72b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa /** ID for the destination */ 7365b8c0327b00beda9309c7b7c116013d03b06d90Daisuke Miyakawa private final long mDataId; 7441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private final boolean mIsDivider; 7524a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 7624a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa private final Uri mPhotoThumbnailUri; 7724a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 7824a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa /** 7924a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa * This can be updated after this object being constructed, when the photo is fetched 8024a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa * from remote directories. 8124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa */ 8241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private byte[] mPhotoBytes; 8341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 84f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira private RecipientEntry(int entryType) { 8524a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mEntryType = entryType; 8641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDisplayName = null; 8741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDestination = null; 888c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa mDestinationType = INVALID_DESTINATION_TYPE; 898c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa mDestinationLabel = null; 9041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mContactId = -1; 91b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa mDataId = -1; 9224a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoThumbnailUri = null; 9341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mPhotoBytes = null; 9441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mIsDivider = true; 9541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 9641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 97f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira private RecipientEntry( 988c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa int entryType, String displayName, 998c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa String destination, int destinationType, String destinationLabel, 1008c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa long contactId, long dataId, Uri photoThumbnailUri, boolean isFirstLevel) { 10124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mEntryType = entryType; 10290081ee88c7eb216ea22f426aa6856e310a867e1Mindy Pereira mIsFirstLevel = isFirstLevel; 10341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDisplayName = displayName; 10441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDestination = destination; 1058c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa mDestinationType = destinationType; 1068c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa mDestinationLabel = destinationLabel; 10741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mContactId = contactId; 108b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa mDataId = dataId; 10924a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoThumbnailUri = photoThumbnailUri; 11024a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoBytes = null; 11141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mIsDivider = false; 11241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 11341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 114f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira /** 1151174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira * Determine if this was a RecipientEntry created from recipient info or 1161174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira * an entry from contacts. 1171174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira */ 1181174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira public static boolean isCreatedRecipient(long id) { 1191174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira return id == RecipientEntry.INVALID_CONTACT || id == RecipientEntry.GENERATED_CONTACT; 1201174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira } 1211174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira 1221174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira /** 123f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira * Construct a RecipientEntry from just an address that has been entered. 124f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira * This address has not been resolved to a contact and therefore does not 125f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira * have a contact id or photo. 126f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira */ 127f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira public static RecipientEntry constructFakeEntry(String address) { 1288c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa return new RecipientEntry(ENTRY_TYPE_PERSON, address, address, 1298c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa INVALID_DESTINATION_TYPE, null, 1308c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa INVALID_CONTACT, INVALID_CONTACT, null, true); 1311174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira } 1321174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira 1331174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira /** 1341174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira * Construct a RecipientEntry from just an address that has been entered 1351174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira * with both an associated display name. This address has not been resolved 1361174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira * to a contact and therefore does not have a contact id or photo. 1371174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira */ 1381174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira public static RecipientEntry constructGeneratedEntry(String display, String address) { 1398c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa return new RecipientEntry(ENTRY_TYPE_PERSON, display, 1408c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa address, INVALID_DESTINATION_TYPE, null, 1418c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa GENERATED_CONTACT, GENERATED_CONTACT, null, true); 142f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira } 143f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira 144f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira public static RecipientEntry constructTopLevelEntry( 1458c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa String displayName, String destination, int destinationType, String destinationLabel, 1468c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa long contactId, long dataId, Uri photoThumbnailUri) { 1478c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa return new RecipientEntry(ENTRY_TYPE_PERSON, displayName, 1488c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa destination, destinationType, destinationLabel, 1498c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa contactId, dataId, 15090081ee88c7eb216ea22f426aa6856e310a867e1Mindy Pereira photoThumbnailUri, true); 15124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa } 15224a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 153f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira public static RecipientEntry constructTopLevelEntry( 1548c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa String displayName, String destination, int destinationType, String destinationLabel, 1558c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa long contactId, long dataId, 156b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa String thumbnailUriAsString) { 157f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira return new RecipientEntry( 1588c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa ENTRY_TYPE_PERSON, displayName, 1598c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa destination, destinationType, destinationLabel, 1608c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa contactId, dataId, 16190081ee88c7eb216ea22f426aa6856e310a867e1Mindy Pereira (thumbnailUriAsString != null ? Uri.parse(thumbnailUriAsString) : null), true); 16241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 16341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 164f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira public static RecipientEntry constructSecondLevelEntry( 1658c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa String displayName, String destination, int destinationType, String destinationLabel, 1668c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa long contactId, long dataId, String thumbnailUriAsString) { 167b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa return new RecipientEntry( 1688c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa ENTRY_TYPE_PERSON, displayName, 1698c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa destination, destinationType, destinationLabel, 1708c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa contactId, dataId, 17190081ee88c7eb216ea22f426aa6856e310a867e1Mindy Pereira (thumbnailUriAsString != null ? Uri.parse(thumbnailUriAsString) : null), false); 17224a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa } 17324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 17424a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public int getEntryType() { 17524a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa return mEntryType; 17641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 17741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 17841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public String getDisplayName() { 17941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mDisplayName; 18041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 18141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 18241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public String getDestination() { 18341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mDestination; 18441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 18541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 1868c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa public int getDestinationType() { 1878c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa return mDestinationType; 1888c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa } 1898c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa 1908c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa public String getDestinationLabel() { 1918c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa return mDestinationLabel; 1928c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa } 1938c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa 19465b8c0327b00beda9309c7b7c116013d03b06d90Daisuke Miyakawa public long getContactId() { 19541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mContactId; 19641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 19741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 19865b8c0327b00beda9309c7b7c116013d03b06d90Daisuke Miyakawa public long getDataId() { 199b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa return mDataId; 200b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa } 201b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa 20241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public boolean isFirstLevel() { 20341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mIsFirstLevel; 20441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 20541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 20624a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public Uri getPhotoThumbnailUri() { 20724a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa return mPhotoThumbnailUri; 20824a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa } 20924a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 21024a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa /** This can be called outside main Looper thread. */ 21124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public synchronized void setPhotoBytes(byte[] photoBytes) { 21224a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoBytes = photoBytes; 21324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa } 21424a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 21524a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa /** This can be called outside main Looper thread. */ 21624a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public synchronized byte[] getPhotoBytes() { 21741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mPhotoBytes; 21841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 21941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 22041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public boolean isSeparator() { 22141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mIsDivider; 22241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 223e8adc2935e128eec6cae87ebfb3959b5bc6ec219Daisuke Miyakawa 224e8adc2935e128eec6cae87ebfb3959b5bc6ec219Daisuke Miyakawa public boolean isSelectable() { 225e8adc2935e128eec6cae87ebfb3959b5bc6ec219Daisuke Miyakawa return mEntryType == ENTRY_TYPE_PERSON; 226e8adc2935e128eec6cae87ebfb3959b5bc6ec219Daisuke Miyakawa } 22741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa}