Fix migration from Email1 to Email2 when using combined inbox.

Bug: 8578254
Change-Id: I2afb7e145664c1e6d10c0cfbf654d835fec8c9f1
This commit is contained in:
Mark Wei 2013-04-19 15:06:11 -07:00
parent 503cc0630d
commit 3a82ad5992
2 changed files with 27 additions and 4 deletions

View File

@ -866,7 +866,7 @@ public class EmailProvider extends ContentProvider {
// A specific mailbox
// insert into this URI causes a message to be added to the mailbox
// ** NOTE For now, the accountKey must be set manually in the values!
matcher.addURI(EmailContent.AUTHORITY, "mailbox/#", MAILBOX_ID);
matcher.addURI(EmailContent.AUTHORITY, "mailbox/*", MAILBOX_ID);
matcher.addURI(EmailContent.AUTHORITY, "mailboxNotification/#",
MAILBOX_NOTIFICATION);
matcher.addURI(EmailContent.AUTHORITY, "mailboxMostRecentMessage/#",
@ -1720,7 +1720,7 @@ public class EmailProvider extends ContentProvider {
AttachmentDownloadService.attachmentChanged(context, id, flags);
}
};
private AttachmentService mAttachmentService = DEFAULT_ATTACHMENT_SERVICE;
private final AttachmentService mAttachmentService = DEFAULT_ATTACHMENT_SERVICE;
private Cursor notificationQuery(final Uri uri) {
final SQLiteDatabase db = getDatabase(getContext());
@ -2676,7 +2676,7 @@ public class EmailProvider extends ContentProvider {
return "content://" + EmailContent.AUTHORITY + "/" + type + "/" + id;
}
private static final long COMBINED_ACCOUNT_ID = 0x10000000;
public static final long COMBINED_ACCOUNT_ID = 0x10000000;
/**
* Generate an id for a combined mailbox of a given type
@ -2691,7 +2691,7 @@ public class EmailProvider extends ContentProvider {
return Long.toString(getVirtualMailboxId(accountId, type));
}
private static long getVirtualMailboxId(long accountId, int type) {
public static long getVirtualMailboxId(long accountId, int type) {
return (accountId << 32) + type;
}

View File

@ -98,6 +98,9 @@ public class WidgetProvider extends BaseWidgetProvider {
return;
}
accountId = migrateLegacyWidgetAccountId(accountId);
mailboxId = migrateLegacyWidgetMailboxId(mailboxId, accountId);
// Get Account and folder objects for the account id and mailbox id
final com.android.mail.providers.Account uiAccount = getAccount(context, accountId);
final Folder uiFolder = getFolder(context, mailboxId);
@ -116,6 +119,26 @@ public class WidgetProvider extends BaseWidgetProvider {
editor.apply();
}
private long migrateLegacyWidgetAccountId(long accountId) {
if (accountId == Account.ACCOUNT_ID_COMBINED_VIEW) {
return EmailProvider.COMBINED_ACCOUNT_ID;
}
return accountId;
}
/**
* @param accountId The migrated accountId
* @return
*/
private long migrateLegacyWidgetMailboxId(long mailboxId, long accountId) {
if (mailboxId == Mailbox.QUERY_ALL_INBOXES) {
return EmailProvider.getVirtualMailboxId(accountId, Mailbox.TYPE_INBOX);
} else if (mailboxId == Mailbox.QUERY_ALL_UNREAD) {
return EmailProvider.getVirtualMailboxId(accountId, Mailbox.TYPE_ALL_UNREAD);
}
return mailboxId;
}
private static com.android.mail.providers.Account getAccount(Context context, long accountId) {
final ContentResolver resolver = context.getContentResolver();
final Cursor ac = resolver.query(EmailProvider.uiUri("uiaccount", accountId),