;;;
;; Internal use only (obsolete interface)
;;
-(defsubst elmo-msgdb-overview-entity-get-id (entity)
+(defsubst elmo-msgdb-overview-entity-get-id-internal (entity)
(and entity (car entity)))
-(defsubst elmo-msgdb-overview-entity-get-number (entity)
+(defsubst elmo-msgdb-overview-entity-get-number-internal (entity)
(and entity (aref (cdr entity) 0)))
-(defsubst elmo-msgdb-overview-entity-set-number (entity number)
- (and entity (aset (cdr entity) 0 number))
- entity)
-
-(defsubst elmo-msgdb-overview-entity-get-references (entity)
- (and entity (aref (cdr entity) 1)))
-
-(defsubst elmo-msgdb-overview-entity-set-references (entity references)
- (and entity (aset (cdr entity) 1 references))
- entity)
-
-(defsubst elmo-msgdb-overview-entity-get-from-no-decode (entity)
- (and entity (aref (cdr entity) 2)))
-
-(defsubst elmo-msgdb-overview-entity-get-from (entity)
- (and entity
- (aref (cdr entity) 2)
- (elmo-msgdb-get-decoded-cache (aref (cdr entity) 2))))
-
-(defsubst elmo-msgdb-overview-entity-set-from (entity from)
- (and entity (aset (cdr entity) 2 from))
- entity)
-
-(defsubst elmo-msgdb-overview-entity-get-subject (entity)
- (and entity
- (aref (cdr entity) 3)
- (elmo-msgdb-get-decoded-cache (aref (cdr entity) 3))))
-
-(defsubst elmo-msgdb-overview-entity-get-subject-no-decode (entity)
- (and entity (aref (cdr entity) 3)))
-
-(defsubst elmo-msgdb-overview-entity-set-subject (entity subject)
- (and entity (aset (cdr entity) 3 subject))
- entity)
-
-(defsubst elmo-msgdb-overview-entity-get-date (entity)
- (and entity (aref (cdr entity) 4)))
-
-(defsubst elmo-msgdb-overview-entity-set-date (entity date)
- (and entity (aset (cdr entity) 4 date))
- entity)
-
-(defsubst elmo-msgdb-overview-entity-get-to (entity)
- (and entity (aref (cdr entity) 5)))
-
-(defsubst elmo-msgdb-overview-entity-get-cc (entity)
- (and entity (aref (cdr entity) 6)))
-
-(defsubst elmo-msgdb-overview-entity-get-size (entity)
- (and entity (aref (cdr entity) 7)))
-
-(defsubst elmo-msgdb-overview-entity-set-size (entity size)
- (and entity (aset (cdr entity) 7 size))
- entity)
-
-(defsubst elmo-msgdb-overview-entity-get-extra (entity)
- (and entity (aref (cdr entity) 8)))
-
-(defsubst elmo-msgdb-overview-entity-set-extra (entity extra)
- (and entity (aset (cdr entity) 8 extra))
- entity)
-
-(defsubst elmo-msgdb-overview-entity-get-extra-field (entity field-name)
- (let ((field-name (downcase field-name))
- (extra (and entity (aref (cdr entity) 8))))
- (and extra
- (cdr (assoc field-name extra)))))
-
-(defsubst elmo-msgdb-overview-entity-set-extra-field (entity field-name value)
- (let ((field-name (downcase field-name))
- (extras (and entity (aref (cdr entity) 8)))
- extra)
- (if (setq extra (assoc field-name extras))
- (setcdr extra value)
- (elmo-msgdb-overview-entity-set-extra
- entity
- (cons (cons field-name value) extras)))))
-
;;; load & save
(defun elmo-msgdb-number-load (dir)
(elmo-object-load
;; key is message-id
(if (elmo-get-hash-val (caar overview) ehash) ; duplicated.
(setq duplicates (cons
- (elmo-msgdb-overview-entity-get-number
+ (elmo-msgdb-overview-entity-get-number-internal
(car overview))
duplicates)))
(if (caar overview)
;; key is number
(elmo-set-hash-val
(format "#%d"
- (elmo-msgdb-overview-entity-get-number (car overview)))
+ (elmo-msgdb-overview-entity-get-number-internal
+ (car overview)))
(car overview) ehash)
(setq overview (cdr overview)))
(while mark-alist
(mhash (elmo-msgdb-get-mark-hashtb msgdb))
number)
(when (and entity ehash)
- (and (setq number (elmo-msgdb-overview-entity-get-number entity))
+ (and (setq number (elmo-msgdb-overview-entity-get-number-internal
+ entity))
(elmo-clear-hash-val (format "#%d" number) ehash))
(and (car entity) ;; message-id
(elmo-clear-hash-val (car entity) ehash)))
(when (and entity mhash)
- (and (setq number (elmo-msgdb-overview-entity-get-number entity))
+ (and (setq number (elmo-msgdb-overview-entity-get-number-internal
+ entity))
(elmo-clear-hash-val (format "#%d" number) mhash)))))
;;; Implement
(elmo-msgdb-set-flag msgdb number 'unread))
(uncached
(elmo-msgdb-set-flag msgdb number 'cached))
+ (all
+ (elmo-msgdb-set-mark msgdb number nil))
(t
(let* ((cur-mark (elmo-msgdb-get-mark msgdb number))
(flags (modb-legacy-mark-to-flags cur-mark))
(unless (string= new-mark cur-mark)
(elmo-msgdb-set-mark msgdb number new-mark))))))
+(luna-define-method elmo-msgdb-flag-count ((msgdb modb-legacy))
+ (let ((new 0)
+ (unread 0)
+ (answered 0))
+ (dolist (elem (elmo-msgdb-get-mark-alist msgdb))
+ (cond
+ ((string= (cadr elem) modb-legacy-new-mark)
+ (incf new)
+ (incf unread))
+ ((member (cadr elem) (modb-legacy-unread-marks))
+ (incf unread))
+ ((member (cadr elem) (modb-legacy-answered-marks))
+ (incf answered))))
+ (list (cons 'new new)
+ (cons 'unread unread)
+ (cons 'answered answered))))
+
(luna-define-method elmo-msgdb-list-messages ((msgdb modb-legacy))
- (mapcar 'elmo-msgdb-overview-entity-get-number
+ (mapcar 'elmo-msgdb-overview-entity-get-number-internal
(elmo-msgdb-get-overview msgdb)))
(luna-define-method elmo-msgdb-list-flagged ((msgdb modb-legacy) flag)
(luna-define-method elmo-msgdb-append-entity ((msgdb modb-legacy)
entity &optional flags)
(when entity
- (let ((number (elmo-msgdb-overview-entity-get-number entity))
- (message-id (elmo-msgdb-overview-entity-get-id entity))
- mark)
+ (let ((number (elmo-msgdb-overview-entity-get-number-internal entity))
+ (message-id (elmo-msgdb-overview-entity-get-id-internal entity))
+ mark cell)
(elmo-msgdb-set-overview
msgdb
(nconc (elmo-msgdb-get-overview msgdb)
(list (cons number message-id))))
(modb-generic-set-message-modified-internal msgdb t)
(when (setq mark (modb-legacy-flags-to-mark flags))
+ (setq cell (list number mark))
(elmo-msgdb-set-mark-alist
msgdb
- (nconc (elmo-msgdb-get-mark-alist msgdb)
- (list (list number mark))))
+ (nconc (elmo-msgdb-get-mark-alist msgdb) (list cell)))
(modb-generic-set-flag-modified-internal msgdb t))
(elmo-msgdb-make-index
msgdb
(list entity)
- (list (list number mark))))))
+ (and cell (list cell))))))
(luna-define-method elmo-msgdb-delete-messages ((msgdb modb-legacy)
numbers)
msgdb))
(luna-define-method elmo-msgdb-message-entity ((msgdb modb-legacy) key)
- (elmo-get-hash-val
- (cond ((stringp key) key)
- ((numberp key) (format "#%d" key)))
- (elmo-msgdb-get-entity-hashtb msgdb)))
+ (when key
+ (elmo-get-hash-val
+ (cond ((stringp key) key)
+ ((numberp key) (format "#%d" key)))
+ (elmo-msgdb-get-entity-hashtb msgdb))))
(require 'product)
(product-provide (provide 'modb-legacy) (require 'elmo-version))