Message.java revision d5b369b324a22d28b63def902eefaf6591edf004
13ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira/** 23ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * Copyright (c) 2012, Google Inc. 33ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * 43ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * Licensed under the Apache License, Version 2.0 (the "License"); 53ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * you may not use this file except in compliance with the License. 63ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * You may obtain a copy of the License at 73ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * 83ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * http://www.apache.org/licenses/LICENSE-2.0 93ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * 103ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * Unless required by applicable law or agreed to in writing, software 113ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * distributed under the License is distributed on an "AS IS" BASIS, 123ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * See the License for the specific language governing permissions and 143ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira * limitations under the License. 153ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira */ 163ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira 173ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereirapackage com.android.mail.providers; 183ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira 193233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huangimport android.content.AsyncQueryHandler; 203233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huangimport android.content.ContentValues; 213ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereiraimport android.database.Cursor; 22cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereiraimport android.net.Uri; 233ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereiraimport android.os.Parcel; 243ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereiraimport android.os.Parcelable; 25e623a0f6e3caa9cafec913cf826e946628833517Andy Huangimport android.provider.BaseColumns; 26cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereiraimport android.text.TextUtils; 273ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira 287bdc3750454efe59617b7df945eadd7e59bee954Andy Huangimport com.android.mail.browse.MessageCursor; 2926846d859a4714ff90ea02dba251a54cac1f1e9fMarc Blankimport com.android.mail.providers.UIProvider.MessageColumns; 30bf232c3735f65b1a4746943e4a134e59e36f0bdePaul Westbrookimport com.android.mail.ui.AbstractActivityController; 31bf232c3735f65b1a4746943e4a134e59e36f0bdePaul Westbrookimport com.android.mail.ui.ConversationListCallbacks; 3226846d859a4714ff90ea02dba251a54cac1f1e9fMarc Blankimport com.android.mail.utils.Utils; 3326846d859a4714ff90ea02dba251a54cac1f1e9fMarc Blank 349ab47b16e0189d219c16e2eddfbd66c741c01229Andy Huangimport java.util.Collections; 355a9290731bf565538a9cf91892346c7a6f4da0ecAndy Huangimport java.util.List; 365a9290731bf565538a9cf91892346c7a6f4da0ecAndy Huang 373ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira 383ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereirapublic class Message implements Parcelable { 39e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 40e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see BaseColumns#_ID 41e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 423ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public long id; 43e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 44e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#SERVER_ID 45e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 463ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public long serverId; 47e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 48e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#URI 49e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 50cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira public Uri uri; 51e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 52e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#CONVERSATION_ID 53e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 5426846d859a4714ff90ea02dba251a54cac1f1e9fMarc Blank public String conversationUri; 55e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 56e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#SUBJECT 57e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 583ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public String subject; 59e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 60e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#SNIPPET 61e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 623ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public String snippet; 63e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 64e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#FROM 65e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 663ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public String from; 67e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 68e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#TO 69e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 703ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public String to; 71e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 72e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#CC 73e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 743ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public String cc; 75e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 76e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#BCC 77e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 783ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public String bcc; 79e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 80e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#REPLY_TO 81e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 823ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public String replyTo; 83e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 84e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#DATE_RECEIVED_MS 85e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 863ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public long dateReceivedMs; 87e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 88e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#BODY_HTML 89e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 903ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public String bodyHtml; 91e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 92e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#BODY_TEXT 93e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 943ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public String bodyText; 95e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 96e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#EMBEDS_EXTERNAL_RESOURCES 97e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 983ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public boolean embedsExternalResources; 99e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 100e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#REF_MESSAGE_ID 101e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 1023ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public String refMessageId; 103e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 104e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#DRAFT_TYPE 105e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 1063ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public int draftType; 107e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 108e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#APPEND_REF_MESSAGE_CONTENT 109e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 1103ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public boolean appendRefMessageContent; 111e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 112e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#HAS_ATTACHMENTS 113e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 1143ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public boolean hasAttachments; 115e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 116e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#ATTACHMENT_LIST_URI 117e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 118cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira public Uri attachmentListUri; 119e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 120e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#MESSAGE_FLAGS 121e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 1223ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public long messageFlags; 123e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 124e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#SAVE_MESSAGE_URI 125e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 1267ed1c1122c5677344a1ce176be2c03972fed26f5Mindy Pereira public String saveUri; 127e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 128e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#SEND_MESSAGE_URI 129e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 1307ed1c1122c5677344a1ce176be2c03972fed26f5Mindy Pereira public String sendUri; 131e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 132e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#ALWAYS_SHOW_IMAGES 133e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 134104f729c284f9b7b31a251350252f8ae31d09f86Paul Westbrook public boolean alwaysShowImages; 135e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 136e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#READ 137e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 138d8e249ee7abb0e1ad24e17e4e299736d4a150936Andy Huang public boolean read; 139e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 140e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#STARRED 141e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 142d8e249ee7abb0e1ad24e17e4e299736d4a150936Andy Huang public boolean starred; 143e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 144e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#QUOTE_START_POS 145e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 1464dbbf9f91da20d89b13d412038c0b19b91983f8cMindy Pereira public int quotedTextOffset; 147e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 148e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#ATTACHMENTS 149e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 1505a9290731bf565538a9cf91892346c7a6f4da0ecAndy Huang public String attachmentsJson; 151e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 152e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#MESSAGE_ACCOUNT_URI 153e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 15462de1b104635b09e7f00b0941268ba1fa5460ddbMindy Pereira public Uri accountUri; 155e623a0f6e3caa9cafec913cf826e946628833517Andy Huang /** 156e623a0f6e3caa9cafec913cf826e946628833517Andy Huang * @see UIProvider.MessageColumns#EVENT_INTENT_URI 157e623a0f6e3caa9cafec913cf826e946628833517Andy Huang */ 1583842af9e8ba90ebf5b75dc5018bbfdfb2e044f99Marc Blank public Uri eventIntentUri; 159d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein /** 160d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein * @see UIProvider.MessageColumns#SPAM_WARNING_STRING 161d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein */ 1623b08c51ec46794b3c22c8649eb86bf77c72e0d9aAndrew Sapperstein public String spamWarningString; 163d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein /** 164d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein * @see UIProvider.MessageColumns#SPAM_WARNING_LEVEL 165d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein */ 1663b08c51ec46794b3c22c8649eb86bf77c72e0d9aAndrew Sapperstein public int spamWarningLevel; 167d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein /** 168d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein * @see UIProvider.MessageColumns#SPAM_WARNING_LINK_TYPE 169d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein */ 1703b08c51ec46794b3c22c8649eb86bf77c72e0d9aAndrew Sapperstein public int spamLinkType; 171d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein /** 172d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein * @see UIProvider.MessageColumns#VIA_DOMAIN 173d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein */ 174d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein public String viaDomain; 1755a9290731bf565538a9cf91892346c7a6f4da0ecAndy Huang 176d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein private transient String[] mFromAddresses = null; 1775a9290731bf565538a9cf91892346c7a6f4da0ecAndy Huang private transient String[] mToAddresses = null; 1785a9290731bf565538a9cf91892346c7a6f4da0ecAndy Huang private transient String[] mCcAddresses = null; 1795a9290731bf565538a9cf91892346c7a6f4da0ecAndy Huang private transient String[] mBccAddresses = null; 1805a9290731bf565538a9cf91892346c7a6f4da0ecAndy Huang private transient String[] mReplyToAddresses = null; 1813ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira 1825a9290731bf565538a9cf91892346c7a6f4da0ecAndy Huang private transient List<Attachment> mAttachments = null; 183bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook 184bf232c3735f65b1a4746943e4a134e59e36f0bdePaul Westbrook // While viewing a list of messages, points to the cursor that contains it 185bf232c3735f65b1a4746943e4a134e59e36f0bdePaul Westbrook private transient MessageCursor mOwningCursor = null; 186bf232c3735f65b1a4746943e4a134e59e36f0bdePaul Westbrook private transient ConversationListCallbacks mListController = null; 187bec5115726f24733a0a1577caaf05fb6e9ef9c6fMarc Blank 1883ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira @Override 1893ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public int describeContents() { 1903ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira return 0; 1913ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira } 1923ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira 1933ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira @Override 1943233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang public boolean equals(Object o) { 1953233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang if (o == null || !(o instanceof Message)) { 1963233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang return false; 1973233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang } 1983233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang final Uri otherUri = ((Message) o).uri; 1993233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang if (uri == null) { 2003233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang return (otherUri == null); 2013233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang } 2023233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang return uri.equals(otherUri); 2033233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang } 2043233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang 2053233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang @Override 2063233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang public int hashCode() { 2073233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang return uri == null ? 0 : uri.hashCode(); 2083233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang } 2093233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang 2103233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang @Override 2113ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public void writeToParcel(Parcel dest, int flags) { 2123ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira dest.writeLong(id); 2133ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira dest.writeLong(serverId); 214cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira dest.writeParcelable(uri, 0); 21526846d859a4714ff90ea02dba251a54cac1f1e9fMarc Blank dest.writeString(conversationUri); 2163ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira dest.writeString(subject); 2173ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira dest.writeString(snippet); 2183ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira dest.writeString(from); 2193ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira dest.writeString(to); 2203ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira dest.writeString(cc); 2213ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira dest.writeString(bcc); 2223ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira dest.writeString(replyTo); 2233ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira dest.writeLong(dateReceivedMs); 2243ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira dest.writeString(bodyHtml); 2253ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira dest.writeString(bodyText); 2263ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira dest.writeInt(embedsExternalResources ? 1 : 0); 2273ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira dest.writeString(refMessageId); 2283ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira dest.writeInt(draftType); 2293ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira dest.writeInt(appendRefMessageContent ? 1 : 0); 2303ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira dest.writeInt(hasAttachments ? 1 : 0); 231cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira dest.writeParcelable(attachmentListUri, 0); 2323ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira dest.writeLong(messageFlags); 2337ed1c1122c5677344a1ce176be2c03972fed26f5Mindy Pereira dest.writeString(saveUri); 2347ed1c1122c5677344a1ce176be2c03972fed26f5Mindy Pereira dest.writeString(sendUri); 235104f729c284f9b7b31a251350252f8ae31d09f86Paul Westbrook dest.writeInt(alwaysShowImages ? 1 : 0); 2364dbbf9f91da20d89b13d412038c0b19b91983f8cMindy Pereira dest.writeInt(quotedTextOffset); 2372421dc8d6d0b4c727ab7ab0e5ce730f415089e86Mindy Pereira dest.writeString(attachmentsJson); 23862de1b104635b09e7f00b0941268ba1fa5460ddbMindy Pereira dest.writeParcelable(accountUri, 0); 2393842af9e8ba90ebf5b75dc5018bbfdfb2e044f99Marc Blank dest.writeParcelable(eventIntentUri, 0); 2403b08c51ec46794b3c22c8649eb86bf77c72e0d9aAndrew Sapperstein dest.writeString(spamWarningString); 2413b08c51ec46794b3c22c8649eb86bf77c72e0d9aAndrew Sapperstein dest.writeInt(spamWarningLevel); 2423b08c51ec46794b3c22c8649eb86bf77c72e0d9aAndrew Sapperstein dest.writeInt(spamLinkType); 243d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein dest.writeString(viaDomain); 2443ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira } 2453ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira 2463ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira private Message(Parcel in) { 2473ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira id = in.readLong(); 2483ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira serverId = in.readLong(); 249cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira uri = in.readParcelable(null); 25026846d859a4714ff90ea02dba251a54cac1f1e9fMarc Blank conversationUri = in.readString(); 2513ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira subject = in.readString(); 2523ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira snippet = in.readString(); 2533ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira from = in.readString(); 2543ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira to = in.readString(); 2553ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira cc = in.readString(); 2563ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira bcc = in.readString(); 2573ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira replyTo = in.readString(); 2583ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira dateReceivedMs = in.readLong(); 2593ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira bodyHtml = in.readString(); 2603ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira bodyText = in.readString(); 2613ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira embedsExternalResources = in.readInt() != 0; 2623ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira refMessageId = in.readString(); 2633ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira draftType = in.readInt(); 2643ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira appendRefMessageContent = in.readInt() != 0; 2653ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira hasAttachments = in.readInt() != 0; 266cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira attachmentListUri = in.readParcelable(null); 2673ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira messageFlags = in.readLong(); 2687ed1c1122c5677344a1ce176be2c03972fed26f5Mindy Pereira saveUri = in.readString(); 2697ed1c1122c5677344a1ce176be2c03972fed26f5Mindy Pereira sendUri = in.readString(); 270104f729c284f9b7b31a251350252f8ae31d09f86Paul Westbrook alwaysShowImages = in.readInt() != 0; 2714dbbf9f91da20d89b13d412038c0b19b91983f8cMindy Pereira quotedTextOffset = in.readInt(); 2722421dc8d6d0b4c727ab7ab0e5ce730f415089e86Mindy Pereira attachmentsJson = in.readString(); 27362de1b104635b09e7f00b0941268ba1fa5460ddbMindy Pereira accountUri = in.readParcelable(null); 2743842af9e8ba90ebf5b75dc5018bbfdfb2e044f99Marc Blank eventIntentUri = in.readParcelable(null); 2753b08c51ec46794b3c22c8649eb86bf77c72e0d9aAndrew Sapperstein spamWarningString = in.readString(); 2763b08c51ec46794b3c22c8649eb86bf77c72e0d9aAndrew Sapperstein spamWarningLevel = in.readInt(); 2773b08c51ec46794b3c22c8649eb86bf77c72e0d9aAndrew Sapperstein spamLinkType = in.readInt(); 278d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein viaDomain = in.readString(); 279104f729c284f9b7b31a251350252f8ae31d09f86Paul Westbrook } 280104f729c284f9b7b31a251350252f8ae31d09f86Paul Westbrook 281104f729c284f9b7b31a251350252f8ae31d09f86Paul Westbrook public Message() { 282104f729c284f9b7b31a251350252f8ae31d09f86Paul Westbrook 2833ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira } 2843ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira 2853ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira @Override 2863ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public String toString() { 2873ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira return "[message id=" + id + "]"; 2883ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira } 2893ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira 2903ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public static final Creator<Message> CREATOR = new Creator<Message>() { 2913ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira 2923ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira @Override 2933ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public Message createFromParcel(Parcel source) { 2943ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira return new Message(source); 2953ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira } 2963ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira 2973ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira @Override 2983ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public Message[] newArray(int size) { 2993ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira return new Message[size]; 3003ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira } 3013ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira 3023ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira }; 3033ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira 304bf232c3735f65b1a4746943e4a134e59e36f0bdePaul Westbrook public Message(MessageCursor cursor, ConversationListCallbacks listController) { 305bf232c3735f65b1a4746943e4a134e59e36f0bdePaul Westbrook this(cursor); 306bec5115726f24733a0a1577caaf05fb6e9ef9c6fMarc Blank // Only set message cursor if appropriate 307bf232c3735f65b1a4746943e4a134e59e36f0bdePaul Westbrook mOwningCursor = cursor; 308bf232c3735f65b1a4746943e4a134e59e36f0bdePaul Westbrook mListController = listController; 309bec5115726f24733a0a1577caaf05fb6e9ef9c6fMarc Blank } 310bec5115726f24733a0a1577caaf05fb6e9ef9c6fMarc Blank 311a831b2f1ba6d3c18d5e54563df8bae1f589c4257Mindy Pereira public Message(Cursor cursor) { 3123ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira if (cursor != null) { 3133ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira id = cursor.getLong(UIProvider.MESSAGE_ID_COLUMN); 3143ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira serverId = cursor.getLong(UIProvider.MESSAGE_SERVER_ID_COLUMN); 315cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira String message = cursor.getString(UIProvider.MESSAGE_URI_COLUMN); 316cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira uri = !TextUtils.isEmpty(message) ? Uri.parse(message) : null; 31726846d859a4714ff90ea02dba251a54cac1f1e9fMarc Blank conversationUri = cursor.getString(UIProvider.MESSAGE_CONVERSATION_URI_COLUMN); 3183ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira subject = cursor.getString(UIProvider.MESSAGE_SUBJECT_COLUMN); 3193ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira snippet = cursor.getString(UIProvider.MESSAGE_SNIPPET_COLUMN); 3203ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira from = cursor.getString(UIProvider.MESSAGE_FROM_COLUMN); 3213ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira to = cursor.getString(UIProvider.MESSAGE_TO_COLUMN); 3223ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira cc = cursor.getString(UIProvider.MESSAGE_CC_COLUMN); 3233ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira bcc = cursor.getString(UIProvider.MESSAGE_BCC_COLUMN); 3243ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira replyTo = cursor.getString(UIProvider.MESSAGE_REPLY_TO_COLUMN); 3253ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira dateReceivedMs = cursor.getLong(UIProvider.MESSAGE_DATE_RECEIVED_MS_COLUMN); 3263ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira bodyHtml = cursor.getString(UIProvider.MESSAGE_BODY_HTML_COLUMN); 3273ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira bodyText = cursor.getString(UIProvider.MESSAGE_BODY_TEXT_COLUMN); 3283ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira embedsExternalResources = cursor 3293ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira .getInt(UIProvider.MESSAGE_EMBEDS_EXTERNAL_RESOURCES_COLUMN) != 0; 3303ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira refMessageId = cursor.getString(UIProvider.MESSAGE_REF_MESSAGE_ID_COLUMN); 3313ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira draftType = cursor.getInt(UIProvider.MESSAGE_DRAFT_TYPE_COLUMN); 3323ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira appendRefMessageContent = cursor 3333ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira .getInt(UIProvider.MESSAGE_APPEND_REF_MESSAGE_CONTENT_COLUMN) != 0; 3343ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira hasAttachments = cursor.getInt(UIProvider.MESSAGE_HAS_ATTACHMENTS_COLUMN) != 0; 3357bb27253d9eb377d13da55b67b0babd047eca367Mindy Pereira final String attachmentsUri = cursor 3367bb27253d9eb377d13da55b67b0babd047eca367Mindy Pereira .getString(UIProvider.MESSAGE_ATTACHMENT_LIST_URI_COLUMN); 3377bb27253d9eb377d13da55b67b0babd047eca367Mindy Pereira attachmentListUri = hasAttachments && !TextUtils.isEmpty(attachmentsUri) ? Uri 3387bb27253d9eb377d13da55b67b0babd047eca367Mindy Pereira .parse(attachmentsUri) : null; 3393ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira messageFlags = cursor.getLong(UIProvider.MESSAGE_FLAGS_COLUMN); 3407ed1c1122c5677344a1ce176be2c03972fed26f5Mindy Pereira saveUri = cursor 3417ed1c1122c5677344a1ce176be2c03972fed26f5Mindy Pereira .getString(UIProvider.MESSAGE_SAVE_URI_COLUMN); 3427ed1c1122c5677344a1ce176be2c03972fed26f5Mindy Pereira sendUri = cursor 3437ed1c1122c5677344a1ce176be2c03972fed26f5Mindy Pereira .getString(UIProvider.MESSAGE_SEND_URI_COLUMN); 344d8e249ee7abb0e1ad24e17e4e299736d4a150936Andy Huang alwaysShowImages = cursor.getInt(UIProvider.MESSAGE_ALWAYS_SHOW_IMAGES_COLUMN) != 0; 345d8e249ee7abb0e1ad24e17e4e299736d4a150936Andy Huang read = cursor.getInt(UIProvider.MESSAGE_READ_COLUMN) != 0; 346d8e249ee7abb0e1ad24e17e4e299736d4a150936Andy Huang starred = cursor.getInt(UIProvider.MESSAGE_STARRED_COLUMN) != 0; 3474dbbf9f91da20d89b13d412038c0b19b91983f8cMindy Pereira quotedTextOffset = cursor.getInt(UIProvider.QUOTED_TEXT_OFFSET_COLUMN); 3485a9290731bf565538a9cf91892346c7a6f4da0ecAndy Huang attachmentsJson = cursor.getString(UIProvider.MESSAGE_ATTACHMENTS_COLUMN); 34962de1b104635b09e7f00b0941268ba1fa5460ddbMindy Pereira String accountUriString = cursor.getString(UIProvider.MESSAGE_ACCOUNT_URI_COLUMN); 35062de1b104635b09e7f00b0941268ba1fa5460ddbMindy Pereira accountUri = !TextUtils.isEmpty(accountUriString) ? Uri.parse(accountUriString) : null; 3513842af9e8ba90ebf5b75dc5018bbfdfb2e044f99Marc Blank eventIntentUri = 3523842af9e8ba90ebf5b75dc5018bbfdfb2e044f99Marc Blank Utils.getValidUri(cursor.getString(UIProvider.MESSAGE_EVENT_INTENT_COLUMN)); 3533b08c51ec46794b3c22c8649eb86bf77c72e0d9aAndrew Sapperstein spamWarningString = 3543b08c51ec46794b3c22c8649eb86bf77c72e0d9aAndrew Sapperstein cursor.getString(UIProvider.MESSAGE_SPAM_WARNING_STRING_ID_COLUMN); 3553b08c51ec46794b3c22c8649eb86bf77c72e0d9aAndrew Sapperstein spamWarningLevel = cursor.getInt(UIProvider.MESSAGE_SPAM_WARNING_LEVEL_COLUMN); 3563b08c51ec46794b3c22c8649eb86bf77c72e0d9aAndrew Sapperstein spamLinkType = cursor.getInt(UIProvider.MESSAGE_SPAM_WARNING_LINK_TYPE_COLUMN); 357d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein viaDomain = cursor.getString(UIProvider.MESSAGE_VIA_DOMAIN_COLUMN); 3583ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira } 3593ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira } 3600a22047bb6c54d8f1ce980762f75908e35b08c3dAndy Huang 361a71f1f3368f26b6627512298f64484611fd6b0e8Andy Huang public boolean isFlaggedReplied() { 362a71f1f3368f26b6627512298f64484611fd6b0e8Andy Huang return (messageFlags & UIProvider.MessageFlags.REPLIED) == 363a71f1f3368f26b6627512298f64484611fd6b0e8Andy Huang UIProvider.MessageFlags.REPLIED; 364a71f1f3368f26b6627512298f64484611fd6b0e8Andy Huang } 365a71f1f3368f26b6627512298f64484611fd6b0e8Andy Huang 366a71f1f3368f26b6627512298f64484611fd6b0e8Andy Huang public boolean isFlaggedForwarded() { 367a71f1f3368f26b6627512298f64484611fd6b0e8Andy Huang return (messageFlags & UIProvider.MessageFlags.FORWARDED) == 368a71f1f3368f26b6627512298f64484611fd6b0e8Andy Huang UIProvider.MessageFlags.FORWARDED; 369a71f1f3368f26b6627512298f64484611fd6b0e8Andy Huang } 370a71f1f3368f26b6627512298f64484611fd6b0e8Andy Huang 371a71f1f3368f26b6627512298f64484611fd6b0e8Andy Huang public boolean isFlaggedCalendarInvite() { 372a71f1f3368f26b6627512298f64484611fd6b0e8Andy Huang return (messageFlags & UIProvider.MessageFlags.CALENDAR_INVITE) == 373a71f1f3368f26b6627512298f64484611fd6b0e8Andy Huang UIProvider.MessageFlags.CALENDAR_INVITE; 374a71f1f3368f26b6627512298f64484611fd6b0e8Andy Huang } 375a71f1f3368f26b6627512298f64484611fd6b0e8Andy Huang 376d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein public synchronized String[] getFromAddresses() { 377d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein if (mFromAddresses == null) { 378d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein mFromAddresses = Utils.splitCommaSeparatedString(from); 379d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein } 380d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein return mFromAddresses; 381d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein } 382d5b369b324a22d28b63def902eefaf6591edf004Andrew Sapperstein 383bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook public synchronized String[] getToAddresses() { 384bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook if (mToAddresses == null) { 385bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook mToAddresses = Utils.splitCommaSeparatedString(to); 386bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook } 387bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook return mToAddresses; 388bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook } 389bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook 390bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook public synchronized String[] getCcAddresses() { 391bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook if (mCcAddresses == null) { 392bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook mCcAddresses = Utils.splitCommaSeparatedString(cc); 393bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook } 394bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook return mCcAddresses; 395bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook } 396bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook 397bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook public synchronized String[] getBccAddresses() { 398bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook if (mBccAddresses == null) { 399bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook mBccAddresses = Utils.splitCommaSeparatedString(bcc); 400bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook } 401bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook return mBccAddresses; 402bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook } 403bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook 404bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook public synchronized String[] getReplyToAddresses() { 405bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook if (mReplyToAddresses == null) { 406bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook mReplyToAddresses = Utils.splitCommaSeparatedString(replyTo); 407bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook } 408bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook return mReplyToAddresses; 409bb87b7fa57f25fc9cee1f572dd253f33f58f81daPaul Westbrook } 4103233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang 4115a9290731bf565538a9cf91892346c7a6f4da0ecAndy Huang public synchronized List<Attachment> getAttachments() { 4129ab47b16e0189d219c16e2eddfbd66c741c01229Andy Huang if (mAttachments == null) { 4139ab47b16e0189d219c16e2eddfbd66c741c01229Andy Huang if (attachmentsJson != null) { 4149ab47b16e0189d219c16e2eddfbd66c741c01229Andy Huang mAttachments = Attachment.fromJSONArray(attachmentsJson); 4159ab47b16e0189d219c16e2eddfbd66c741c01229Andy Huang } else { 4169ab47b16e0189d219c16e2eddfbd66c741c01229Andy Huang mAttachments = Collections.emptyList(); 4179ab47b16e0189d219c16e2eddfbd66c741c01229Andy Huang } 4185a9290731bf565538a9cf91892346c7a6f4da0ecAndy Huang } 4195a9290731bf565538a9cf91892346c7a6f4da0ecAndy Huang return mAttachments; 4205a9290731bf565538a9cf91892346c7a6f4da0ecAndy Huang } 4215a9290731bf565538a9cf91892346c7a6f4da0ecAndy Huang 4223233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang /** 4233233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang * Returns whether a "Show Pictures" button should initially appear for this message. If the 4243233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang * button is shown, the message must also block all non-local images in the body. Inversely, if 4253233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang * the button is not shown, the message must show all images within (or else the user would be 4263233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang * stuck with no images and no way to reveal them). 4273233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang * 4283233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang * @return true if a "Show Pictures" button should appear. 4293233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang */ 4303233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang public boolean shouldShowImagePrompt() { 4313233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang return embedsExternalResources && !alwaysShowImages; 4323233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang } 4333233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang 4343233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang /** 4353233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang * Helper method to command a provider to mark all messages from this sender with the 4363233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang * {@link MessageColumns#ALWAYS_SHOW_IMAGES} flag set. 4373233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang * 4383233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang * @param handler a caller-provided handler to run the query on 4393233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang * @param token (optional) token to identify the command to the handler 4403233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang * @param cookie (optional) cookie to pass to the handler 4413233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang */ 4423233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang public void markAlwaysShowImages(AsyncQueryHandler handler, int token, Object cookie) { 4433233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang final ContentValues values = new ContentValues(1); 4443233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang values.put(UIProvider.MessageColumns.ALWAYS_SHOW_IMAGES, 1); 4453233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang 4463233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang handler.startUpdate(token, cookie, uri, values, null, null); 4473233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang } 4483233bff8ae08a56543c9f5abf1bc6ab38f0574ceAndy Huang 449d8e249ee7abb0e1ad24e17e4e299736d4a150936Andy Huang /** 450d8e249ee7abb0e1ad24e17e4e299736d4a150936Andy Huang * Helper method to command a provider to star/unstar this message. 451d8e249ee7abb0e1ad24e17e4e299736d4a150936Andy Huang * 452d8e249ee7abb0e1ad24e17e4e299736d4a150936Andy Huang * @param starred whether to star or unstar the message 453d8e249ee7abb0e1ad24e17e4e299736d4a150936Andy Huang * @param handler a caller-provided handler to run the query on 454d8e249ee7abb0e1ad24e17e4e299736d4a150936Andy Huang * @param token (optional) token to identify the command to the handler 455d8e249ee7abb0e1ad24e17e4e299736d4a150936Andy Huang * @param cookie (optional) cookie to pass to the handler 456d8e249ee7abb0e1ad24e17e4e299736d4a150936Andy Huang */ 457d8e249ee7abb0e1ad24e17e4e299736d4a150936Andy Huang public void star(boolean starred, AsyncQueryHandler handler, int token, Object cookie) { 458bec5115726f24733a0a1577caaf05fb6e9ef9c6fMarc Blank this.starred = starred; 459bec5115726f24733a0a1577caaf05fb6e9ef9c6fMarc Blank // If we're unstarring, we need to find out if the conversation is still starred 460bf232c3735f65b1a4746943e4a134e59e36f0bdePaul Westbrook if (mListController != null) { 461bf232c3735f65b1a4746943e4a134e59e36f0bdePaul Westbrook boolean conversationStarred = starred; 462bf232c3735f65b1a4746943e4a134e59e36f0bdePaul Westbrook if (!starred) { 463bf232c3735f65b1a4746943e4a134e59e36f0bdePaul Westbrook conversationStarred = mOwningCursor.isConversationStarred(); 464bf232c3735f65b1a4746943e4a134e59e36f0bdePaul Westbrook } 465bf232c3735f65b1a4746943e4a134e59e36f0bdePaul Westbrook // Update the conversation cursor so that changes are reflected simultaneously 466bf232c3735f65b1a4746943e4a134e59e36f0bdePaul Westbrook mListController.sendConversationUriStarred( 467bf232c3735f65b1a4746943e4a134e59e36f0bdePaul Westbrook AbstractActivityController.TAG_CONVERSATION_LIST, conversationUri, 468bf232c3735f65b1a4746943e4a134e59e36f0bdePaul Westbrook conversationStarred, true /*local*/); 469bec5115726f24733a0a1577caaf05fb6e9ef9c6fMarc Blank } 470d8e249ee7abb0e1ad24e17e4e299736d4a150936Andy Huang final ContentValues values = new ContentValues(1); 471d8e249ee7abb0e1ad24e17e4e299736d4a150936Andy Huang values.put(UIProvider.MessageColumns.STARRED, starred ? 1 : 0); 472d8e249ee7abb0e1ad24e17e4e299736d4a150936Andy Huang 473d8e249ee7abb0e1ad24e17e4e299736d4a150936Andy Huang handler.startUpdate(token, cookie, uri, values, null, null); 474d8e249ee7abb0e1ad24e17e4e299736d4a150936Andy Huang } 475d8e249ee7abb0e1ad24e17e4e299736d4a150936Andy Huang 4763ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira} 477