1 package org.columba.mail.shutdown; 19 20 import java.io.ByteArrayInputStream ; 21 import java.io.UnsupportedEncodingException ; 22 import java.util.Enumeration ; 23 24 import org.columba.core.filter.Filter; 25 import org.columba.core.xml.XmlIO; 26 import org.columba.mail.folder.AbstractMessageFolder; 27 import org.columba.mail.folder.IMailFolder; 28 import org.columba.mail.folder.command.MarkMessageCommand; 29 import org.columba.mail.gui.tree.FolderTreeModel; 30 31 public class ClearRecentFlagPlugin implements Runnable { 32 33 private static final String FILTER_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><filter enabled=\"true\"><rules condition=\"matchall\"><criteria criteria=\"is\" type=\"Flags\" pattern=\"Recent\"></criteria></rules></filter>"; 34 35 private static Filter RECENT_FILTER; 36 37 static { 38 try { 39 XmlIO io = new XmlIO(); 40 io.load(new ByteArrayInputStream (FILTER_XML.getBytes("UTF-8"))); 41 42 RECENT_FILTER = new Filter(io.getRoot().getElement(0)); 43 } catch (UnsupportedEncodingException e) { 44 e.printStackTrace(); 46 } 47 48 } 49 50 public void run() { 51 IMailFolder rootFolder = (IMailFolder) FolderTreeModel.getInstance() 52 .getRoot(); 53 clearRecent(rootFolder); 54 } 55 56 protected void clearRecent(IMailFolder parentFolder) { 57 IMailFolder child; 58 59 for (Enumeration e = parentFolder.children(); e.hasMoreElements();) { 60 child = (IMailFolder) e.nextElement(); 61 62 if (child instanceof AbstractMessageFolder) { 63 AbstractMessageFolder folder = (AbstractMessageFolder) child; 64 if (folder.getMessageFolderInfo().getRecent() > 0) { 65 66 try { 67 Object uids[] = folder.searchMessages(RECENT_FILTER); 68 folder.markMessage(uids, 69 MarkMessageCommand.MARK_AS_NOTRECENT); 70 71 folder.save(); 72 } catch (Exception e1) { 73 } 74 } 75 } 76 clearRecent(child); 77 } 78 } 79 80 } 81 | Popular Tags |