Replace deprecated time-stamp-hh:mm:ss by format-time-string
[elisp/wanderlust.git] / elmo / elmo-sendlog.el
index 3cf0bc5..ef62fa9 100644 (file)
@@ -37,7 +37,8 @@
 
 ;;; ELMO sendlog folder
 (eval-and-compile
-  (luna-define-class elmo-sendlog-folder (elmo-map-folder) (dir-name directory))
+  (luna-define-class elmo-sendlog-folder (elmo-map-folder elmo-file-tag)
+                    (dir-name directory))
   (luna-define-internal-accessors 'elmo-sendlog-folder))
 
 (luna-define-method elmo-folder-initialize ((folder elmo-sendlog-folder)
        result)
     (if (not (file-readable-p filename))
        nil
-      (elmo-set-work-buf
-       (as-binary-input-file
-       (insert-file-contents filename))
-       (goto-char (point-min))
-       (catch 'done
-        (while t
-          (re-search-forward "id=\\([^@]+@[^@]+\\)$" (point-at-eol) t)
-          (setq result (append result (list (match-string 1))))
-          (if (eq (1+ (point-at-eol)) (point-max))
-              (throw 'done nil)
-            (beginning-of-line 2))))))
+      (with-temp-buffer
+       (as-binary-input-file
+        (insert-file-contents filename))
+       (goto-char (point-min))
+       (catch 'done
+         (while t
+           (re-search-forward "id=\\([^@]+@[^@]+\\)$" (point-at-eol) t)
+           (setq result (append result (list (match-string 1))))
+           (if (eq (1+ (point-at-eol)) (point-max))
+               (throw 'done nil)
+             (beginning-of-line 2))))))
     result))
 
 (luna-define-method elmo-folder-message-file-p ((folder elmo-sendlog-folder))
    (elmo-map-message-location folder number)))
 
 (luna-define-method elmo-folder-msgdb-create ((folder elmo-sendlog-folder)
-                                             numbers new-mark
-                                             already-mark seen-mark
-                                             important-mark
-                                             seen-list)
-  (let ((i 0)
-       (len (length numbers))
-       overview number-alist mark-alist entity message-id
-       num mark)
-    (message "Creating msgdb...")
-    (while numbers
-      (setq entity
-           (elmo-msgdb-create-overview-entity-from-file
-            (car numbers) (elmo-message-file-name folder (car numbers))))
-      (if (null entity)
-         (elmo-folder-set-killed-list-internal
-          folder
-          (nconc
-           (elmo-folder-killed-list-internal folder)
-           (list (car numbers))))
-       (setq num (elmo-msgdb-overview-entity-get-number entity))
-       (setq overview
-             (elmo-msgdb-append-element
-              overview entity))
-       (setq message-id (elmo-msgdb-overview-entity-get-id entity))
-       (setq number-alist
-             (elmo-msgdb-number-add number-alist
-                                    num
-                                    message-id))
-       (if (setq mark (or (elmo-msgdb-global-mark-get message-id)
-                          (if (member message-id seen-list) nil new-mark)))
-           (setq mark-alist
-                 (elmo-msgdb-mark-append
-                  mark-alist
-                  num mark)))
-       (when (> len elmo-display-progress-threshold)
-         (setq i (1+ i))
-         (elmo-display-progress
-          'elmo-sendlog-folder-msgdb-create "Creating msgdb..."
-          (/ (* i 100) len))))
-      (setq numbers (cdr numbers)))
-    (message "Creating msgdb...done")
-    (list overview number-alist mark-alist)))
-
-(luna-define-method elmo-message-fetch-with-cache-process
-  ((folder elmo-sendlog-folder) number strategy &optional section unseen)
+                                             numbers flag-table)
+  (let ((new-msgdb (elmo-make-msgdb))
+       entity message-id flags)
+    (elmo-with-progress-display (elmo-folder-msgdb-create (length numbers))
+       "Creating msgdb"
+      (dolist (number numbers)
+       (setq entity
+             (elmo-msgdb-create-message-entity-from-file
+              (elmo-msgdb-message-entity-handler new-msgdb) number
+              (elmo-message-file-name folder number)))
+       (if (null entity)
+           (elmo-folder-set-killed-list-internal
+            folder
+            (nconc
+             (elmo-folder-killed-list-internal folder)
+             (list number)))
+         (setq message-id (elmo-message-entity-field entity 'message-id)
+               flags (elmo-flag-table-get flag-table message-id))
+         (elmo-global-flags-set flags folder number message-id)
+         (elmo-msgdb-append-entity new-msgdb entity flags))
+       (elmo-progress-notify 'elmo-folder-msgdb-create)))
+    new-msgdb))
+
+(luna-define-method elmo-message-fetch
+  ((folder elmo-sendlog-folder) number strategy &optional unseen section)
   ;; disbable cache process
-  (elmo-message-fetch-internal folder number strategy section unseen))
+  (erase-buffer)
+  (when (elmo-message-fetch-internal folder number strategy section unseen)
+    (when (and (not unseen)
+              (elmo-message-flagged-p folder number 'unread))
+      (elmo-message-unset-flag folder number 'unread))
+    t))
 
 (luna-define-method elmo-map-message-fetch ((folder elmo-sendlog-folder)
                                            location strategy
 
 (luna-define-method elmo-folder-delete-messages ((folder elmo-sendlog-folder)
                                                 numbers)
-  (let ((killed-list (elmo-folder-killed-list-internal folder)))
-    (dolist (number numbers)
-      (setq killed-list
-           (elmo-msgdb-set-as-killed killed-list number)))
-    (elmo-folder-set-killed-list-internal folder killed-list))
+  (elmo-folder-kill-messages folder numbers)
   t)
 
 (luna-define-method elmo-message-file-p ((folder elmo-sendlog-folder) number)
   t)
 
-;;; To override elmo-map-folder methods.
-(luna-define-method elmo-folder-list-unreads-internal
-  ((folder elmo-sendlog-folder) unread-marks &optional mark-alist)
-  t)
-
-(luna-define-method elmo-folder-unmark-important ((folder elmo-sendlog-folder)
-                                                 numbers)
-  t)
-
-(luna-define-method elmo-folder-mark-as-important ((folder elmo-sendlog-folder)
-                                                  numbers)
-  t)
-
-(luna-define-method elmo-folder-unmark-read ((folder elmo-sendlog-folder)
-                                            numbers)
-  t)
-
-(luna-define-method elmo-folder-mark-as-read ((folder elmo-sendlog-folder)
-                                             numbers)
-  t)
+(luna-define-method elmo-folder-have-subfolder-p ((folder elmo-sendlog-folder))
+  nil)
 
 (require 'product)
 (product-provide (provide 'elmo-sendlog) (require 'elmo-version))