(car pair)
(elmo-message-entity (car pair) (cdr pair)) ignore-cache)))
+(luna-define-method elmo-message-number ((folder elmo-multi-folder)
+ message-id)
+ (let ((children (elmo-multi-folder-children-internal folder))
+ match)
+ (while children
+ (when (setq match (elmo-message-number (car children) message-id))
+ (setq children nil))
+ (setq children (cdr children)))
+ match))
+
(luna-define-method elmo-message-entity ((folder elmo-multi-folder) key)
(cond
((numberp key)
(let ((pair (elmo-multi-real-folder-number folder number)))
(elmo-message-field (car pair) (cdr pair) field)))
-(luna-define-method elmo-message-flags ((folder elmo-multi-folder) number
- &optional msgid)
+(luna-define-method elmo-message-flag-available-p ((folder
+ elmo-multi-folder) number
+ flag)
(let ((pair (elmo-multi-real-folder-number folder number)))
- (elmo-message-flags (car pair) (cdr pair) msgid)))
+ (elmo-message-flag-available-p (car pair) (cdr pair) flag)))
+
+(luna-define-method elmo-message-flags ((folder elmo-multi-folder) number)
+ (let ((pair (elmo-multi-real-folder-number folder number)))
+ (elmo-message-flags (car pair) (cdr pair))))
(defun elmo-multi-split-numbers (folder numlist &optional as-is)
(let ((numbers (sort numlist '<))
flag
&optional is-local)
(dolist (pair (elmo-multi-make-folder-numbers-list folder numbers))
- (elmo-folder-set-flag (car pair) (cdr pair) flag is-local)))
+ (elmo-folder-set-flag (car pair) (cdr pair) flag is-local))
+ (elmo-folder-notify-event folder 'flag-changed numbers))
(luna-define-method elmo-folder-unset-flag ((folder elmo-multi-folder)
numbers
flag
&optional is-local)
(dolist (pair (elmo-multi-make-folder-numbers-list folder numbers))
- (elmo-folder-unset-flag (car pair) (cdr pair) flag is-local)))
+ (ignore-errors
+ (elmo-folder-unset-flag (car pair) (cdr pair) flag is-local)))
+ (elmo-folder-notify-event folder 'flag-changed numbers))
(luna-define-method elmo-folder-list-flagged ((folder elmo-multi-folder)
flag
sum))
(luna-define-method elmo-folder-count-flags ((folder elmo-multi-folder))
- (let ((new 0)
- (unreads 0)
- (answered 0)
- flags)
+ (let (flag-alist element)
(dolist (child (elmo-multi-folder-children-internal folder))
- (setq flags (elmo-folder-count-flags child))
- (setq new (+ new (nth 0 flags)))
- (setq unreads (+ unreads (nth 1 flags)))
- (setq answered (+ answered (nth 2 flags))))
- (list new unreads answered)))
+ (dolist (pair (elmo-folder-count-flags child))
+ (if (setq element (assq (car pair) flag-alist))
+ (setcdr element (+ (cdr element) (cdr pair)))
+ (setq flag-alist (cons pair flag-alist)))))
+ flag-alist))
(require 'product)
(product-provide (provide 'elmo-multi) (require 'elmo-version))