* elmo-localdir.el (elmo-folder-append-buffer): Fix interface.
[elisp/wanderlust.git] / elmo / elmo-filter.el
index b43fd34..d387f8e 100644 (file)
    (elmo-filter-folder-target-internal folder)
    flag number))
 
+(luna-define-method elmo-message-fetch-bodystructure ((folder
+                                                      elmo-filter-folder)
+                                                     number strategy)
+  (elmo-message-fetch-bodystructure
+   (elmo-filter-folder-target-internal folder)
+   number strategy))
+
 (luna-define-method elmo-message-fetch ((folder elmo-filter-folder)
                                        number strategy
                                        &optional section outbuf unseen)
       ;; not available
       t)))
 
-(defsubst elmo-filter-folder-list-unreads (folder)
-  (elmo-list-filter
-   (elmo-folder-list-messages folder nil 'in-msgdb)
-   (elmo-folder-list-unreads
-    (elmo-filter-folder-target-internal folder))))
-
-(luna-define-method elmo-folder-list-unreads :around ((folder
-                                                      elmo-filter-folder))
-  (if (elmo-filter-folder-require-msgdb-internal folder)
-      (elmo-filter-folder-list-unreads folder)
-    (luna-call-next-method)))
-
-(defsubst elmo-filter-folder-list-importants (folder)
-  (elmo-list-filter
-   (elmo-folder-list-messages folder nil 'in-msgdb)
-   (elmo-folder-list-importants
-    (elmo-filter-folder-target-internal folder))))
-
-(luna-define-method elmo-folder-list-importants :around ((folder
-                                                         elmo-filter-folder))
-  (if (elmo-filter-folder-require-msgdb-internal folder)
-      (elmo-filter-folder-list-importants folder)
-    (luna-call-next-method)))
-
 (luna-define-method elmo-folder-list-subfolders ((folder elmo-filter-folder)
                                                 &optional one-level)
   (let* ((target (elmo-filter-folder-target-internal folder))
                   (string= (elmo-filter-value condition) "unread")))
          (setq diff (elmo-folder-diff (elmo-filter-folder-target-internal
                                        folder)))
-         (if (consp diff)
-             (cons (car diff) (car diff))
-           (cons (car diff) (nth 1 diff))))
+         (if (consp (cdr diff))
+             ;; new unread unread
+             (list (car diff) (nth 1 diff) (nth 1 diff))
+           (cons (car diff) (car diff))))
         ((string= "last" (elmo-filter-key condition))
          (luna-call-next-method))
         (t
   (elmo-message-file-name (elmo-filter-folder-target-internal folder)
                          number))
 
-(luna-define-method elmo-folder-flag-as-read :around ((folder
-                                                      elmo-filter-folder)
-                                                     numbers
-                                                     &optional is-local)
-  (elmo-folder-flag-as-read (elmo-filter-folder-target-internal folder)
-                           numbers is-local)
-  (luna-call-next-method))
-
-(luna-define-method elmo-folder-unflag-read :around ((folder
-                                                     elmo-filter-folder)
-                                                    numbers
-                                                    &optional is-local)
-  (elmo-folder-unflag-read (elmo-filter-folder-target-internal folder)
-                          numbers is-local)
-  (luna-call-next-method))
-
-(luna-define-method elmo-folder-flag-as-important :around ((folder
-                                                           elmo-filter-folder)
-                                                          numbers
-                                                          &optional
-                                                          is-local)
-  (elmo-folder-flag-as-important (elmo-filter-folder-target-internal folder)
-                                numbers is-local)
-    (luna-call-next-method))
-
-(luna-define-method elmo-folder-unflag-important :around ((folder
-                                                          elmo-filter-folder)
-                                                         numbers
-                                                         &optional
-                                                         is-local)
-  (elmo-folder-unflag-important (elmo-filter-folder-target-internal folder)
-                               numbers is-local)
-  (luna-call-next-method))
-
-(luna-define-method elmo-folder-flag-as-answered :around ((folder
-                                                          elmo-filter-folder)
-                                                         numbers
-                                                         &optional
-                                                         is-local)
-  (elmo-folder-flag-as-answered (elmo-filter-folder-target-internal folder)
-                               numbers is-local)
-  (luna-call-next-method))
-
-
-(luna-define-method elmo-folder-unflag-answered :around ((folder
-                                                         elmo-filter-folder)
-                                                        numbers
-                                                        &optional
-                                                        is-local)
-  (elmo-folder-unflag-answered (elmo-filter-folder-target-internal folder)
-                              numbers is-local)
-  (luna-call-next-method))
+(luna-define-method elmo-folder-set-flag :before ((folder elmo-filter-folder)
+                                                 numbers
+                                                 flag
+                                                 &optional is-local)
+  (elmo-folder-set-flag (elmo-filter-folder-target-internal folder)
+                       numbers flag is-local))
+
+(luna-define-method elmo-folder-unset-flag :before ((folder elmo-filter-folder)
+                                                   numbers
+                                                   flag
+                                                   &optional is-local)
+  (elmo-folder-unset-flag (elmo-filter-folder-target-internal folder)
+                         numbers flag is-local))
+
+(luna-define-method elmo-message-folder ((folder elmo-filter-folder)
+                                        number)
+  (elmo-message-folder (elmo-filter-folder-target-internal folder) number))
 
 (require 'product)
 (product-provide (provide 'elmo-filter) (require 'elmo-version))