MessageModification.java revision 048b5c892e098d79335a5eb68fa3a1ec1b7b5a85
182cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira/** 282cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * Copyright (c) 2012, Google Inc. 382cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * 482cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * Licensed under the Apache License, Version 2.0 (the "License"); 582cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * you may not use this file except in compliance with the License. 682cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * You may obtain a copy of the License at 782cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * 882cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * http://www.apache.org/licenses/LICENSE-2.0 982cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * 1082cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * Unless required by applicable law or agreed to in writing, software 1182cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * distributed under the License is distributed on an "AS IS" BASIS, 1282cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1382cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * See the License for the specific language governing permissions and 1482cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * limitations under the License. 1582cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira */ 1682cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira 1782cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereirapackage com.android.mail.providers; 1882cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira 1982cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereiraimport android.content.ContentValues; 2082cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereiraimport android.text.TextUtils; 2182cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira 2282cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereiraimport com.android.mail.providers.UIProvider.DraftType; 2382cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereiraimport com.android.mail.providers.UIProvider.MessageColumns; 2482cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira 25f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereiraimport java.util.List; 26f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira 2782cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira/** 2882cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * A helper class for creating or updating messages. Use the putXxx methods to 2982cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * provide initial or new values for the message. Then save or send the message. 3082cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * To save or send an existing message without making other changes to it simply 3129ef1b89b158281ffb693dd5f2c5291a894109fcMindy Pereira * provide an empty ContentValues. 3282cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira */ 3382cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereirapublic class MessageModification { 3482cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira /** 3582cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * Sets the message's subject. Only valid for drafts. 3682cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * @param values the ContentValues that will be used to create or update the 3782cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * message 3882cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * @param subject the new subject 3982cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira */ 4082cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira public static void putSubject(ContentValues values, String subject) { 4182cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira values.put(MessageColumns.SUBJECT, subject); 4282cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira } 4382cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira 4482cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira /** 4582cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * Sets the message's to address. Only valid for drafts. 4682cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * @param values the ContentValues that will be used to create or update the 4782cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * message 4882cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * @param toAddresses the new to addresses 4982cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira */ 5082cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira public static void putToAddresses(ContentValues values, String[] toAddresses) { 51048b5c892e098d79335a5eb68fa3a1ec1b7b5a85Mindy Pereira values.put(MessageColumns.TO, TextUtils.join(UIProvider.EMAIL_SEPARATOR, toAddresses)); 5282cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira } 5382cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira 5482cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira /** 5582cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * Sets the message's cc address. Only valid for drafts. 5682cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * @param values the ContentValues that will be used to create or update the 5782cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * message 5882cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * @param ccAddresses the new cc addresses 5982cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira */ 6082cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira public static void putCcAddresses(ContentValues values, String[] ccAddresses) { 61048b5c892e098d79335a5eb68fa3a1ec1b7b5a85Mindy Pereira values.put(MessageColumns.CC, TextUtils.join(UIProvider.EMAIL_SEPARATOR, ccAddresses)); 6282cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira } 6382cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira 6482cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira /** 6582cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * Sets the message's bcc address. Only valid for drafts. 6682cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * @param values the ContentValues that will be used to create or update the 6782cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * message 6882cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * @param bccAddresses the new bcc addresses 6982cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira */ 7082cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira public static void putBccAddresses(ContentValues values, String[] bccAddresses) { 71048b5c892e098d79335a5eb68fa3a1ec1b7b5a85Mindy Pereira values.put(MessageColumns.BCC, TextUtils.join(UIProvider.EMAIL_SEPARATOR, bccAddresses)); 7282cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira } 7382cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira 7482cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira /** 7582cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * Saves a flag indicating the message is forwarded. Only valid for drafts 7682cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * not yet sent to / retrieved from server. 7782cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * @param values the ContentValues that will be used to create or update the 7882cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * message 7982cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * @param forward true if the message is forwarded 8082cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira */ 8182cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira public static void putForward(ContentValues values, boolean forward) { 8282cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira values.put(MessageColumns.DRAFT_TYPE, DraftType.FORWARD); 8382cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira } 8482cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira 8582cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira /** 8682cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * Saves an include quoted text flag. Only valid for drafts not yet sent to 8782cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * / retrieved from server. 8882cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * @param values the ContentValues that will be used to create or update the 8982cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * message 9082cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * @param includeQuotedText the include quoted text flag 9182cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira */ 923ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public static void putAppendRefMessageContent(ContentValues values, boolean includeQuotedText) { 9354a5aabee0dca5b52047d23651cca038357c49fdMindy Pereira values.put(MessageColumns.APPEND_REF_MESSAGE_CONTENT, includeQuotedText ? 1 : 0); 9482cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira } 9582cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira 9682cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira /** 9782cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * Saves a new body for the message. Only valid for drafts. 9882cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * @param values the ContentValues that will be used to create or update the 9982cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * message 10082cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * @param body the new body of the message 10182cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira */ 10282cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira public static void putBody(ContentValues values, String body) { 10382cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira values.put(MessageColumns.BODY_TEXT, body); 10482cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira } 10529ef1b89b158281ffb693dd5f2c5291a894109fcMindy Pereira 10629ef1b89b158281ffb693dd5f2c5291a894109fcMindy Pereira /** 10729ef1b89b158281ffb693dd5f2c5291a894109fcMindy Pereira * Saves a new body for the message. Only valid for drafts. 10829ef1b89b158281ffb693dd5f2c5291a894109fcMindy Pereira * @param values the ContentValues that will be used to create or update the 10929ef1b89b158281ffb693dd5f2c5291a894109fcMindy Pereira * message 11029ef1b89b158281ffb693dd5f2c5291a894109fcMindy Pereira * @param body the new body of the message 11129ef1b89b158281ffb693dd5f2c5291a894109fcMindy Pereira */ 11229ef1b89b158281ffb693dd5f2c5291a894109fcMindy Pereira public static void putBodyHtml(ContentValues values, String body) { 11329ef1b89b158281ffb693dd5f2c5291a894109fcMindy Pereira values.put(MessageColumns.BODY_HTML, body); 11429ef1b89b158281ffb693dd5f2c5291a894109fcMindy Pereira } 115f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira 116e8caf1279a1c6ae720215405f678172a5cbf68d7Mindy Pereira /** 11712575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira * Saves the type of the conversation. 11812575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira * 11912575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira * @param values the ContentValues that will be used to create or update the message 12012575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira * @param draftType 12112575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira */ 12212575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira public static void putDraftType(ContentValues values, int draftType) { 12312575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira values.put(MessageColumns.DRAFT_TYPE, draftType); 12412575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira } 12512575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira 12612575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira /** 12712575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira * Saves the ref message id for the conversation. It will be a uri. 12812575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira * 12912575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira * @param values the ContentValues that will be used to create or update the message 13012575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira * @param uri of the reference message 13112575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira */ 13212575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira public static void putRefMessageId(ContentValues values, String uri) { 13312575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira values.put(MessageColumns.REF_MESSAGE_ID, uri); 13412575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira } 13512575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira 13612575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira /** 137e8caf1279a1c6ae720215405f678172a5cbf68d7Mindy Pereira * Saves a quoted text starting position. Only valid for drafts not yet sent to / 138e8caf1279a1c6ae720215405f678172a5cbf68d7Mindy Pereira * retrieved from server. 139e8caf1279a1c6ae720215405f678172a5cbf68d7Mindy Pereira * 140e8caf1279a1c6ae720215405f678172a5cbf68d7Mindy Pereira * @param values the ContentValues that will be used to create or update the message 141e8caf1279a1c6ae720215405f678172a5cbf68d7Mindy Pereira * @param quoteStartPos the starting position for quoted text 142e8caf1279a1c6ae720215405f678172a5cbf68d7Mindy Pereira */ 143e8caf1279a1c6ae720215405f678172a5cbf68d7Mindy Pereira public static void putQuoteStartPos(ContentValues values, long quoteStartPos) { 144e8caf1279a1c6ae720215405f678172a5cbf68d7Mindy Pereira values.put(MessageColumns.QUOTE_START_POS, quoteStartPos); 145e8caf1279a1c6ae720215405f678172a5cbf68d7Mindy Pereira } 146e8caf1279a1c6ae720215405f678172a5cbf68d7Mindy Pereira 147f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira public static void putAttachments(ContentValues values, List<Attachment> attachments) { 148f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira values.put( 149f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira MessageColumns.JOINED_ATTACHMENT_INFOS, joinedAttachmentsString(attachments)); 150f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira } 151f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira 152f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira /** 153f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira * The string produced here is parsed by Gmail.MessageCursor#getAttachmentInfos. 154f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira */ 155f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira public static String joinedAttachmentsString(List<Attachment> attachments) { 156f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira StringBuilder attachmentsSb = new StringBuilder(); 157f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira for (Attachment attachment : attachments) { 158f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira if (attachmentsSb.length() != 0) { 159f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira attachmentsSb.append(UIProvider.MESSAGE_ATTACHMENT_INFO_SEPARATOR); 160f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira } 161f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira attachmentsSb.append(attachment.toJoinedString()); 162f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira } 163f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira return attachmentsSb.toString(); 164f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira } 16582cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira} 166