* wl-summary.el (wl-summary-set-message-modified): No use
[elisp/wanderlust.git] / elmo / elmo.el
index 27751ef..09dc513 100644 (file)
@@ -106,8 +106,6 @@ If a folder name begins with PREFIX, use BACKEND."
                                     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
                                     ))
@@ -205,12 +203,6 @@ Return value is cons cell or list:
 (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.
@@ -308,7 +300,9 @@ Otherwise, all descendent folders are returned.")
 (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.
@@ -496,9 +490,9 @@ Return newly created temporary directory name which contains temporary files.")
 (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))))
@@ -670,8 +664,6 @@ Return a cons cell of (NUMBER-CROSSPOSTS . NEW-FLAG-ALIST).")
        (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))
@@ -1069,7 +1061,8 @@ NUMBERS is a list of message numbers, messages are searched from the list."
            (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))
@@ -1118,11 +1111,8 @@ If CACHED is t, message is set as cached.")
     (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.
@@ -1159,21 +1149,31 @@ ENTITY is the message-entity to get the parent.")
      ,@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.
@@ -1269,7 +1269,7 @@ FIELD is a symbol of the field.")
 (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.
@@ -1475,7 +1475,11 @@ FIELD is a symbol of the field.")
                                       &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
@@ -1550,9 +1554,7 @@ If update process is interrupted, return nil.")
              (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