summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/android/email/provider/EmailProvider.java46
-rw-r--r--src/com/android/email/provider/WidgetProvider.java23
2 files changed, 43 insertions, 26 deletions
diff --git a/src/com/android/email/provider/EmailProvider.java b/src/com/android/email/provider/EmailProvider.java
index 4917e50b5..82f750b1e 100644
--- a/src/com/android/email/provider/EmailProvider.java
+++ b/src/com/android/email/provider/EmailProvider.java
@@ -102,6 +102,7 @@ import com.android.mail.widget.BaseWidgetProvider;
import com.android.mail.widget.WidgetProvider;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Lists;
import java.io.File;
import java.io.FileDescriptor;
@@ -3089,15 +3090,17 @@ public class EmailProvider extends ContentProvider {
* any pending notifications for the corresponding mailbox should be canceled). We also handle
* getExtras() to provide a snapshot of the mailbox's status
*/
- static class VisibilityCursor extends CursorWrapper {
+ static class EmailConversationCursor extends CursorWrapper {
private final long mMailboxId;
private final Context mContext;
+ private final FolderList mFolderList;
private final Bundle mExtras = new Bundle();
- public VisibilityCursor(Context context, Cursor cursor, long mailboxId) {
+ public EmailConversationCursor(Context context, Cursor cursor, long mailboxId) {
super(cursor);
mMailboxId = mailboxId;
mContext = context;
+ mFolderList = FolderList.copyOf(Lists.newArrayList(getFolder(mContext, mMailboxId)));
Mailbox mailbox = Mailbox.restoreMailboxWithId(context, mailboxId);
// We assume that all message lists are complete
@@ -3130,6 +3133,8 @@ public class EmailProvider extends ContentProvider {
@Override
public Bundle respond(Bundle params) {
+ final Bundle response = new Bundle();
+
final String setVisibilityKey =
UIProvider.ConversationCursorCommand.COMMAND_KEY_SET_VISIBILITY;
if (params.containsKey(setVisibilityKey)) {
@@ -3163,13 +3168,46 @@ public class EmailProvider extends ContentProvider {
}
}
// Return success
- Bundle response = new Bundle();
response.putString(setVisibilityKey,
UIProvider.ConversationCursorCommand.COMMAND_RESPONSE_OK);
+
+ final String rawFoldersKey =
+ UIProvider.ConversationCursorCommand.COMMAND_GET_RAW_FOLDERS;
+ if (params.containsKey(rawFoldersKey)) {
+ response.putParcelable(rawFoldersKey, mFolderList);
+ }
+
return response;
}
}
+ /**
+ * Convenience method to create a {@link Folder}
+ * @param context to get a {@ContentResolver}
+ * @param mailboxId id of the {@link Mailbox} that we want
+ * @return the {@link Folder} or null
+ */
+ public static Folder getFolder(Context context, long mailboxId) {
+ final ContentResolver resolver = context.getContentResolver();
+ final Cursor fc = resolver.query(EmailProvider.uiUri("uifolder", mailboxId),
+ UIProvider.FOLDERS_PROJECTION, null, null, null);
+
+ if (fc == null) {
+ LogUtils.e(TAG, "Null folder cursor for mailboxId %d", mailboxId);
+ return null;
+ }
+
+ Folder uiFolder = null;
+ try {
+ if (fc.moveToFirst()) {
+ uiFolder = new Folder(fc);
+ }
+ } finally {
+ fc.close();
+ }
+ return uiFolder;
+ }
+
static class AttachmentsCursor extends CursorWrapper {
private final int mContentUriIndex;
private final int mUriIndex;
@@ -3291,7 +3329,7 @@ public class EmailProvider extends ContentProvider {
genQueryMailboxMessages(uiProjection, unseenOnly), new String[] {id});
}
notifyUri = UIPROVIDER_CONVERSATION_NOTIFIER.buildUpon().appendPath(id).build();
- c = new VisibilityCursor(context, c, mailboxId);
+ c = new EmailConversationCursor(context, c, mailboxId);
break;
case UI_MESSAGE:
MessageQuery qq = genQueryViewMessage(uiProjection, id);
diff --git a/src/com/android/email/provider/WidgetProvider.java b/src/com/android/email/provider/WidgetProvider.java
index 52b51cab7..1b30b1da8 100644
--- a/src/com/android/email/provider/WidgetProvider.java
+++ b/src/com/android/email/provider/WidgetProvider.java
@@ -103,7 +103,7 @@ public class WidgetProvider extends BaseWidgetProvider {
// 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);
+ final Folder uiFolder = EmailProvider.getFolder(context, mailboxId);
if (uiAccount != null && uiFolder != null) {
WidgetService.saveWidgetInformation(context, widgetId, uiAccount,
@@ -167,27 +167,6 @@ public class WidgetProvider extends BaseWidgetProvider {
return uiAccount;
}
- private static Folder getFolder(Context context, long mailboxId) {
- final ContentResolver resolver = context.getContentResolver();
- final Cursor fc = resolver.query(EmailProvider.uiUri("uifolder", mailboxId),
- UIProvider.FOLDERS_PROJECTION, null, null, null);
-
- if (fc == null) {
- LogUtils.e(LOG_TAG, "Null folder cursor for mailboxId %d", mailboxId);
- return null;
- }
-
- Folder uiFolder = null;
- try {
- if (fc.moveToFirst()) {
- uiFolder = new Folder(fc);
- }
- } finally {
- fc.close();
- }
- return uiFolder;
- }
-
/**
* Returns the saved account ID for the given widget. Otherwise,
* {@link com.android.emailcommon.provider.Account#NO_ACCOUNT} if