* elmo-multi.el (elmo-folder-newsgroups): Simplify.
[elisp/wanderlust.git] / elmo / elmo-filter.el
index 1293f4b..2e0e7ec 100644 (file)
       (elmo-folder-set-msgdb-internal (elmo-filter-folder-target-internal
                                       folder) nil)))
 
-(luna-define-method elmo-folder-set-message-modified ((folder
-                                                      elmo-filter-folder)
-                                                     modified)
-  (if (elmo-filter-folder-require-msgdb-internal folder)
-      (elmo-folder-set-message-modified-internal
-       (elmo-filter-folder-target-internal folder) modified)
-    (elmo-folder-set-message-modified-internal folder modified)))
-
 (luna-define-method elmo-folder-commit :around ((folder elmo-filter-folder))
   ;; Save target msgdb if it is used.
   (if (elmo-filter-folder-require-msgdb-internal folder)
    (elmo-replace-string-as-filename (elmo-folder-name-internal folder))
    (expand-file-name "filter" elmo-msgdb-directory)))
 
+(luna-define-method elmo-folder-search-requires-msgdb-p ((folder
+                                                         elmo-filter-folder)
+                                                        condition)
+  (elmo-folder-search-requires-msgdb-p
+   (elmo-filter-folder-target-internal folder) condition))
+
 (luna-define-method elmo-folder-newsgroups ((folder elmo-filter-folder))
   (elmo-folder-newsgroups (elmo-filter-folder-target-internal folder)))
 
 
 (luna-define-method elmo-folder-get-primitive-list ((folder
                                                     elmo-filter-folder))
-  (list (elmo-filter-folder-target-internal folder)))
+  (elmo-folder-get-primitive-list (elmo-filter-folder-target-internal folder)))
 
 (luna-define-method elmo-folder-contains-type ((folder elmo-filter-folder)
                                               type)
   (if (elmo-filter-folder-require-msgdb-internal folder)
       (let* ((target-folder (elmo-filter-folder-target-internal folder))
             (len (length numlist))
-            (msgdb (elmo-folder-msgdb target-folder))
+            (msgdb (progn
+                     (elmo-folder-check target-folder)
+                     (elmo-folder-msgdb target-folder)))
             (new-msgdb (elmo-make-msgdb))
             message-id entity)
        (when (> len elmo-display-progress-threshold)
                             len "Creating msgdb..."))
        (unwind-protect
            (dolist (number numlist)
-             (setq entity (elmo-msgdb-overview-get-entity number msgdb))
+             (setq entity (elmo-msgdb-message-entity msgdb number))
              (when entity
                (elmo-msgdb-append-entity new-msgdb entity
                                          (elmo-msgdb-flags msgdb number)))
 (luna-define-method elmo-folder-search ((folder elmo-filter-folder)
                                        condition &optional numbers)
   ;; search from messages in this folder
-  (elmo-list-filter
-   numbers
-   (elmo-folder-search (elmo-filter-folder-target-internal folder)
-                      condition
-                      (elmo-folder-list-messages folder))))
+  (let ((result (elmo-folder-search
+                (elmo-filter-folder-target-internal folder)
+                condition
+                (elmo-folder-list-messages folder))))
+    (if numbers
+       (elmo-list-filter numbers result)
+      result)))
 
 (luna-define-method elmo-message-use-cache-p ((folder elmo-filter-folder)
                                              number)
   (elmo-message-file-name (elmo-filter-folder-target-internal folder)
                          number))
 
-(luna-define-method elmo-folder-mark-as-read :around ((folder
+(luna-define-method elmo-folder-flag-as-read :around ((folder
                                                       elmo-filter-folder)
                                                      numbers
-                                                     &optional ignore-flag)
-  (elmo-folder-mark-as-read (elmo-filter-folder-target-internal folder)
-                           numbers ignore-flag)
+                                                     &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-unmark-read :around ((folder
+(luna-define-method elmo-folder-unflag-read :around ((folder
                                                      elmo-filter-folder)
                                                     numbers
-                                                    &optional ignore-flag)
-  (elmo-folder-unmark-read (elmo-filter-folder-target-internal folder)
-                          numbers ignore-flag)
+                                                    &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-mark-as-important :around ((folder
+(luna-define-method elmo-folder-flag-as-important :around ((folder
                                                            elmo-filter-folder)
                                                           numbers
                                                           &optional
-                                                          ignore-flag)
-  (elmo-folder-mark-as-important (elmo-filter-folder-target-internal folder)
-                                numbers ignore-flag)
+                                                          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-unmark-important :around ((folder
+(luna-define-method elmo-folder-unflag-important :around ((folder
                                                           elmo-filter-folder)
                                                          numbers
                                                          &optional
-                                                         ignore-flag)
-  (elmo-folder-unmark-important (elmo-filter-folder-target-internal folder)
-                               numbers ignore-flag)
+                                                         is-local)
+  (elmo-folder-unflag-important (elmo-filter-folder-target-internal folder)
+                               numbers is-local)
   (luna-call-next-method))
 
-(luna-define-method elmo-folder-mark-as-answered :around ((folder
+(luna-define-method elmo-folder-flag-as-answered :around ((folder
                                                           elmo-filter-folder)
-                                                         numbers)
-  (elmo-folder-mark-as-answered (elmo-filter-folder-target-internal folder)
-                               numbers)
+                                                         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-unmark-answered :around ((folder
+(luna-define-method elmo-folder-unflag-answered :around ((folder
                                                          elmo-filter-folder)
-                                                        numbers)
-  (elmo-folder-unmark-answered (elmo-filter-folder-target-internal folder)
-                              numbers)
+                                                        numbers
+                                                        &optional
+                                                        is-local)
+  (elmo-folder-unflag-answered (elmo-filter-folder-target-internal folder)
+                              numbers is-local)
   (luna-call-next-method))
 
 (require 'product)