From 2be51493642e7998806c0390cc2e05045d85c36f Mon Sep 17 00:00:00 2001 From: str4d Date: Sun, 8 Jun 2014 05:01:29 +0000 Subject: [PATCH] Fixed use of \Recent flag --- src/i2p/bote/android/EmailListFragment.java | 11 +++++++++++ src/i2p/bote/android/ViewEmailActivity.java | 10 ++++++++++ src/i2p/bote/android/service/BoteService.java | 14 ++++++++++---- src/i2p/bote/android/util/BoteHelper.java | 4 +--- 4 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/i2p/bote/android/EmailListFragment.java b/src/i2p/bote/android/EmailListFragment.java index be2a713..f9e7c24 100644 --- a/src/i2p/bote/android/EmailListFragment.java +++ b/src/i2p/bote/android/EmailListFragment.java @@ -4,6 +4,9 @@ import java.io.IOException; import java.security.GeneralSecurityException; import java.util.List; +import javax.mail.Flags.Flag; +import javax.mail.MessagingException; + import net.i2p.I2PAppContext; import net.i2p.util.Log; import i2p.bote.I2PBote; @@ -413,6 +416,14 @@ public class EmailListFragment extends ListFragment implements public void onLoadFinished(Loader> loader, List data) { + // Clear recent flags + for (Email email : data) + try { + email.setFlag(Flag.RECENT, false); + } catch (MessagingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } mAdapter.setData(data); try { getActivity().setTitle( diff --git a/src/i2p/bote/android/ViewEmailActivity.java b/src/i2p/bote/android/ViewEmailActivity.java index 29fad70..86e8077 100644 --- a/src/i2p/bote/android/ViewEmailActivity.java +++ b/src/i2p/bote/android/ViewEmailActivity.java @@ -4,6 +4,8 @@ import java.security.GeneralSecurityException; import java.util.ArrayList; import java.util.List; +import javax.mail.MessagingException; + import i2p.bote.android.util.BetterAsyncTaskLoader; import i2p.bote.android.util.BoteHelper; import i2p.bote.email.Email; @@ -62,12 +64,16 @@ public class ViewEmailActivity extends ActionBarActivity implements if (mMessageId != null) { try { mFolder.setNew(mMessageId, false); + mFolder.setRecent(mMessageId, false); } catch (PasswordException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (GeneralSecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); + } catch (MessagingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); } } } @@ -189,12 +195,16 @@ public class ViewEmailActivity extends ActionBarActivity implements if (mMessageId != null) { try { mFolder.setNew(mMessageId, false); + mFolder.setRecent(mMessageId, false); } catch (PasswordException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (GeneralSecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); + } catch (MessagingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); } } } diff --git a/src/i2p/bote/android/service/BoteService.java b/src/i2p/bote/android/service/BoteService.java index 5464b03..b6c52c7 100644 --- a/src/i2p/bote/android/service/BoteService.java +++ b/src/i2p/bote/android/service/BoteService.java @@ -5,6 +5,7 @@ import java.security.GeneralSecurityException; import java.util.List; import javax.mail.MessagingException; +import javax.mail.Flags.Flag; import net.i2p.router.Router; import net.i2p.router.RouterContext; @@ -88,20 +89,20 @@ public class BoteService extends Service implements FolderListener { @Override public void elementAdded(String messageId) { - notifyUnread(); + notifyUnread(messageId); } @Override public void elementUpdated() { - notifyUnread(); + // Noop } @Override public void elementRemoved(String messageId) { - notifyUnread(); + // Noop } - private void notifyUnread() { + private void notifyUnread(String newMessageId) { NotificationManager nm = (NotificationManager) getSystemService( Context.NOTIFICATION_SERVICE); @@ -112,6 +113,11 @@ public class BoteService extends Service implements FolderListener { try { EmailFolder inbox = I2PBote.getInstance().getInbox(); + + // Set the new email as \Recent + inbox.setRecent(newMessageId, true); + + // Now display/update notification with all \Recent emails List newEmails = BoteHelper.getRecentEmails(inbox); int numNew = newEmails.size(); switch (numNew) { diff --git a/src/i2p/bote/android/util/BoteHelper.java b/src/i2p/bote/android/util/BoteHelper.java index f365e71..d7eba66 100644 --- a/src/i2p/bote/android/util/BoteHelper.java +++ b/src/i2p/bote/android/util/BoteHelper.java @@ -215,9 +215,7 @@ public class BoteHelper extends GeneralHelper { Iterator iter = emails.iterator(); while (iter.hasNext()) { Email email = iter.next(); - if (email.isSet(Flag.RECENT)) - email.setFlag(Flag.RECENT, false); - else + if (!email.isSet(Flag.RECENT)) iter.remove(); } return emails;