diff --git a/apps/susimail/src/src/i2p/susi/webmail/MailCache.java b/apps/susimail/src/src/i2p/susi/webmail/MailCache.java
index 058fda1e8..0c0dd3fc1 100644
--- a/apps/susimail/src/src/i2p/susi/webmail/MailCache.java
+++ b/apps/susimail/src/src/i2p/susi/webmail/MailCache.java
@@ -195,22 +195,44 @@ class MailCache {
if (disk != null) {
if (disk.getMail(mail, true)) {
Debug.debug(Debug.DEBUG, "Loaded header from disk cache: " + uidl);
+ // note that disk loaded the full body if it had it
+ if (mail.hasBody() &&
+ !Boolean.parseBoolean(Config.getProperty(WebMail.CONFIG_LEAVE_ON_SERVER))) {
+ // we already have it, send delete
+ mailbox.queueForDeletion(mail.uidl);
+ }
continue; // found on disk, woo
}
}
POP3Request pr = new POP3Request(mail, true);
fetches.add(pr);
+ } else {
+ if (mail.hasBody() &&
+ !Boolean.parseBoolean(Config.getProperty(WebMail.CONFIG_LEAVE_ON_SERVER))) {
+ // we already have it, send delete
+ mailbox.queueForDeletion(mail.uidl);
+ }
}
} else {
if(!mail.hasBody()) {
if (disk != null) {
if (disk.getMail(mail, false)) {
Debug.debug(Debug.DEBUG, "Loaded body from disk cache: " + uidl);
+ // note that disk loaded the full body if it had it
+ if (!Boolean.parseBoolean(Config.getProperty(WebMail.CONFIG_LEAVE_ON_SERVER))) {
+ // we already have it, send delete
+ mailbox.queueForDeletion(mail.uidl);
+ }
continue; // found on disk, woo
}
}
POP3Request pr = new POP3Request(mail, false);
fetches.add(pr);
+ } else {
+ if (!Boolean.parseBoolean(Config.getProperty(WebMail.CONFIG_LEAVE_ON_SERVER))) {
+ // we already have it, send delete
+ mailbox.queueForDeletion(mail.uidl);
+ }
}
}
}
diff --git a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java
index df029284d..97f429006 100644
--- a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java
+++ b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java
@@ -91,7 +91,10 @@ public class WebMail extends HttpServlet
private static final int STATE_LIST = 2;
private static final int STATE_SHOW = 3;
private static final int STATE_NEW = 4;
+ // TODO
+ private static final int STATE_CONFIG = 5;
+ // TODO generate from servlet name to allow for renaming or multiple instances
private static final String myself = "/susimail/susimail";
/*
@@ -477,14 +480,14 @@ public class WebMail extends HttpServlet
buf.append("\n");
} else {
buf.append("");
- buf.append("
");
+ buf.append("
");
buf.append("\n");
}
if (name.equals(currentName) && currentOrder == Folder.SortOrder.DOWN) {
buf.append("
");
} else {
buf.append("");
- buf.append("
");
+ buf.append("
");
buf.append("");
}
return buf.toString();
@@ -1098,10 +1101,17 @@ public class WebMail extends HttpServlet
*/
private static void processGenericButtons(SessionObject sessionObject, RequestWrapper request)
{
+ // these two buttons are only on the folder view now
if( buttonPressed( request, RELOAD ) ) {
Config.reloadConfiguration();
+ int oldPageSize = sessionObject.folder.getPageSize();
+ int pageSize = Config.getProperty( Folder.PAGESIZE, Folder.DEFAULT_PAGESIZE );
+ if( pageSize != oldPageSize )
+ sessionObject.folder.setPageSize( pageSize );
+ sessionObject.info = _("Configuration reloaded");
}
if( buttonPressed( request, REFRESH ) ) {
+ // TODO how to do a "No new mail" message?
sessionObject.mailbox.refresh();
sessionObject.error += sessionObject.mailbox.lastError();
sessionObject.mailCache.getMail(MailCache.FETCH_HEADER);
@@ -1295,11 +1305,9 @@ public class WebMail extends HttpServlet
/*
* process paging buttons
*/
- String str = request.getParameter( PAGESIZE );
- if( str != null && str.length() > 0 ) {
+ if (buttonPressed(request, PAGESIZE) && !buttonPressed(request, RELOAD)) {
try {
- // limit max to 100 as it makes the startup really slow
- int pageSize = Math.min(100, Math.max(5, Integer.parseInt( str )));
+ int pageSize = Math.max(5, Integer.parseInt(request.getParameter(PAGESIZE)));
int oldPageSize = sessionObject.folder.getPageSize();
if( pageSize != oldPageSize )
sessionObject.folder.setPageSize( pageSize );
@@ -1571,8 +1579,15 @@ public class WebMail extends HttpServlet
// Not only does it slow things down, but a failure causes all our messages to "vanish"
//subtitle = ngettext("1 Message", "{0} Messages", sessionObject.mailbox.getNumMails());
subtitle = ngettext("1 Message", "{0} Messages", sessionObject.folder.getSize());
- } else if( sessionObject.state == STATE_SHOW )
- subtitle = _("Show Message");
+ } else if( sessionObject.state == STATE_SHOW ) {
+ Mail mail = sessionObject.mailCache.getMail(sessionObject.showUIDL, MailCache.FETCH_HEADER);
+ if (mail != null && mail.shortSubject != null)
+ subtitle = mail.shortSubject;
+ else
+ subtitle = _("Show Message");
+ } else if( sessionObject.state == STATE_NEW ) {
+ subtitle = _("New Message");
+ }
response.setContentType( "text/html" );
@@ -1987,20 +2002,8 @@ public class WebMail extends HttpServlet
out.println(button( RELOAD, _("Reload Config") ) + spacer);
out.println(button( LOGOUT, _("Logout") ));
- if (sessionObject.folder.getPages() > 1) {
- out.println(
- "
" +
- ( sessionObject.folder.isFirstPage() ?
- button2( FIRSTPAGE, _("First") ) + " " + button2( PREVPAGE, _("Previous") ) :
- button( FIRSTPAGE, _("First") ) + " " + button( PREVPAGE, _("Previous") ) ) +
- " " +
- _("Page {0} of {1}", sessionObject.folder.getCurrentPage(), sessionObject.folder.getPages()) +
- " " +
- ( sessionObject.folder.isLastPage() ?
- button2( NEXTPAGE, _("Next") ) + " " + button2( LASTPAGE, _("Last") ) :
- button( NEXTPAGE, _("Next") ) + " " + button( LASTPAGE, _("Last") ) )
- );
- }
+ if (sessionObject.folder.getPages() > 1)
+ showPageButtons(out, sessionObject.folder);
String curSort = sessionObject.folder.getCurrentSortBy();
Folder.SortOrder curOrder = sessionObject.folder.getCurrentSortingDirection();
@@ -2050,11 +2053,11 @@ public class WebMail extends HttpServlet
// ", clear=" + sessionObject.clear );
out.println( "