summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/base/public/nsIMessenger.idl
blob: 437879782a5d25e9ba0915eb3c17162f45616938 (plain)
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* 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 "nsISupports.idl"
#include "nsrootidl.idl"
#include "nsIMsgWindow.idl"
#include "nsIMsgIdentity.idl"

interface nsIMsgDBHdr;
interface mozIDOMWindowProxy;
interface nsITransactionManager;
interface nsIMsgMessageService;
interface nsIFile;
interface nsIUrlListener;

[scriptable, uuid(01b967c8-b289-4e32-ad46-6eb7c89d4106)]
interface nsIMessenger : nsISupports {

    const long eUnknown = 0;
    const long eDeleteMsg = 1;
    const long eMoveMsg = 2;
    const long eCopyMsg = 3;
    const long eMarkAllMsg = 4;

    readonly attribute nsITransactionManager transactionManager;

    void setWindow(in mozIDOMWindowProxy ptr, in nsIMsgWindow msgWindow);

    boolean canUndo();
    boolean canRedo();
    unsigned long getUndoTransactionType();
    unsigned long getRedoTransactionType();
    void undo(in nsIMsgWindow msgWindow);
    void redo(in nsIMsgWindow msgWindow);

    /**
     * Saves a given message to a file or template.
     *
     * @param aURI         The URI of the message to save
     * @param aAsFile      If true, save as file, otherwise save as a template
     * @param aIdentity    When saving as a template, this is used to determine
     *                     the location to save the template to.
     * @param aMsgFilename When saving as a file, the filename to save the
     *                     message as, or the default filename for the file
     *                     picker.
     * @param aBypassFilePicker
     *                     If not specified or false, this function will show
     *                     a file picker when saving as a file. If true, no
     *                     file picker will be shown.
     */
    void saveAs(in AUTF8String aURI, in boolean aAsFile,
                in nsIMsgIdentity aIdentity, in AString aMsgFilename,
                [optional] in boolean aBypassFilePicker);

    /**
     * Save the given messages as files in a folder - the user will be prompted
     * for which folder to use.
     * @param count message count
     * @param filenameArray the filenames to use
     * @param messageUriArray uris of the messages to save
     */
    void saveMessages(in Array<AString> filenameArray,
                      in Array<AUTF8String> messageUriArray);

    void saveAttachment(in AUTF8String contentType,
                        in AUTF8String url,
                        in AUTF8String displayName,
                        in AUTF8String messageUri,
                        in boolean isExternalAttachment);
    void saveAllAttachments(in Array<AUTF8String> contentTypeArray,
                            in Array<AUTF8String> urlArray,
                            in Array<AUTF8String> displayNameArray,
                            in Array<AUTF8String> messageUriArray);

    void saveAttachmentToFile(in nsIFile aFile,
                              in AUTF8String aUrl,
                              in AUTF8String aMessageUri,
                              in AUTF8String aContentType,
                              in nsIUrlListener aListener);

    /**
     * For a single message and attachments, save these attachments to a file, and
     *  remove from the message. No warning windows will appear, so this is
     *  suitable for use in test and filtering.
     *
     * @param aDestFolder       Folder to save files in
     * @param aCount            Number of attachments to save
     * @param aContentTypeArray Content types of the attachments
     * @param aUrlArray         Urls for the attachments
     * @param aDisplayNameArray Files names to save attachments to. Unique
     *                           names will be created if needed.
     * @param aMessageUriArray  Uri for the source message
     * @param aListener         Listener to inform of start and stop of detach
     */
    void detachAttachmentsWOPrompts(in nsIFile aDestFolder,
                                    in Array<AUTF8String> aContentTypeArray,
                                    in Array<AUTF8String> aUrlArray,
                                    in Array<AUTF8String> aDisplayNameArray,
                                    in Array<AUTF8String> aMessageUriArray,
                                    in nsIUrlListener aListener);

    void detachAttachment(in AUTF8String contentType,
                          in AUTF8String url,
                          in AUTF8String displayName,
                          in AUTF8String messageUri,
                          in boolean saveFirst,
                          [optional] in boolean withoutWarning);
    void detachAllAttachments(in Array<AUTF8String> contentTypeArray,
                              in Array<AUTF8String> urlArray,
                              in Array<AUTF8String> displayNameArray,
                              in Array<AUTF8String> messageUriArray,
                              in boolean saveFirst,
                              [optional] in boolean withoutWarning);
    // saveAttachmentToFolder is used by the drag and drop code to drop an attachment to a destination folder
    // We need to return the actual file path (including the filename).
    nsIFile saveAttachmentToFolder(in AUTF8String contentType,
                                   in AUTF8String url,
                                   in AUTF8String displayName,
                                   in AUTF8String messageUri,
                                   in nsIFile aDestFolder);

    nsIMsgDBHdr msgHdrFromURI(in AUTF8String aUri);

    AString formatFileSize(in unsigned long long aPos, [optional] in boolean aUseKB);
};