Revision control

Copy as Markdown

Other Tools

/* -*- 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);
};