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 /** 7592551d057965689f1952faeb06763f0762bc717fMindy Pereira * Sets the custom from address for a message, we only set this if its different than the 7692551d057965689f1952faeb06763f0762bc717fMindy Pereira * default adress for the account. 7792551d057965689f1952faeb06763f0762bc717fMindy Pereira * 7892551d057965689f1952faeb06763f0762bc717fMindy Pereira * @param values the ContentValues that will be used to create or update the message 7992551d057965689f1952faeb06763f0762bc717fMindy Pereira * @param customFromAddress from address 8092551d057965689f1952faeb06763f0762bc717fMindy Pereira */ 8192551d057965689f1952faeb06763f0762bc717fMindy Pereira public static void putCustomFromAddress(ContentValues values, String customFromAddress) { 8292551d057965689f1952faeb06763f0762bc717fMindy Pereira values.put(MessageColumns.CUSTOM_FROM_ADDRESS, customFromAddress); 8392551d057965689f1952faeb06763f0762bc717fMindy Pereira } 8492551d057965689f1952faeb06763f0762bc717fMindy Pereira 8592551d057965689f1952faeb06763f0762bc717fMindy Pereira /** 8682cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * Saves a flag indicating the message is forwarded. Only valid for drafts 8782cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * not yet sent to / retrieved from server. 8882cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * @param values the ContentValues that will be used to create or update the 8982cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * message 9082cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * @param forward true if the message is forwarded 9182cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira */ 9282cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira public static void putForward(ContentValues values, boolean forward) { 9382cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira values.put(MessageColumns.DRAFT_TYPE, DraftType.FORWARD); 9482cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira } 9582cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira 9682cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira /** 9782cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * Saves an include quoted text flag. Only valid for drafts not yet sent to 9882cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * / retrieved from server. 9982cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * @param values the ContentValues that will be used to create or update the 10082cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * message 10182cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * @param includeQuotedText the include quoted text flag 10282cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira */ 1033ce64e7ceb6246130342385d91550bcf33b31cc8Mindy Pereira public static void putAppendRefMessageContent(ContentValues values, boolean includeQuotedText) { 10454a5aabee0dca5b52047d23651cca038357c49fdMindy Pereira values.put(MessageColumns.APPEND_REF_MESSAGE_CONTENT, includeQuotedText ? 1 : 0); 10582cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira } 10682cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira 10782cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira /** 10882cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * Saves a new body for the message. Only valid for drafts. 10982cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * @param values the ContentValues that will be used to create or update the 11082cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * message 11182cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira * @param body the new body of the message 11282cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira */ 11382cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira public static void putBody(ContentValues values, String body) { 11482cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira values.put(MessageColumns.BODY_TEXT, body); 11582cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira } 11629ef1b89b158281ffb693dd5f2c5291a894109fcMindy Pereira 11729ef1b89b158281ffb693dd5f2c5291a894109fcMindy Pereira /** 11829ef1b89b158281ffb693dd5f2c5291a894109fcMindy Pereira * Saves a new body for the message. Only valid for drafts. 11929ef1b89b158281ffb693dd5f2c5291a894109fcMindy Pereira * @param values the ContentValues that will be used to create or update the 12029ef1b89b158281ffb693dd5f2c5291a894109fcMindy Pereira * message 12129ef1b89b158281ffb693dd5f2c5291a894109fcMindy Pereira * @param body the new body of the message 12229ef1b89b158281ffb693dd5f2c5291a894109fcMindy Pereira */ 12329ef1b89b158281ffb693dd5f2c5291a894109fcMindy Pereira public static void putBodyHtml(ContentValues values, String body) { 12429ef1b89b158281ffb693dd5f2c5291a894109fcMindy Pereira values.put(MessageColumns.BODY_HTML, body); 12529ef1b89b158281ffb693dd5f2c5291a894109fcMindy Pereira } 126f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira 127e8caf1279a1c6ae720215405f678172a5cbf68d7Mindy Pereira /** 12812575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira * Saves the type of the conversation. 12912575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira * 13012575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira * @param values the ContentValues that will be used to create or update the message 13112575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira * @param draftType 13212575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira */ 13312575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira public static void putDraftType(ContentValues values, int draftType) { 13412575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira values.put(MessageColumns.DRAFT_TYPE, draftType); 13512575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira } 13612575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira 13712575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira /** 13812575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira * Saves the ref message id for the conversation. It will be a uri. 13912575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira * 14012575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira * @param values the ContentValues that will be used to create or update the message 14112575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira * @param uri of the reference message 14212575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira */ 14312575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira public static void putRefMessageId(ContentValues values, String uri) { 14412575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira values.put(MessageColumns.REF_MESSAGE_ID, uri); 14512575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira } 14612575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira 14712575866e5526e45eaf773c6c98c93c3a06fe156Mindy Pereira /** 148e8caf1279a1c6ae720215405f678172a5cbf68d7Mindy Pereira * Saves a quoted text starting position. Only valid for drafts not yet sent to / 149e8caf1279a1c6ae720215405f678172a5cbf68d7Mindy Pereira * retrieved from server. 150e8caf1279a1c6ae720215405f678172a5cbf68d7Mindy Pereira * 151e8caf1279a1c6ae720215405f678172a5cbf68d7Mindy Pereira * @param values the ContentValues that will be used to create or update the message 152e8caf1279a1c6ae720215405f678172a5cbf68d7Mindy Pereira * @param quoteStartPos the starting position for quoted text 153e8caf1279a1c6ae720215405f678172a5cbf68d7Mindy Pereira */ 154af38093f677e697fe642d037eafaca8ebf183101Andy Huang public static void putQuoteStartPos(ContentValues values, int quoteStartPos) { 155e8caf1279a1c6ae720215405f678172a5cbf68d7Mindy Pereira values.put(MessageColumns.QUOTE_START_POS, quoteStartPos); 156e8caf1279a1c6ae720215405f678172a5cbf68d7Mindy Pereira } 157e8caf1279a1c6ae720215405f678172a5cbf68d7Mindy Pereira 158f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira public static void putAttachments(ContentValues values, List<Attachment> attachments) { 159bbe74aee04f669990e888095b0d6858dc1e17ce1Mark Wei values.put(MessageColumns.ATTACHMENTS, Attachment.toJSONArray(attachments)); 160f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira } 16182cc5665cb18801022cd60cd52abcd16a50debdcMindy Pereira} 162