1 package org.columba.mail.folder.imap; 2 3 import org.columba.api.command.ICommandReference; 4 import org.columba.api.command.IWorkerStatusController; 5 import org.columba.core.command.Command; 6 import org.columba.core.command.CommandProcessor; 7 import org.columba.mail.command.IMailFolderCommandReference; 8 import org.columba.mail.command.MailFolderCommandReference; 9 10 public class FetchMessagesCommand extends Command { 11 12 private int newMessages; 13 private int fetchedMessages; 14 private int offset; 15 16 public FetchMessagesCommand(ICommandReference reference,int newMessages, int offset, int fetchedMessages) { 17 super(reference); 18 19 this.newMessages = newMessages; 20 this.fetchedMessages = fetchedMessages; 21 this.offset = offset; 22 } 23 24 public void execute(IWorkerStatusController worker) throws Exception { 25 IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); 27 28 IMAPFolder imapFolder = (IMAPFolder) r.getSourceFolder(); 29 30 worker.setProgressBarMaximum(newMessages); 31 worker.setProgressBarValue(fetchedMessages); 32 33 int fetched = imapFolder.fetchNewMessages(offset + fetchedMessages).size(); 34 35 fetchedMessages += fetched; 36 worker.setProgressBarValue(fetchedMessages); 37 38 if( worker.cancelled()) { 39 return; 40 } 41 42 if(fetched > 0 && fetchedMessages < newMessages) { 43 CommandProcessor.getInstance().addOp( 44 new FetchMessagesCommand( 45 new MailFolderCommandReference(imapFolder), 46 newMessages, offset, fetchedMessages)); 47 } else { 48 imapFolder.fetchDone(); 50 51 } 52 } 53 54 } 55 | Popular Tags |