When folder is changed, also update conversation list.
Also add the folder's total count to the extras for the conversation list cursor. BUG: 7480726 Change-Id: I3215fed561deb8430fd6d6c680bdb44ca87cc162
This commit is contained in:
parent
4da3641292
commit
fc0dae9cd7
@ -769,8 +769,7 @@ public class EmailProvider extends ContentProvider {
|
|||||||
notifyUI(UIPROVIDER_ACCOUNT_NOTIFIER, id);
|
notifyUI(UIPROVIDER_ACCOUNT_NOTIFIER, id);
|
||||||
resolver.notifyChange(UIPROVIDER_ALL_ACCOUNTS_NOTIFIER, null);
|
resolver.notifyChange(UIPROVIDER_ALL_ACCOUNTS_NOTIFIER, null);
|
||||||
} else if (match == MAILBOX_ID) {
|
} else if (match == MAILBOX_ID) {
|
||||||
notifyUI(UIPROVIDER_FOLDER_NOTIFIER, id);
|
notifyUIFolder(id, null);
|
||||||
notifyUI(UIPROVIDER_FOLDERLIST_NOTIFIER, id);
|
|
||||||
} else if (match == ATTACHMENT_ID) {
|
} else if (match == ATTACHMENT_ID) {
|
||||||
notifyUI(UIPROVIDER_ATTACHMENT_NOTIFIER, id);
|
notifyUI(UIPROVIDER_ATTACHMENT_NOTIFIER, id);
|
||||||
}
|
}
|
||||||
@ -1850,8 +1849,8 @@ outer:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (match == MAILBOX_ID && values.containsKey(Mailbox.UI_SYNC_STATUS)) {
|
} else if (match == MAILBOX_ID && values.containsKey(Mailbox.UI_SYNC_STATUS)) {
|
||||||
notifyUI(UIPROVIDER_FOLDER_NOTIFIER, id);
|
// TODO: should this notify on keys other than sync status?
|
||||||
notifyUI(UIPROVIDER_FOLDERLIST_NOTIFIER, id);
|
notifyUIFolder(id, null);
|
||||||
} else if (match == ACCOUNT_ID) {
|
} else if (match == ACCOUNT_ID) {
|
||||||
// Notify individual account and "all accounts"
|
// Notify individual account and "all accounts"
|
||||||
notifyUI(UIPROVIDER_ACCOUNT_NOTIFIER, id);
|
notifyUI(UIPROVIDER_ACCOUNT_NOTIFIER, id);
|
||||||
@ -3323,6 +3322,7 @@ outer:
|
|||||||
mExtras.putInt(UIProvider.CursorExtraKeys.EXTRA_ERROR,
|
mExtras.putInt(UIProvider.CursorExtraKeys.EXTRA_ERROR,
|
||||||
mailbox.mUiLastSyncResult);
|
mailbox.mUiLastSyncResult);
|
||||||
}
|
}
|
||||||
|
mExtras.putInt(UIProvider.CursorExtraKeys.EXTRA_TOTAL_COUNT, mailbox.mTotalCount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4274,8 +4274,7 @@ outer:
|
|||||||
if (mailbox.mType == Mailbox.TYPE_TRASH || mailbox.mType == Mailbox.TYPE_DRAFTS) {
|
if (mailbox.mType == Mailbox.TYPE_TRASH || mailbox.mType == Mailbox.TYPE_DRAFTS) {
|
||||||
// We actually delete these, including attachments
|
// We actually delete these, including attachments
|
||||||
AttachmentUtilities.deleteAllAttachmentFiles(context, msg.mAccountKey, msg.mId);
|
AttachmentUtilities.deleteAllAttachmentFiles(context, msg.mAccountKey, msg.mId);
|
||||||
notifyUI(UIPROVIDER_FOLDER_NOTIFIER, mailbox.mId);
|
notifyUIFolder(mailbox.mId, mailbox.mAccountKey);
|
||||||
notifyUI(UIPROVIDER_FOLDERLIST_NOTIFIER, mailbox.mAccountKey);
|
|
||||||
return context.getContentResolver().delete(
|
return context.getContentResolver().delete(
|
||||||
ContentUris.withAppendedId(Message.SYNCED_CONTENT_URI, msg.mId), null, null);
|
ContentUris.withAppendedId(Message.SYNCED_CONTENT_URI, msg.mId), null, null);
|
||||||
}
|
}
|
||||||
@ -4286,8 +4285,7 @@ outer:
|
|||||||
}
|
}
|
||||||
ContentValues values = new ContentValues();
|
ContentValues values = new ContentValues();
|
||||||
values.put(MessageColumns.MAILBOX_KEY, trashMailbox.mId);
|
values.put(MessageColumns.MAILBOX_KEY, trashMailbox.mId);
|
||||||
notifyUI(UIPROVIDER_FOLDER_NOTIFIER, mailbox.mId);
|
notifyUIFolder(mailbox.mId, mailbox.mAccountKey);
|
||||||
notifyUI(UIPROVIDER_FOLDERLIST_NOTIFIER, mailbox.mId);
|
|
||||||
return uiUpdateMessage(uri, values, true);
|
return uiUpdateMessage(uri, values, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4391,6 +4389,36 @@ outer:
|
|||||||
notifyUI(UIPROVIDER_ALL_ACCOUNTS_NOTIFIER, null);
|
notifyUI(UIPROVIDER_ALL_ACCOUNTS_NOTIFIER, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notify about a folder update. Because folder changes can affect the conversation cursor's
|
||||||
|
* extras, the conversation must also be notified here.
|
||||||
|
* @param folderId the folder id to be notified
|
||||||
|
* @param accountId the account id to be notified (for folder list notification); if null, then
|
||||||
|
* lookup the accountId from the folder.
|
||||||
|
*/
|
||||||
|
private void notifyUIFolder(String folderId, String accountId) {
|
||||||
|
notifyUI(UIPROVIDER_CONVERSATION_NOTIFIER, folderId);
|
||||||
|
notifyUI(UIPROVIDER_FOLDER_NOTIFIER, folderId);
|
||||||
|
if (accountId == null) {
|
||||||
|
try {
|
||||||
|
final Mailbox mailbox = Mailbox.restoreMailboxWithId(getContext(),
|
||||||
|
Long.parseLong(folderId));
|
||||||
|
if (mailbox != null) {
|
||||||
|
accountId = Long.toString(mailbox.mAccountKey);
|
||||||
|
}
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
// Bad folderId, so we can't lookup account.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (accountId != null) {
|
||||||
|
notifyUI(UIPROVIDER_FOLDERLIST_NOTIFIER, accountId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void notifyUIFolder(long folderId, long accountId) {
|
||||||
|
notifyUIFolder(Long.toString(folderId), Long.toString(accountId));
|
||||||
|
}
|
||||||
|
|
||||||
private void notifyUI(Uri uri, String id) {
|
private void notifyUI(Uri uri, String id) {
|
||||||
final Uri notifyUri = (id != null) ? uri.buildUpon().appendPath(id).build() : uri;
|
final Uri notifyUri = (id != null) ? uri.buildUpon().appendPath(id).build() : uri;
|
||||||
getContext().getContentResolver().notifyChange(notifyUri, null);
|
getContext().getContentResolver().notifyChange(notifyUri, null);
|
||||||
@ -4526,8 +4554,7 @@ outer:
|
|||||||
mSearchParams.mTotalCount = service.searchMessages(accountId,
|
mSearchParams.mTotalCount = service.searchMessages(accountId,
|
||||||
mSearchParams, searchMailboxId);
|
mSearchParams, searchMailboxId);
|
||||||
//Log.d(TAG, "TotalCount to UI: " + mSearchParams.mTotalCount);
|
//Log.d(TAG, "TotalCount to UI: " + mSearchParams.mTotalCount);
|
||||||
notifyUI(UIPROVIDER_FOLDER_NOTIFIER, searchMailboxId);
|
notifyUIFolder(searchMailboxId, accountId);
|
||||||
notifyUI(UIPROVIDER_FOLDERLIST_NOTIFIER, accountId);
|
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
Log.e("searchMessages", "RemoteException", e);
|
Log.e("searchMessages", "RemoteException", e);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user