From 96f1d9eadf3991196d97374e6a2aef9cb053b4e0 Mon Sep 17 00:00:00 2001 From: Jesse Vincent Date: Sat, 23 Oct 2010 15:19:56 +0000 Subject: [PATCH] Fix phantom messages in unified inbox. --- src/com/fsck/k9/activity/MessageList.java | 68 ++++++++++++++--------- 1 file changed, 41 insertions(+), 27 deletions(-) diff --git a/src/com/fsck/k9/activity/MessageList.java b/src/com/fsck/k9/activity/MessageList.java index 1369b56b3..f1c7fafbf 100644 --- a/src/com/fsck/k9/activity/MessageList.java +++ b/src/com/fsck/k9/activity/MessageList.java @@ -771,51 +771,65 @@ public class MessageList sortDateAscending = mController.isSortAscending(SORT_TYPE.SORT_DATE); mController.addListener(mAdapter.mListener); - - if (mFolderName != null) + if (mAccount != null) { - if (mAdapter.messages.isEmpty()) + mController.notifyAccountCancel(this, mAccount); + MessagingController.getInstance(getApplication()).notifyAccountCancel(this, mAccount); + } + + if (mAdapter.messages.isEmpty()) + { + if (mFolderName != null) { mController.listLocalMessages(mAccount, mFolderName, mAdapter.mListener); } - else + else if (mQueryString != null) { - new Thread() + mController.searchLocalMessages(mAccountUuids, mFolderNames, null, mQueryString, mIntegrate, mQueryFlags, mForbiddenFlags, mAdapter.mListener); + } + + } + else + { + new Thread() + { + @Override + public void run() { - @Override - public void run() + mAdapter.markAllMessagesAsDirty(); + + if (mFolderName != null) { - mAdapter.markAllMessagesAsDirty(); mController.listLocalMessagesSynchronous(mAccount, mFolderName, mAdapter.mListener); - mAdapter.pruneDirtyMessages(); - runOnUiThread(new Runnable() - { - public void run() - { - mAdapter.notifyDataSetChanged(); - } - }); + } + else if (mQueryString != null) + { + mController.searchLocalMessagesSynchronous(mAccountUuids, mFolderNames, null, mQueryString, mIntegrate, mQueryFlags, mForbiddenFlags, mAdapter.mListener); } + + mAdapter.pruneDirtyMessages(); + runOnUiThread(new Runnable() + { + public void run() + { + mAdapter.notifyDataSetChanged(); + restoreListState(); + } + }); } - .start(); + } - mController.notifyAccountCancel(this, mAccount); - - MessagingController.getInstance(getApplication()).notifyAccountCancel(this, mAccount); + .start(); + } + if (mAccount != null && mFolderName != null) + { mController.getFolderUnreadMessageCount(mAccount, mFolderName, mAdapter.mListener); } - else if (mQueryString != null) - { - mController.searchLocalMessages(mAccountUuids, mFolderNames, null, mQueryString, mIntegrate, mQueryFlags, mForbiddenFlags, mAdapter.mListener); - } - mHandler.refreshTitle(); - restoreListState(); } - private void initializeLayout() { requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);