Merge "Return raw folder in respond()." into jb-ub-mail-ur10
This commit is contained in:
commit
e43224f7ae
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue