RecipientEntry.java revision 8f968fc75a99645b5b170c3ca0bd3aca9a207ca7
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; 218f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onukiimport android.provider.ContactsContract.DisplayNameSources; 2224a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 2341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa/** 2441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * Represents one entry inside recipient auto-complete list. 2541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa */ 26f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereirapublic class RecipientEntry { 278c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa /* package */ static final int INVALID_CONTACT = -1; 281174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira /** 291174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira * A GENERATED_CONTACT is one that was created based entirely on 301174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira * information passed in to the RecipientEntry from an external source 311174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira * that is not a real contact. 321174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira */ 338c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa /* package */ static final int GENERATED_CONTACT = -2; 348c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa 358c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa /** Used when {@link #mDestinationType} is invalid and thus shouldn't be used for display. */ 368c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa /* package */ static final int INVALID_DESTINATION_TYPE = -1; 3724a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 3824a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public static final int ENTRY_TYPE_PERSON = 0; 39886150f6f05991d33a57213274bd51f94140f4e3Mindy Pereira public static final int ENTRY_TYPE_WAITING_FOR_DIRECTORY_SEARCH = 1; 4024a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 41886150f6f05991d33a57213274bd51f94140f4e3Mindy Pereira public static final int ENTRY_TYPE_SIZE = 2; 4224a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 43a601adc796fa7276771e6ab2670bf50663555489Daisuke Miyakawa public static final RecipientEntry WAITING_FOR_DIRECTORY_SEARCH = 44a601adc796fa7276771e6ab2670bf50663555489Daisuke Miyakawa new RecipientEntry(ENTRY_TYPE_WAITING_FOR_DIRECTORY_SEARCH); 4524a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 4624a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa private final int mEntryType; 4741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 4841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa /** 4941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * True when this entry is the first entry in a group, which should have a photo and display 5041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa * name, while the second or later entries won't. 5141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa */ 5241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private boolean mIsFirstLevel; 5341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private final String mDisplayName; 548f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki 5541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa /** Destination for this contact entry. Would be an email address or a phone number. */ 5641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private final String mDestination; 578c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa /** Type of the destination like {@link Email#TYPE_HOME} */ 588c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa private final int mDestinationType; 598c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa /** 608c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa * Label of the destination which will be used when type was {@link Email#TYPE_CUSTOM}. 618c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa * Can be null when {@link #mDestinationType} is {@link #INVALID_DESTINATION_TYPE}. 628c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa */ 638c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa private final String mDestinationLabel; 64b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa /** ID for the person */ 6565b8c0327b00beda9309c7b7c116013d03b06d90Daisuke Miyakawa private final long mContactId; 66b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa /** ID for the destination */ 6765b8c0327b00beda9309c7b7c116013d03b06d90Daisuke Miyakawa private final long mDataId; 6841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private final boolean mIsDivider; 6924a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 7024a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa private final Uri mPhotoThumbnailUri; 7124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 7224a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa /** 7324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa * This can be updated after this object being constructed, when the photo is fetched 7424a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa * from remote directories. 7524a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa */ 7641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa private byte[] mPhotoBytes; 7741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 78f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira private RecipientEntry(int entryType) { 7924a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mEntryType = entryType; 8041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDisplayName = null; 8141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDestination = null; 828c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa mDestinationType = INVALID_DESTINATION_TYPE; 838c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa mDestinationLabel = null; 8441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mContactId = -1; 85b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa mDataId = -1; 8624a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoThumbnailUri = null; 8741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mPhotoBytes = null; 8841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mIsDivider = true; 8941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 9041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 91f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira private RecipientEntry( 928c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa int entryType, String displayName, 938c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa String destination, int destinationType, String destinationLabel, 948c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa long contactId, long dataId, Uri photoThumbnailUri, boolean isFirstLevel) { 9524a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mEntryType = entryType; 9690081ee88c7eb216ea22f426aa6856e310a867e1Mindy Pereira mIsFirstLevel = isFirstLevel; 9741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDisplayName = displayName; 9841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mDestination = destination; 998c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa mDestinationType = destinationType; 1008c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa mDestinationLabel = destinationLabel; 10141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mContactId = contactId; 102b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa mDataId = dataId; 10324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoThumbnailUri = photoThumbnailUri; 10424a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoBytes = null; 10541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa mIsDivider = false; 10641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 10741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 108f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira /** 1091174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira * Determine if this was a RecipientEntry created from recipient info or 1101174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira * an entry from contacts. 1111174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira */ 1121174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira public static boolean isCreatedRecipient(long id) { 1131174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira return id == RecipientEntry.INVALID_CONTACT || id == RecipientEntry.GENERATED_CONTACT; 1141174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira } 1151174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira 1161174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira /** 117f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira * Construct a RecipientEntry from just an address that has been entered. 118f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira * This address has not been resolved to a contact and therefore does not 119f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira * have a contact id or photo. 120f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira */ 121f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira public static RecipientEntry constructFakeEntry(String address) { 1228c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa return new RecipientEntry(ENTRY_TYPE_PERSON, address, address, 1238c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa INVALID_DESTINATION_TYPE, null, 1248c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa INVALID_CONTACT, INVALID_CONTACT, null, true); 1251174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira } 1261174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira 1271174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira /** 1288f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki * @return the display name for the entry. If the display name source is larger than 1298f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki * {@link DisplayNameSources#PHONE} we use the contact's display name, but if not, 1308f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki * i.e. the display name came from an email address or a phone number, we don't use it 1318f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki * to avoid confusion and just use the destination instead. 1328f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki */ 1338f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki private static String pickDisplayName(int displayNameSource, String displayName, 1348f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki String destination) { 1358f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki return (displayNameSource > DisplayNameSources.PHONE) ? displayName : destination; 1368f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki } 1378f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki 1388f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki /** 1391174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira * Construct a RecipientEntry from just an address that has been entered 1401174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira * with both an associated display name. This address has not been resolved 1411174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira * to a contact and therefore does not have a contact id or photo. 1421174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira */ 1431174eca98d1dbd263a9e72c5a9e35a1039aae979Mindy Pereira public static RecipientEntry constructGeneratedEntry(String display, String address) { 1448c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa return new RecipientEntry(ENTRY_TYPE_PERSON, display, 1458c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa address, INVALID_DESTINATION_TYPE, null, 1468c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa GENERATED_CONTACT, GENERATED_CONTACT, null, true); 147f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira } 148f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira 149f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira public static RecipientEntry constructTopLevelEntry( 1508f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki String displayName, int displayNameSource, String destination, int destinationType, 1518f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki String destinationLabel, long contactId, long dataId, Uri photoThumbnailUri) { 1528f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki return new RecipientEntry(ENTRY_TYPE_PERSON, pickDisplayName(displayNameSource, displayName, 1538f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki destination), 1548c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa destination, destinationType, destinationLabel, 1558c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa contactId, dataId, 15690081ee88c7eb216ea22f426aa6856e310a867e1Mindy Pereira photoThumbnailUri, true); 15724a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa } 15824a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 159f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira public static RecipientEntry constructTopLevelEntry( 1608f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki String displayName, int displayNameSource, String destination, int destinationType, 1618f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki String destinationLabel, long contactId, long dataId, 162b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa String thumbnailUriAsString) { 163f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira return new RecipientEntry( 1648f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki ENTRY_TYPE_PERSON, pickDisplayName(displayNameSource, displayName, destination), 1658c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa destination, destinationType, destinationLabel, 1668c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa contactId, dataId, 16790081ee88c7eb216ea22f426aa6856e310a867e1Mindy Pereira (thumbnailUriAsString != null ? Uri.parse(thumbnailUriAsString) : null), true); 16841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 16941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 170f566dee91901e44db63df3bf393afb1d43a36f78Mindy Pereira public static RecipientEntry constructSecondLevelEntry( 1718f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki String displayName, int displayNameSource, String destination, int destinationType, 1728f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki String destinationLabel, long contactId, long dataId, String thumbnailUriAsString) { 173b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa return new RecipientEntry( 1748f968fc75a99645b5b170c3ca0bd3aca9a207ca7Makoto Onuki ENTRY_TYPE_PERSON, pickDisplayName(displayNameSource, displayName, destination), 1758c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa destination, destinationType, destinationLabel, 1768c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa contactId, dataId, 17790081ee88c7eb216ea22f426aa6856e310a867e1Mindy Pereira (thumbnailUriAsString != null ? Uri.parse(thumbnailUriAsString) : null), false); 17824a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa } 17924a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 18024a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public int getEntryType() { 18124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa return mEntryType; 18241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 18341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 18441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public String getDisplayName() { 18541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mDisplayName; 18641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 18741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 18841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public String getDestination() { 18941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mDestination; 19041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 19141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 1928c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa public int getDestinationType() { 1938c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa return mDestinationType; 1948c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa } 1958c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa 1968c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa public String getDestinationLabel() { 1978c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa return mDestinationLabel; 1988c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa } 1998c03d35fec744db28a2a3230795f123c7afd50ccDaisuke Miyakawa 20065b8c0327b00beda9309c7b7c116013d03b06d90Daisuke Miyakawa public long getContactId() { 20141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mContactId; 20241caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 20341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 20465b8c0327b00beda9309c7b7c116013d03b06d90Daisuke Miyakawa public long getDataId() { 205b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa return mDataId; 206b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa } 207b5ebb8916a1bb178062a0ccb59e80de27ec1bb2dDaisuke Miyakawa 20841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public boolean isFirstLevel() { 20941caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mIsFirstLevel; 21041caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 21141caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 21224a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public Uri getPhotoThumbnailUri() { 21324a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa return mPhotoThumbnailUri; 21424a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa } 21524a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 21624a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa /** This can be called outside main Looper thread. */ 21724a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public synchronized void setPhotoBytes(byte[] photoBytes) { 21824a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa mPhotoBytes = photoBytes; 21924a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa } 22024a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa 22124a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa /** This can be called outside main Looper thread. */ 22224a05a268d1fa2839d62361dc50b88a4c2a2975bDaisuke Miyakawa public synchronized byte[] getPhotoBytes() { 22341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mPhotoBytes; 22441caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 22541caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa 22641caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa public boolean isSeparator() { 22741caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa return mIsDivider; 22841caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa } 229e8adc2935e128eec6cae87ebfb3959b5bc6ec219Daisuke Miyakawa 230e8adc2935e128eec6cae87ebfb3959b5bc6ec219Daisuke Miyakawa public boolean isSelectable() { 231e8adc2935e128eec6cae87ebfb3959b5bc6ec219Daisuke Miyakawa return mEntryType == ENTRY_TYPE_PERSON; 232e8adc2935e128eec6cae87ebfb3959b5bc6ec219Daisuke Miyakawa } 23341caab4c41a94712f8eeb1585422df52f8ab5db2Daisuke Miyakawa}