1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
/* -*- 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);
};
|