* elmo.el (elmo-folder-list-unreads): Don't use msgdb API.
[elisp/wanderlust.git] / elmo / elmo.el
index 752717d..a4e4793 100644 (file)
@@ -268,13 +268,13 @@ If optional IN-MSGDB is non-nil, retrieve flag information from msgdb.")
   (elmo-msgdb-list-flagged (elmo-folder-msgdb folder) flag))
 
 (luna-define-method elmo-folder-list-unreads ((folder elmo-folder))
-  (elmo-msgdb-list-flagged (elmo-folder-msgdb folder) 'unread))
+  (elmo-folder-list-flagged folder 'unread))
 
 (luna-define-method elmo-folder-list-importants ((folder elmo-folder))
-  (elmo-msgdb-list-flagged (elmo-folder-msgdb folder) 'important))
+  (elmo-folder-list-flagged folder 'important))
 
 (luna-define-method elmo-folder-list-answereds ((folder elmo-folder))
-  (elmo-msgdb-list-flagged (elmo-folder-msgdb folder) 'answered))
+  (elmo-folder-list-flagged folder 'answered))
 
 (luna-define-generic elmo-folder-list-messages-internal (folder &optional
                                                                visible-only)
@@ -1014,6 +1014,7 @@ Return a cons cell of (NUMBER-CROSSPOSTS . NEW-MARK-ALIST).")
        (setq failure nil
              mark (elmo-message-mark src-folder (car numbers))
              flag (cond
+                   ((null mark) nil)
                    ((member mark (elmo-msgdb-answered-marks))
                     'answered)
                    ;;
@@ -1093,8 +1094,7 @@ Return a cons cell of (NUMBER-CROSSPOSTS . NEW-MARK-ALIST).")
       (if (and (not no-delete) succeeds)
          (progn
            (if (and (elmo-folder-delete-messages src-folder succeeds)
-                    (elmo-msgdb-delete-msgs
-                     (elmo-folder-msgdb src-folder) succeeds))
+                    (elmo-folder-detach-messages src-folder succeeds))
                (setq result t)
              (message "move: delete messages from %s failed."
                       (elmo-folder-name-internal src-folder))
@@ -1135,6 +1135,13 @@ If CACHED is t, message is set as cached."
                               (elmo-message-use-cache-p folder number))
     (elmo-folder-set-mark-modified-internal folder t)))
 
+(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))
+
 (luna-define-generic elmo-message-entity (folder key)
   "Return the message-entity structure which matches to the KEY.
 KEY is a number or a string.
@@ -1228,10 +1235,12 @@ FLAG is a symbol which is one of the following:
 'sugar' flag:
   `read'      (set unread flag)")
 
-(defun elmo-message-mark (folder number)
+(luna-define-generic elmo-message-mark (folder number)
   "Get mark of the message.
 FOLDER is the ELMO folder structure.
-NUMBER is a number of the message."
+NUMBER is a number of the message.")
+
+(luna-define-method elmo-message-mark ((folder elmo-folder) number)
   (elmo-msgdb-get-mark (elmo-folder-msgdb folder) number))
 
 (defun elmo-message-field (folder number field)
@@ -1497,8 +1506,8 @@ If update process is interrupted, return nil.")
                (elmo-folder-process-crosspost folder)
                0 ; no updates.
                )
-           (if delete-list (elmo-msgdb-delete-msgs
-                            (elmo-folder-msgdb folder) delete-list))
+           (when delete-list
+             (elmo-folder-detach-messages folder delete-list))
            (when new-list
              (elmo-msgdb-change-mark (elmo-folder-msgdb folder)
                                      elmo-msgdb-new-mark
@@ -1524,6 +1533,13 @@ If update process is interrupted, return nil.")
        (elmo-folder-set-killed-list-internal folder killed-list)
        nil))))
 
+(luna-define-generic elmo-folder-detach-messages (folder numbers)
+  "Remove messages with NUMBERS from MSGDB.")
+
+(luna-define-method elmo-folder-detach-messages ((folder elmo-folder)
+                                                numbers)
+  (elmo-msgdb-delete-msgs (elmo-folder-msgdb folder) numbers))
+
 (luna-define-generic elmo-folder-length (folder)
   "Return number of messages in the FOLDER.")