Author: alexlehm Date: 2008-01-10 17:44:24 +0000 (Thu, 10 Jan 2008) New Revision: 16995
Modified: trunk/apps/Freemail/src/freemail/MessageBank.java Log: 0001980: mailbox uid list is sorted alphabetically (https://bugs.freenetproject.org/view.php?id=1980) sort the mail messages by number instead of alphabetically (i.e. 1,..,9,10,... instead of 1,10,2,...) to avoid confusing Thunderbird this also filters out filenames that do not match the format number,XXX or number Modified: trunk/apps/Freemail/src/freemail/MessageBank.java =================================================================== --- trunk/apps/Freemail/src/freemail/MessageBank.java 2008-01-10 17:03:10 UTC (rev 16994) +++ trunk/apps/Freemail/src/freemail/MessageBank.java 2008-01-10 17:44:24 UTC (rev 16995) @@ -32,6 +32,8 @@ import java.util.SortedMap; import java.util.Vector; import java.util.Enumeration; +import java.util.Comparator; +import java.util.Arrays; public class MessageBank { private static final String MESSAGES_DIR = "inbox"; @@ -129,6 +131,8 @@ public MailMessage[] listMessagesArray() { File[] files = this.dir.listFiles(new MessageFileNameFilter()); + + Arrays.sort(files, new UIDComparator()); MailMessage[] msgs = new MailMessage[files.length]; @@ -243,7 +247,20 @@ private class MessageFileNameFilter implements FilenameFilter { public boolean accept(File dir, String name) { if (name.startsWith(".")) return false; + if (!name.matches("[0-9]+(,.*)?")) return false; return true; } } + + // compare to filenames by number leading up to "," + private class UIDComparator implements Comparator { + public final int compare ( Object a, Object b ) { + int ia=Integer.parseInt(((File)a).getName().split(",",2)[0]); + int ib=Integer.parseInt(((File)b).getName().split(",",2)[0]); + + return( ia-ib ); + } + } + + }
