diff --git a/apps/susimail/src/src/i2p/susi/webmail/MailCache.java b/apps/susimail/src/src/i2p/susi/webmail/MailCache.java index 69be0d0b59d888dbb4c33e33804b4f74baba4cdc..1d21ad0578e709a1e9c9fb118fd354e329c3242f 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/MailCache.java +++ b/apps/susimail/src/src/i2p/susi/webmail/MailCache.java @@ -46,6 +46,8 @@ import java.util.Map; import java.util.Set; import net.i2p.I2PAppContext; +import net.i2p.app.ClientAppManager; +import net.i2p.app.NotificationService; import net.i2p.util.FileUtil; import net.i2p.util.I2PAppThread; import net.i2p.util.Log; @@ -492,16 +494,25 @@ class MailCache { List<FetchRequest> bar = foo; mailbox.getBodies(bar); // Process results + int newMail = 0; + String additionalMsg = null; // info on first new message for (POP3Request pr : fetches) { if (pr.getSuccess()) { + boolean setAdditional = false; Mail mail = pr.mail; - if (!mail.hasHeader()) + if (!mail.hasHeader()) { mail.setNew(true); + if (newMail == 0) + setAdditional = true; + newMail++; + } if (pr.getHeaderOnly()) { mail.setHeader(pr.getBuffer()); } else { mail.setBody(pr.getBuffer()); } + if (setAdditional) + additionalMsg = "\n\n" + mail.sender + '\n' + mail.subject; rv = true; if (disk.saveMail(mail) && mail.hasBody() && !Boolean.parseBoolean(Config.getProperty(WebMail.CONFIG_LEAVE_ON_SERVER))) { @@ -509,6 +520,19 @@ class MailCache { } } } + if (newMail > 0) { + // DTG popup + ClientAppManager cmgr = _context.clientAppManager(); + if (cmgr != null) { + NotificationService ns = (NotificationService) cmgr.getRegisteredApp("desktopgui"); + if (ns != null) { + String msg = ngettext("{0} new message", "{0} new messages", newMail); + if (newMail == 1 && additionalMsg != null) + msg += additionalMsg; + ns.notify("SusiMail", null, Log.INFO, _t("Email"), msg, "/susimail/"); + } + } + } } return rv; } @@ -597,4 +621,14 @@ class MailCache { return success; } } + + /** translate */ + private static String _t(String s) { + return Messages.getString(s); + } + + /** translate */ + private static String ngettext(String s, String p, int n) { + return Messages.getString(n, s, p); + } }