msgdb ; msgdb (may be nil).
killed-list ; killed list.
persistent ; non-nil if persistent.
- message-modified ; message is modified.
- flag-modified ; flag is modified.
process-duplicates ; read or hide
biff ; folder for biff
))
(luna-define-generic elmo-folder-reserve-status-p (folder)
"If non-nil, the folder should not close folder after `elmo-folder-status'.")
-(luna-define-generic elmo-folder-set-message-modified (folder modified)
- "Set FOLDER as modified.")
-(luna-define-method elmo-folder-set-message-modified ((folder elmo-folder)
- modified)
- (elmo-folder-set-message-modified-internal folder modified))
-
(luna-define-generic elmo-folder-list-messages (folder &optional visible-only
in-msgdb)
"Return a list of message numbers contained in FOLDER.
(luna-define-generic elmo-folder-delete-messages (folder numbers)
"Delete messages.
FOLDER is the ELMO folder structure.
-NUMBERS is a list of message numbers to be deleted.")
+NUMBERS is a list of message numbers to be deleted.
+It is not recommended to use this function other than internal use.
+Use `elmo-folder-move-messages' with dst-folder 'null instead.")
(luna-define-generic elmo-folder-search (folder condition &optional numbers)
"Search and return list of message numbers.
(luna-define-method elmo-find-fetch-strategy
((folder elmo-folder) entity &optional ignore-cache)
(let (cache-file size message-id number)
- (setq size (elmo-msgdb-overview-entity-get-size entity))
- (setq message-id (elmo-msgdb-overview-entity-get-id entity))
- (setq number (elmo-msgdb-overview-entity-get-number entity))
+ (setq size (elmo-message-entity-field entity 'size))
+ (setq message-id (elmo-message-entity-field entity 'message-id))
+ (setq number (elmo-message-entity-number entity))
(setq cache-file (elmo-file-cache-get message-id))
(setq ignore-cache (or ignore-cache
(null (elmo-message-use-cache-p folder number))))
(elmo-msgdb-killed-list-save
(elmo-folder-msgdb-path folder)
(elmo-folder-killed-list-internal folder)))
- (elmo-folder-set-message-modified folder nil)
- (elmo-folder-set-flag-modified-internal folder nil)
(elmo-msgdb-save msgdb))))
(luna-define-method elmo-folder-close-internal ((folder elmo-folder))
(if (and (elmo-folder-delete-messages src-folder succeeds)
(elmo-folder-detach-messages src-folder succeeds))
(progn
- (elmo-global-flag-detach-messages src-folder succeeds)
+ (elmo-global-flag-detach-messages
+ src-folder succeeds (eq dst-folder 'null))
(setq result t))
(message "move: delete messages from %s failed."
(elmo-folder-name-internal src-folder))
(elmo-msgdb-unset-flag (elmo-folder-msgdb folder) number 'cached)))
(defun elmo-message-copy-entity (entity)
- ;;
- (elmo-msgdb-copy-overview-entity entity))
-
-(defun elmo-message-entity-set-number (entity number)
- (elmo-msgdb-overview-entity-set-number entity number))
+ (elmo-msgdb-copy-message-entity (elmo-message-entity-handler entity)
+ entity))
(luna-define-generic elmo-message-entity (folder key)
"Return the message-entity structure which matches to the KEY.
,@form))
(defmacro elmo-message-entity-number (entity)
- `(elmo-msgdb-overview-entity-get-number ,entity))
+ `(elmo-msgdb-message-entity-number (elmo-message-entity-handler ,entity)
+ ,entity))
+
+(defmacro elmo-message-entity-set-number (entity number)
+ `(elmo-msgdb-message-entity-set-number (elmo-message-entity-handler ,entity)
+ ,entity
+ ,number))
(defun elmo-message-entity-field (entity field &optional decode)
"Get message entity field value.
ENTITY is the message entity structure obtained by `elmo-message-entity'.
FIELD is the symbol of the field name.
if optional DECODE is non-nil, returned value is decoded."
- (elmo-msgdb-message-entity-field entity field decode))
+ (elmo-msgdb-message-entity-field
+ (elmo-message-entity-handler entity)
+ entity field decode))
(defun elmo-message-entity-set-field (entity field value)
"Set message entity field value.
ENTITY is the message entity structure.
FIELD is the symbol of the field name.
VALUE is the field value (raw)."
- (elmo-msgdb-message-entity-set-field entity field value))
+ (elmo-msgdb-message-entity-set-field
+ (elmo-message-entity-handler entity)
+ entity field value))
(luna-define-generic elmo-folder-count-flags (folder)
"Count flagged message number in the msgdb of the FOLDER.
(luna-define-method elmo-message-field ((folder elmo-folder) number field)
(when (zerop (elmo-folder-length folder))
(error "Cannot treat this folder correctly."))
- (elmo-msgdb-get-field (elmo-folder-msgdb folder) number field))
+ (elmo-message-entity-field (elmo-message-entity folder number) field))
(luna-define-method elmo-message-use-cache-p ((folder elmo-folder) number)
nil) ; default is not use cache.
&optional keep-killed)
(unless keep-killed
(elmo-folder-set-killed-list-internal folder nil))
- (elmo-msgdb-clear (elmo-folder-msgdb folder)))
+ (if (eq elmo-msgdb-convert-type 'sync)
+ (elmo-folder-set-msgdb-internal
+ folder
+ (elmo-make-msgdb (elmo-folder-msgdb-path folder)))
+ (elmo-msgdb-clear (elmo-folder-msgdb folder))))
(luna-define-generic elmo-folder-synchronize (folder
&optional
(setq crossed (elmo-folder-append-msgdb folder new-msgdb))
;; process crosspost.
;; Return a cons cell of (NUMBER-CROSSPOSTS . NEW-FLAG-ALIST).
- (elmo-folder-process-crosspost folder)
- (elmo-folder-set-message-modified folder t)
- (elmo-folder-set-flag-modified-internal folder t))
+ (elmo-folder-process-crosspost folder))
;; return value.
(or crossed 0)))
(quit