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 );
+               }
+       }
+
+
 }


Reply via email to