1
0
mirror of https://github.com/moparisthebest/k-9 synced 2024-12-25 09:08:49 -05:00

Fixed counting of new unread messages

This commit is contained in:
cketti 2011-05-21 00:33:43 +02:00
parent 6c1b1ebf32
commit 4f67a6be24

View File

@ -1161,12 +1161,32 @@ public class MessagingController implements Runnable {
} }
} }
/**
* Fetches the messages described by inputMessages from the remote store and writes them to
* local storage.
*
* @param account
* The account the remote store belongs to.
* @param remoteFolder
* The remote folder to download messages from.
* @param localFolder
* The {@link LocalFolder} instance corresponding to the remote folder.
* @param inputMessages
* A list of messages objects that store the UIDs of which messages to download.
* @param flagSyncOnly
* Only flags will be fetched from the remote store if this is {@code true}.
*
* @return The number of downloaded messages that are not flagged as {@link Flag#SEEN}.
*
* @throws MessagingException
*/
private int downloadMessages(final Account account, final Folder remoteFolder, private int downloadMessages(final Account account, final Folder remoteFolder,
final LocalFolder localFolder, List<Message> inputMessages, boolean flagSyncOnly) throws MessagingException { final LocalFolder localFolder, List<Message> inputMessages,
boolean flagSyncOnly) throws MessagingException {
final Date earliestDate = account.getEarliestPollDate(); final Date earliestDate = account.getEarliestPollDate();
Date downloadStarted = new Date(); // now Date downloadStarted = new Date(); // now
if (earliestDate != null) { if (earliestDate != null) {
if (K9.DEBUG) { if (K9.DEBUG) {
Log.d(K9.LOG_TAG, "Only syncing messages after " + earliestDate); Log.d(K9.LOG_TAG, "Only syncing messages after " + earliestDate);
@ -1541,7 +1561,7 @@ public class MessagingController implements Runnable {
remoteFolder.fetch(smallMessages.toArray(new Message[smallMessages.size()]), remoteFolder.fetch(smallMessages.toArray(new Message[smallMessages.size()]),
fp, new MessageRetrievalListener() { fp, new MessageRetrievalListener() {
@Override @Override
public void messageFinished(Message message, int number, int ofTotal) { public void messageFinished(final Message message, int number, int ofTotal) {
try { try {
if (!shouldImportMessage(account, folder, message, progress, earliestDate)) { if (!shouldImportMessage(account, folder, message, progress, earliestDate)) {
@ -1557,6 +1577,13 @@ public class MessagingController implements Runnable {
progress.incrementAndGet(); progress.incrementAndGet();
} }
}); });
// Increment the number of "new messages" if the newly downloaded message is
// not marked as read.
if (!localMessage.isSet(Flag.SEEN)) {
newMessages.incrementAndGet();
}
if (K9.DEBUG) if (K9.DEBUG)
Log.v(K9.LOG_TAG, "About to notify listeners that we got a new small message " Log.v(K9.LOG_TAG, "About to notify listeners that we got a new small message "
+ account + ":" + folder + ":" + message.getUid()); + account + ":" + folder + ":" + message.getUid());
@ -1572,7 +1599,6 @@ public class MessagingController implements Runnable {
// Send a notification of this message // Send a notification of this message
if (shouldNotifyForMessage(account, localFolder, message)) { if (shouldNotifyForMessage(account, localFolder, message)) {
newMessages.incrementAndGet();
notifyAccount(mApplication, account, message, unreadBeforeStart, newMessages); notifyAccount(mApplication, account, message, unreadBeforeStart, newMessages);
} }
@ -1691,6 +1717,13 @@ public class MessagingController implements Runnable {
// Update the listener with what we've found // Update the listener with what we've found
progress.incrementAndGet(); progress.incrementAndGet();
Message localMessage = localFolder.getMessage(message.getUid()); Message localMessage = localFolder.getMessage(message.getUid());
// Increment the number of "new messages" if the newly downloaded message is
// not marked as read.
if (!localMessage.isSet(Flag.SEEN)) {
newMessages.incrementAndGet();
}
for (MessagingListener l : getListeners()) { for (MessagingListener l : getListeners()) {
l.synchronizeMailboxAddOrUpdateMessage(account, folder, localMessage); l.synchronizeMailboxAddOrUpdateMessage(account, folder, localMessage);
l.synchronizeMailboxProgress(account, folder, progress.get(), todo); l.synchronizeMailboxProgress(account, folder, progress.get(), todo);
@ -1701,7 +1734,6 @@ public class MessagingController implements Runnable {
// Send a notification of this message // Send a notification of this message
if (shouldNotifyForMessage(account, localFolder, message)) { if (shouldNotifyForMessage(account, localFolder, message)) {
newMessages.incrementAndGet();
notifyAccount(mApplication, account, message, unreadBeforeStart, newMessages); notifyAccount(mApplication, account, message, unreadBeforeStart, newMessages);
} }