diff options
Diffstat (limited to '')
-rw-r--r-- | comm/mailnews/base/public/nsIMsgCopyService.idl | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/comm/mailnews/base/public/nsIMsgCopyService.idl b/comm/mailnews/base/public/nsIMsgCopyService.idl new file mode 100644 index 0000000000..b28ee9170c --- /dev/null +++ b/comm/mailnews/base/public/nsIMsgCopyService.idl @@ -0,0 +1,116 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsrootidl.idl" +#include "nsISupports.idl" +#include "nsIMsgFolder.idl" +#include "nsIMsgCopyServiceListener.idl" + +interface nsIMsgDBHdr; +interface nsIMsgWindow; +interface nsIFile; + +/** + * nsIMsgCopyService is a central point for kicking off message and folder + * copy/move operations. + * Each operation is queued up and executed in sequence. The actual work is + * handled by folder code in an asynchronous fashion. The folder indicates + * completion by calling notifyCompletion(). + * + * If the operation was initiated with a non-null nsIMsgCopyServiceListener, + * its OnStartCopy() and OnStopCopy() methods will be called when the + * operation begins/ends. Any errors are communicated via the result code + * parameter passed to OnStopCopy(). + */ +[scriptable, uuid(f21e428b-73c5-4607-993b-d37325b33722)] +interface nsIMsgCopyService : nsISupports { + + /** + * Copies or moves existing messages from source folder to destination folder. + * + * @param srcFolder Source folder of an operation. + * @param messages The array of nsIMsgHdrs in source folder which will be moved/copied. + * @param dstFolder Destination folder of operation. + * @param isMove false for copy operation, true for move operation. + * @param listener Listener which receive operation notifications + * @param msgWindow Window for notification callbacks, can be null. + * @param allowUndo Specifies if this operation will be done as an transaction + * that can be undone. + */ + void copyMessages(in nsIMsgFolder srcFolder, + in Array<nsIMsgDBHdr> messages, + in nsIMsgFolder dstFolder, + in boolean isMove, + in nsIMsgCopyServiceListener listener, + in nsIMsgWindow msgWindow, + in boolean allowUndo); + + /** + * Copies or moves a folder into an existing destination folder. + * + * @param srcFolder The nsIMsgFolder which will be moved/copied. + * @param dstFolder The destination folder of operation. + * @param isMove false for copy operation, true for move operation. + * @param listener Listener which receive operation notifications. + * @param msgWindow Window for notification callbacks, can be null. + */ + void copyFolder(in nsIMsgFolder srcFolder, + in nsIMsgFolder dstFolder, + in boolean isMove, + in nsIMsgCopyServiceListener listener, + in nsIMsgWindow msgWindow); + + /** + * Copies message in rfc format from file to folder. + * + * @param aFile A file which contains message in rfc format which + * will copied to destFolder. + * @param dstFolder Destination folder where a message will be copied. + * @param msgToReplace Header which identifies a message to use as a source + * of message properties, or null. For example, when + * deleting an attachment, the processed message is + * stored in a file, but the metadata should be copied + * from the original message. This method will NOT delete + * the original message. + * @param isDraftOrTemplate Specifies whether a message is a stored in draft + * folder or not. If is true listener should + * implement GetMessageId and return unique id for + * message in destination folder. This is important + * for IMAP servers which doesn't support uidplus. + * If destination folder contains message with the + * same message-id then it is possible that listener + * get wrong message key in callback + * nsIMsgCopyServiceListener::SetMessageKey. + * @param aMsgFlags Message flags which will be set after message is + * copied + * @param aMsgKeywords Keywords which will be set for newly copied + * message. + * @param listener Listener which receive copy notifications. + * @param msgWindow Window for notification callbacks, can be null. + */ + void copyFileMessage(in nsIFile aFile, + in nsIMsgFolder dstFolder, + in nsIMsgDBHdr msgToReplace, + in boolean isDraftOrTemplate, + in unsigned long aMsgFlags, + in ACString aMsgKeywords, + in nsIMsgCopyServiceListener listener, + in nsIMsgWindow msgWindow); + + /** + * Notify the message copy service that the destination folder has finished + * it's messages copying operation so that the copy service can continue + * copying the rest of the messages if there are more to copy with. + * aSupport and dstFolder uniquely identify a copy service request. + * + * @param aSupport The originator of CopyMessages or copyFileMessage; it can + * be either a nsIMsgFolder or a nsIFile + * @param dstFolder The destination folder which performs the copy operation + * @param result The result of the copy operation + */ + void notifyCompletion(in nsISupports aSupport, + in nsIMsgFolder dstFolder, + in nsresult result); +}; |