(elmo-network-authenticate-session session)
(elmo-network-setup-session session)))
(error
+ (when (eq (car error) 'elmo-open-error)
+ (elmo-set-plugged nil server port
+ (elmo-network-stream-type-symbol stream-type)
+ (current-time))
+ (message "Auto plugged off at %s:%d :%s" server port (cadr error))
+ (sit-for 1))
(when (eq (car error) 'elmo-authenticate-error)
(elmo-remove-passwd (elmo-network-session-password-key session)))
(elmo-network-close-session session)
(append (elmo-net-port-info folder)
(list nil nil (quote (elmo-net-port-label folder)) add))))
+(luna-define-method elmo-folder-create ((folder elmo-net-folder))
+ (if (elmo-folder-plugged-p folder)
+ (elmo-folder-send folder 'elmo-folder-create-plugged)
+ (elmo-folder-send folder 'elmo-folder-create-unplugged)))
+
+(luna-define-method elmo-folder-create-unplugged ((folder elmo-net-folder))
+ (if elmo-enable-disconnected-operation
+ (elmo-folder-create-dop folder)
+ (error "Unplugged")))
+
(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)
- t)) ; If unplugged, assume the folder 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)
(luna-define-method elmo-folder-list-messages-plugged
((folder elmo-net-folder))
- t)
+ nil)
;; Should consider offline append and removal.
(luna-define-method elmo-folder-list-messages-unplugged ((folder
;; append appending messages
(mapcar (lambda (x) (* -1 x))
(elmo-dop-spool-folder-list-messages folder))))
- (error "Unplugged")))
+ t))
-(luna-define-method elmo-folder-list-unreads-internal
- ((folder elmo-net-folder) unread-marks &optional mark-alist)
+(luna-define-method elmo-folder-list-unreads :around ((folder
+ elmo-net-folder))
(if (and (elmo-folder-plugged-p folder)
(elmo-folder-use-flag-p folder))
(elmo-folder-send folder 'elmo-folder-list-unreads-plugged)
- t))
+ (luna-call-next-method)))
-(luna-define-method elmo-folder-list-importants-internal
- ((folder elmo-net-folder) important-mark)
+(luna-define-method elmo-folder-list-importants :around ((folder
+ elmo-net-folder))
(if (and (elmo-folder-plugged-p folder)
(elmo-folder-use-flag-p folder))
(elmo-folder-send folder 'elmo-folder-list-importants-plugged)
- t))
+ (luna-call-next-method)))
+
+(luna-define-method elmo-folder-list-answereds :around ((folder
+ elmo-net-folder))
+ (if (and (elmo-folder-plugged-p folder)
+ (elmo-folder-use-flag-p folder))
+ (elmo-folder-send folder 'elmo-folder-list-answereds-plugged)
+ (luna-call-next-method)))
(luna-define-method elmo-folder-list-unreads-plugged
((folder elmo-net-folder))
((folder elmo-net-folder))
t)
+(luna-define-method elmo-folder-list-answereds-plugged
+ ((folder elmo-net-folder))
+ t)
+
(luna-define-method elmo-folder-delete-messages ((folder elmo-net-folder)
numbers)
(if (elmo-folder-plugged-p 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))
+ flag-table)))
-(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-unmark-important :before ((folder
+ elmo-net-folder)
+ numbers
+ &optional
+ ignore-flag)
+ (when (and (elmo-folder-use-flag-p folder)
+ (not ignore-flag))
+ (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))))
+
+(luna-define-method elmo-folder-mark-as-important :before ((folder
+ elmo-net-folder)
+ numbers
+ &optional
+ ignore-flag)
+ (when (and (elmo-folder-use-flag-p folder)
+ (not ignore-flag))
+ (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))))
+
+(luna-define-method elmo-folder-unmark-read :before ((folder elmo-net-folder)
+ numbers
+ &optional ignore-flag)
+ (when (and (elmo-folder-use-flag-p folder)
+ (not ignore-flag))
+ (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))))
+
+(luna-define-method elmo-folder-mark-as-read :before ((folder elmo-net-folder)
+ numbers
+ &optional ignore-flag)
+ (when (and (elmo-folder-use-flag-p folder)
+ (not ignore-flag))
+ (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))))
+
+(luna-define-method elmo-folder-unmark-answered :before ((folder
+ elmo-net-folder)
+ numbers)
+ (when (elmo-folder-use-flag-p folder)
+ (if (elmo-folder-plugged-p folder)
+ (elmo-folder-send folder 'elmo-folder-unmark-answered-plugged
+ numbers)
+ (elmo-folder-send folder
+ 'elmo-folder-unmark-answered-unplugged numbers))))
+
+(luna-define-method elmo-folder-mark-as-answered :before ((folder
+ elmo-net-folder)
+ numbers)
+ (when (elmo-folder-use-flag-p folder)
+ (if (elmo-folder-plugged-p folder)
+ (elmo-folder-send folder 'elmo-folder-mark-as-answered-plugged
+ numbers)
+ (elmo-folder-send folder 'elmo-folder-mark-as-answered-unplugged
+ numbers))))
(luna-define-method elmo-folder-mark-as-read-unplugged ((folder
elmo-net-folder)
numbers)
(elmo-folder-unmark-important-dop folder numbers))
+(luna-define-method elmo-folder-mark-as-answered-unplugged ((folder
+ elmo-net-folder)
+ numbers)
+ (elmo-folder-mark-as-answered-dop folder numbers))
+
+(luna-define-method elmo-folder-unmark-answered-unplugged
+ ((folder elmo-net-folder) numbers)
+ (elmo-folder-unmark-answered-dop folder numbers))
+
(luna-define-method elmo-message-encache :around ((folder elmo-net-folder)
number &optional read)
(if (elmo-folder-plugged-p folder)