(luna-define-method elmo-folder-exists-p ((folder elmo-net-folder))
(if (elmo-folder-plugged-p folder)
(elmo-folder-send folder 'elmo-folder-exists-p-plugged)
- nil)) ; If unplugged, assume the folder not exists.
+ ;; If unplugged, guess by msgdb.
+ (file-directory-p (elmo-folder-msgdb-path folder))))
(luna-define-method elmo-folder-status ((folder elmo-net-folder))
(if (elmo-folder-plugged-p folder)
(elmo-folder-status-dop folder)
(error "Unplugged")))
+(luna-define-method elmo-folder-next-message-number ((folder elmo-net-folder))
+ (if (elmo-folder-plugged-p folder)
+ (elmo-folder-send folder 'elmo-folder-next-message-number-plugged)
+ (elmo-folder-send folder 'elmo-folder-next-message-number-unplugged)))
+
+(luna-define-method elmo-folder-next-message-number-unplugged
+ ((folder elmo-net-folder))
+ (if elmo-enable-disconnected-operation
+ (elmo-folder-next-message-number-dop folder)
+ (error "Unplugged")))
+
(luna-define-method elmo-folder-list-messages-internal
((folder elmo-net-folder) &optional nohide)
(elmo-net-folder-list-messages-internal folder nohide))
(elmo-delete-if
(lambda (number) (memq number deleting))
;; current number-list.
- (mapcar
- 'car
- (elmo-msgdb-get-number-alist (elmo-folder-msgdb folder))))
+ (elmo-msgdb-list-messages (elmo-folder-msgdb folder)))
;; append appending messages
(mapcar (lambda (x) (* -1 x))
(elmo-dop-spool-folder-list-messages folder))))
t))
-(luna-define-method elmo-folder-list-unreads-internal
- ((folder elmo-net-folder) unread-marks &optional mark-alist)
- (if (and (elmo-folder-plugged-p folder)
- (elmo-folder-use-flag-p folder))
- (elmo-folder-send folder 'elmo-folder-list-unreads-plugged)
- t))
-
-(luna-define-method elmo-folder-list-importants-internal
- ((folder elmo-net-folder) important-mark)
+(luna-define-method elmo-folder-list-flagged-internal ((folder elmo-net-folder)
+ flag)
(if (and (elmo-folder-plugged-p folder)
(elmo-folder-use-flag-p folder))
- (elmo-folder-send folder 'elmo-folder-list-importants-plugged)
+ (elmo-folder-send folder 'elmo-folder-list-flagged-plugged flag)
+ ;; Should consider offline append and removal?
t))
-(luna-define-method elmo-folder-list-unreads-plugged
- ((folder elmo-net-folder))
- t)
-
-(luna-define-method elmo-folder-list-importants-plugged
- ((folder elmo-net-folder))
+(luna-define-method elmo-folder-list-flagged-plugged ((folder elmo-net-folder)
+ flag)
t)
(luna-define-method elmo-folder-delete-messages ((folder elmo-net-folder)
(elmo-folder-delete-messages-dop folder numbers))
(luna-define-method elmo-folder-msgdb-create ((folder elmo-net-folder)
- numbers new-mark
- already-mark seen-mark
- important-mark seen-list)
+ numbers flag-table)
(if (elmo-folder-plugged-p folder)
(elmo-folder-send folder 'elmo-folder-msgdb-create-plugged
- numbers
- new-mark
- already-mark seen-mark
- important-mark seen-list)
+ numbers flag-table)
(elmo-folder-send folder 'elmo-folder-msgdb-create-unplugged
- numbers
- new-mark already-mark seen-mark
- important-mark seen-list)))
+ numbers flag-table)))
(luna-define-method elmo-folder-msgdb-create-unplugged ((folder
elmo-net-folder)
numbers
- new-mark already-mark
- seen-mark
- important-mark
- seen-list)
+ flag-table)
;; XXXX should be appended to already existing msgdb.
(elmo-dop-msgdb
(elmo-folder-msgdb-create (elmo-dop-spool-folder folder)
(mapcar 'abs numbers)
- new-mark already-mark
- seen-mark
- important-mark
- seen-list)))
-
-(luna-define-method elmo-folder-unmark-important ((folder elmo-net-folder)
- numbers)
- (if (elmo-folder-use-flag-p folder)
- (if (elmo-folder-plugged-p folder)
- (elmo-folder-send folder 'elmo-folder-unmark-important-plugged
- numbers)
- (elmo-folder-send folder
- 'elmo-folder-unmark-important-unplugged numbers))
- t))
-
-(luna-define-method elmo-folder-mark-as-important ((folder elmo-net-folder)
- numbers)
- (if (elmo-folder-use-flag-p folder)
- (if (elmo-folder-plugged-p folder)
- (elmo-folder-send folder 'elmo-folder-mark-as-important-plugged
- numbers)
- (elmo-folder-send folder 'elmo-folder-mark-as-important-unplugged
- numbers))
- t))
-
-(luna-define-method elmo-folder-unmark-read ((folder elmo-net-folder)
- numbers)
- (if (elmo-folder-use-flag-p folder)
- (if (elmo-folder-plugged-p folder)
- (elmo-folder-send folder 'elmo-folder-unmark-read-plugged numbers)
- (elmo-folder-send folder 'elmo-folder-unmark-read-unplugged numbers))
- t))
-
-(luna-define-method elmo-folder-mark-as-read ((folder elmo-net-folder)
- numbers)
- (if (elmo-folder-use-flag-p folder)
- (if (elmo-folder-plugged-p folder)
- (elmo-folder-send folder 'elmo-folder-mark-as-read-plugged numbers)
- (elmo-folder-send
- folder 'elmo-folder-mark-as-read-unplugged numbers))
- t))
-
-(luna-define-method elmo-folder-mark-as-read-unplugged ((folder
- elmo-net-folder)
- numbers)
- (elmo-folder-mark-as-read-dop folder numbers))
-
-(luna-define-method elmo-folder-unmark-read-unplugged ((folder elmo-net-folder)
- numbers)
- (elmo-folder-unmark-read-dop folder numbers))
+ flag-table)))
+
+(luna-define-method elmo-folder-set-flag :before ((folder elmo-net-folder)
+ numbers
+ flag
+ &optional is-local)
+ (when (and (not is-local)
+ (elmo-folder-use-flag-p folder))
+ (elmo-folder-send folder
+ (if (elmo-folder-plugged-p folder)
+ 'elmo-folder-set-flag-plugged
+ 'elmo-folder-set-flag-unplugged)
+ numbers
+ flag)))
+
+(luna-define-method elmo-folder-unset-flag :before ((folder elmo-net-folder)
+ numbers
+ flag
+ &optional is-local)
+ (when (and (not is-local)
+ (elmo-folder-use-flag-p folder))
+ (elmo-folder-send folder
+ (if (elmo-folder-plugged-p folder)
+ 'elmo-folder-unset-flag-plugged
+ 'elmo-folder-unset-flag-unplugged)
+ numbers
+ flag)))
-(luna-define-method elmo-folder-mark-as-important-unplugged ((folder
- elmo-net-folder)
- numbers)
- (elmo-folder-mark-as-important-dop folder numbers))
+(luna-define-method elmo-folder-set-flag-unplugged ((folder elmo-net-folder)
+ numbers flag)
+ (elmo-folder-set-flag-dop folder numbers flag))
-(luna-define-method elmo-folder-unmark-important-unplugged ((folder
- elmo-net-folder)
- numbers)
- (elmo-folder-unmark-important-dop folder numbers))
+(luna-define-method elmo-folder-unset-flag-unplugged ((folder elmo-net-folder)
+ numbers flag)
+ (elmo-folder-unset-flag-dop folder numbers flag))
(luna-define-method elmo-message-encache :around ((folder elmo-net-folder)
number &optional read)
(if (elmo-folder-plugged-p folder)
(elmo-folder-send folder 'elmo-folder-check-plugged)))
-(luna-define-method elmo-folder-diff :around ((folder elmo-net-folder)
- &optional numbers)
+(luna-define-method elmo-folder-diff :around ((folder elmo-net-folder))
(if (and (elmo-folder-use-flag-p folder)
(elmo-folder-plugged-p folder))
(elmo-folder-send folder 'elmo-folder-diff-plugged)