(defmacro elmo-multi-real-folder-number (folder number)
"Returns a cons cell of real FOLDER and NUMBER."
- (` (cons (nth (-
+ (` (cons (nth (-
(/ (, number)
(elmo-multi-folder-divide-number-internal (, folder)))
1) (elmo-multi-folder-children-internal (, folder)))
(elmo-folder-set-msgdb-internal fld nil)))
(luna-define-method elmo-folder-synchronize ((folder elmo-multi-folder)
- &optional ignore-msgdb
+ &optional
+ disable-killed
+ ignore-msgdb
no-check)
(dolist (fld (elmo-multi-folder-children-internal folder))
- (elmo-folder-synchronize fld ignore-msgdb no-check))
+ (elmo-folder-synchronize fld disable-killed ignore-msgdb no-check))
0)
(luna-define-method elmo-folder-expand-msgdb-path ((folder
(setq cur-number (+ 1 cur-number)))
t))
-(luna-define-method elmo-folder-diff ((folder elmo-multi-folder)
- &optional numbers)
- (elmo-multi-folder-diff folder numbers))
+(luna-define-method elmo-folder-diff ((folder elmo-multi-folder))
+ (elmo-multi-folder-diff folder))
-(defun elmo-multi-folder-diff (folder numbers)
+(defun elmo-multi-folder-diff (folder)
(let ((flds (elmo-multi-folder-children-internal folder))
- (num-list (and numbers (elmo-multi-split-numbers folder numbers)))
- (unsync 0)
- (messages 0)
- diffs)
+ (news 0)
+ (unreads 0)
+ (alls 0)
+ no-unreads diff)
(while flds
- (setq diffs (nconc diffs (list (elmo-folder-diff (car flds)
- (car num-list)))))
+ (setq diff (elmo-folder-diff (car flds)))
+ (cond
+ ((consp (cdr diff)) ; (new unread all)
+ (setq news (+ news (nth 0 diff))
+ unreads (+ unreads (nth 1 diff))
+ alls (+ alls (nth 2 diff))))
+ (t
+ (setq no-unreads t)
+ (setq news (+ news (car diff))
+ alls (+ alls (cdr diff)))))
(setq flds (cdr flds)))
- (while diffs
- (and (car (car diffs))
- (setq unsync (+ unsync (car (car diffs)))))
- (setq messages (+ messages (cdr (car diffs))))
- (setq diffs (cdr diffs)))
- (elmo-folder-set-info-hashtb folder nil messages)
- (cons unsync messages)))
+ (if no-unreads
+ (cons news alls)
+ (list news unreads alls))))
(luna-define-method elmo-folder-list-unreads ((folder elmo-multi-folder))
(let ((cur-number 0)
(while flds
(setq cur-number (+ cur-number 1))
(when numlist
- (setq cur-numlist (car numlist-list))
- (if (null cur-numlist)
- ;; t means filter all.
- (setq cur-numlist t)))
+ (setq cur-numlist (car numlist-list)))
(setq ret-val (append
ret-val
(elmo-list-filter
(elmo-folder-list-flagged child flag in-msgdb)))))
numbers))
+(luna-define-method elmo-folder-set-message-modified ((folder
+ elmo-multi-folder)
+ modified)
+ (dolist (child (elmo-multi-folder-children-internal folder))
+ (elmo-folder-set-message-modified child modified)))
+
(luna-define-method elmo-folder-commit ((folder elmo-multi-folder))
(dolist (child (elmo-multi-folder-children-internal folder))
(elmo-folder-commit child)))