/* -*- 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; interface nsIArray; [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 nsIArray messages, in nsIMsgFolder dstFolder, in boolean isMove, in nsIMsgCopyServiceListener listener, in nsIMsgWindow msgWindow, in boolean allowUndo); /** * Copies or moves existing folders do destination folder. * * @param folders The array of nsIMsgFolders 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 CopyFolders(in nsIArray folders, 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); };