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}