From aa9a5a703a4ee33189c2d56fa18704b482e8226b Mon Sep 17 00:00:00 2001 From: Marc Blank Date: Tue, 5 Jun 2012 08:55:30 -0700 Subject: [PATCH] Save/restore draft info (ref message/quote pos) in EmailProvider Bug: 6581587 Change-Id: Idd7f8b905611ef567f8f5de3d936bb8f919c869a --- .../emailcommon/provider/EmailContent.java | 18 +++++++++++------- .../com/android/email/provider/DBHelper.java | 2 +- .../android/email/provider/EmailProvider.java | 11 +++++++++++ 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/email2/emailcommon/src/com/android/emailcommon/provider/EmailContent.java b/email2/emailcommon/src/com/android/emailcommon/provider/EmailContent.java index 227502572..f5268da32 100755 --- a/email2/emailcommon/src/com/android/emailcommon/provider/EmailContent.java +++ b/email2/emailcommon/src/com/android/emailcommon/provider/EmailContent.java @@ -515,8 +515,8 @@ public abstract class EmailContent { public static final String FLAGS = "flags"; // Sync related identifiers - // Any client-required identifier - public static final String CLIENT_ID = "clientId"; + // Saved draft info (reusing the never-used "clientId" column) + public static final String DRAFT_INFO = "clientId"; // The message-id in the message's header public static final String MESSAGE_ID = "messageId"; @@ -575,7 +575,7 @@ public abstract class EmailContent { public static final int CONTENT_FLAG_ATTACHMENT_COLUMN = 7; public static final int CONTENT_FLAGS_COLUMN = 8; public static final int CONTENT_SERVER_ID_COLUMN = 9; - public static final int CONTENT_CLIENT_ID_COLUMN = 10; + public static final int CONTENT_DRAFT_INFO_COLUMN = 10; public static final int CONTENT_MESSAGE_ID_COLUMN = 11; public static final int CONTENT_MAILBOX_KEY_COLUMN = 12; public static final int CONTENT_ACCOUNT_KEY_COLUMN = 13; @@ -596,7 +596,7 @@ public abstract class EmailContent { MessageColumns.SUBJECT, MessageColumns.FLAG_READ, MessageColumns.FLAG_LOADED, MessageColumns.FLAG_FAVORITE, MessageColumns.FLAG_ATTACHMENT, MessageColumns.FLAGS, - SyncColumns.SERVER_ID, MessageColumns.CLIENT_ID, + SyncColumns.SERVER_ID, MessageColumns.DRAFT_INFO, MessageColumns.MESSAGE_ID, MessageColumns.MAILBOX_KEY, MessageColumns.ACCOUNT_KEY, MessageColumns.FROM_LIST, MessageColumns.TO_LIST, MessageColumns.CC_LIST, @@ -719,7 +719,7 @@ public abstract class EmailContent { public String mServerId; public long mServerTimeStamp; - public String mClientId; + public int mDraftInfo; public String mMessageId; public long mMailboxKey; @@ -808,6 +808,10 @@ public abstract class EmailContent { // compatibility public static final int FLAG_TYPE_REPLY_ALL = 1 << 21; + // Flag used in draftInfo to indicate that the reference message should be appended + public static final int DRAFT_INFO_APPEND_REF_MESSAGE = 1 << 24; + public static final int DRAFT_INFO_QUOTE_POS_MASK = 0xFFFFFF; + /** a pseudo ID for "no message". */ public static final long NO_MESSAGE = -1L; @@ -831,7 +835,7 @@ public abstract class EmailContent { values.put(SyncColumns.SERVER_ID, mServerId); values.put(SyncColumns.SERVER_TIMESTAMP, mServerTimeStamp); - values.put(MessageColumns.CLIENT_ID, mClientId); + values.put(MessageColumns.DRAFT_INFO, mDraftInfo); values.put(MessageColumns.MESSAGE_ID, mMessageId); values.put(MessageColumns.MAILBOX_KEY, mMailboxKey); @@ -872,7 +876,7 @@ public abstract class EmailContent { mFlags = cursor.getInt(CONTENT_FLAGS_COLUMN); mServerId = cursor.getString(CONTENT_SERVER_ID_COLUMN); mServerTimeStamp = cursor.getLong(CONTENT_SERVER_TIMESTAMP_COLUMN); - mClientId = cursor.getString(CONTENT_CLIENT_ID_COLUMN); + mDraftInfo = cursor.getInt(CONTENT_DRAFT_INFO_COLUMN); mMessageId = cursor.getString(CONTENT_MESSAGE_ID_COLUMN); mMailboxKey = cursor.getLong(CONTENT_MAILBOX_KEY_COLUMN); mAccountKey = cursor.getLong(CONTENT_ACCOUNT_KEY_COLUMN); diff --git a/email2/src/com/android/email/provider/DBHelper.java b/email2/src/com/android/email/provider/DBHelper.java index ddd30871e..26bf16f53 100644 --- a/email2/src/com/android/email/provider/DBHelper.java +++ b/email2/src/com/android/email/provider/DBHelper.java @@ -157,7 +157,7 @@ public final class DBHelper { + MessageColumns.FLAG_FAVORITE + " integer, " + MessageColumns.FLAG_ATTACHMENT + " integer, " + MessageColumns.FLAGS + " integer, " - + MessageColumns.CLIENT_ID + " integer, " + + MessageColumns.DRAFT_INFO + " integer, " + MessageColumns.MESSAGE_ID + " text, " + MessageColumns.MAILBOX_KEY + " integer, " + MessageColumns.ACCOUNT_KEY + " integer, " diff --git a/email2/src/com/android/email/provider/EmailProvider.java b/email2/src/com/android/email/provider/EmailProvider.java index 6e314aa98..07d14dba1 100644 --- a/email2/src/com/android/email/provider/EmailProvider.java +++ b/email2/src/com/android/email/provider/EmailProvider.java @@ -2374,6 +2374,12 @@ outer: values.put(UIProvider.MessageColumns.ATTACHMENTS, com.android.mail.providers.Attachment.toJSONArray(uiAtts)); } + if (msg.mDraftInfo != 0) { + values.put(UIProvider.MessageColumns.APPEND_REF_MESSAGE_CONTENT, + (msg.mDraftInfo & Message.DRAFT_INFO_APPEND_REF_MESSAGE) != 0 ? 1 : 0); + values.put(UIProvider.MessageColumns.QUOTE_START_POS, + msg.mDraftInfo & Message.DRAFT_INFO_QUOTE_POS_MASK); + } } if ((msg.mFlags & Message.FLAG_INCOMING_MEETING_INVITE) != 0) { values.put(UIProvider.MessageColumns.EVENT_INTENT_URI, @@ -3163,6 +3169,11 @@ outer: break; } msg.mFlags = flags; + int draftInfo = values.getAsInteger(UIProvider.MessageColumns.QUOTE_START_POS); + if (values.getAsInteger(UIProvider.MessageColumns.APPEND_REF_MESSAGE_CONTENT) != 0) { + draftInfo |= Message.DRAFT_INFO_APPEND_REF_MESSAGE; + } + msg.mDraftInfo = draftInfo; String ref = values.getAsString(UIProvider.MessageColumns.REF_MESSAGE_ID); if (ref != null && msg.mQuotedTextStartPos > 0) { String refId = Uri.parse(ref).getLastPathSegment();