public void copy(Query q, String to) { copy(q, mailbox(to, false)); }
/* */ void copy(Query q, Mailbox to) {
- for(Mailbox.Iterator it=selected().iterator(q);it.next();) to.add(it.cur(), it.flags() | Mailbox.Flag.RECENT); }
+ for(Mailbox.Iterator it=selected().iterator(q);it.next();) to.insert(it.cur(), it.getFlags() | Mailbox.Flag.RECENT); }
public void unselect() { selected = null; }
public void delete(String m0) { delete(mailbox(m0,false)); }
public void delete(Mailbox m) { if (!m.equals(inbox)) m.destroy(false); else throw new Bad("can't delete inbox"); }
public void create(String m) { mailbox(m, true, false); }
public void append(String m,int f,Date a,String b) { try {
- mailbox(m,false).add(Message.newMessage(new Fountain.StringFountain(b)),f|Mailbox.Flag.RECENT);
+ mailbox(m,false).insert(Message.newMessage(new Fountain.StringFountain(b)), f | Mailbox.Flag.RECENT);
} catch (Message.Malformed e) { throw new No(e.getMessage()); } }
public void check() { }
public void noop() { }
Vec.Int vec = new Vec.Int();
for(Mailbox.Iterator it = selected().iterator(q); it.next();) {
vec.addElement(uid ? it.uid() : it.imapNumber());
- it.recent(false);
+ it.setFlag(Mailbox.Flag.RECENT, false);
}
return vec.dump();
}
public void setFlags(Query q, int f, boolean uid, boolean silent) { doFlags(q, f, uid, 0, silent); }
public void addFlags(Query q, int f, boolean uid, boolean silent) { doFlags(q, f, uid, 1, silent); }
public void removeFlags(Query q, int f, boolean uid, boolean silent) { doFlags(q, f, uid, -1, silent); }
-
private void doFlags(Query q, int flags, boolean uid, int style, boolean silent) {
for(Mailbox.Iterator it = selected().iterator(q);it.next();) {
- boolean recent = it.recent();
+ boolean recent = it.getFlag(Mailbox.Flag.RECENT);
try { throw new Exception("flags " + flags); } catch (Exception e) { Log.error(this, e); }
- if (style == -1) it.removeFlags(flags);
- else if (style == 0) it.setFlags(flags);
- else if (style == 1) it.addFlags(flags);
- it.recent(recent);
- if (!silent) client.fetch(it.imapNumber(), it.flags(), -1, null, it.uid());
+ for(int flag : Mailbox.Flag.all)
+ if (style == -1) { if ((flags & flag)!=0) it.setFlag(flag, false); }
+ else if (style == 0) { it.setFlag(flag, ((flags & flag)!=0)); }
+ else if (style == 1) { if ((flags & flag)!=0) it.setFlag(flag, true); }
+ it.setFlag(Mailbox.Flag.RECENT, recent);
+ if (!silent) client.fetch(it.imapNumber(), flags(it), -1, null, it.uid());
}
- }
+ }
+
public void rename(String from0, String to) {
Mailbox from = mailbox(from0, false);
if (from.equals(inbox)) { from.copy(Query.all(), mailbox(to, true)); }
Message message = ((spec & (BODYSTRUCTURE | ENVELOPE | INTERNALDATE | FIELDS | FIELDSNOT | RFC822 |
RFC822TEXT | RFC822SIZE | HEADERNOT | HEADER)) != 0) ? it.cur() : null;
int size = message == null ? 0 : message.getLength();
- client.fetch(it.imapNumber(), it.flags(), size, message, it.uid());
- it.recent(false);
+ client.fetch(it.imapNumber(), flags(it), size, message, it.uid());
+ it.setFlag(Mailbox.Flag.RECENT, false);
}
}
}
+ private static int flags(Mailbox.Iterator it) {
+ int ret = 0;
+ for(int flag : Mailbox.Flag.all)
+ if (it.getFlag(flag))
+ ret |= flag;
+ return ret;
+ }
// Single Session Handler //////////////////////////////////////////////////////////////////////////////
}
static String flags(Mailbox.Iterator it) {
return
- (it.deleted() ? "\\Deleted " : "") +
- (it.seen() ? "\\Seen " : "") +
- (it.flagged() ? "\\Flagged " : "") +
- (it.draft() ? "\\Draft " : "") +
- (it.answered() ? "\\Answered " : "") +
- (it.recent() ? "\\Recent " : "");
+ (it.getFlag(Mailbox.Flag.DELETED) ? "\\Deleted " : "") +
+ (it.getFlag(Mailbox.Flag.SEEN) ? "\\Seen " : "") +
+ (it.getFlag(Mailbox.Flag.FLAGGED) ? "\\Flagged " : "") +
+ (it.getFlag(Mailbox.Flag.DRAFT) ? "\\Draft " : "") +
+ (it.getFlag(Mailbox.Flag.ANSWERED) ? "\\Answered " : "") +
+ (it.getFlag(Mailbox.Flag.RECENT) ? "\\Recent " : "");
}
static String flags(int flags) {
String ret = "(" +