/* -*- Mode: IDL; tab-width: 2; 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 "nsISupports.idl" #include "MailNewsTypes2.idl" interface nsIURI; interface nsIUrlListener; interface nsIStreamListener; interface nsIMsgWindow; interface nsIFile; interface nsIMsgFolder; interface nsIMsgSearchSession; interface nsIMsgDBHdr; interface nsIStreamConverter; interface nsICacheEntry; %{C++ #include "MailNewsTypes.h" %} [scriptable, uuid(3aa7080a-73ac-4394-9636-fc00e182319b)] interface nsIMsgMessageService : nsISupports { /** * If you want a handle on the running task, pass in a valid nsIURI * ptr. You can later interrupt this action by asking the netlib * service manager to interrupt the url you are given back. * Remember to release aURL when you are done with it. Pass nullptr * in for aURL if you don't care about the returned URL. */ /** * Pass in the URI for the message you want to have copied. * * @param aSrcURI * @param aCopyListener already knows about the destination folder. * @param aMoveMessage TRUE if you want the message to be moved. * FALSE leaves it as just a copy. * @param aUrlListener * @param aMsgWindow * @param aURL */ void CopyMessage(in string aSrcURI, in nsIStreamListener aCopyListener, in boolean aMoveMessage, in nsIUrlListener aUrlListener, in nsIMsgWindow aMsgWindow, out nsIURI aURL); /** * Copy multiple messages at a time * * @param keys * @param srcFolder * @param aCopyListener * @param aMoveMessage * @param aUrlListener * @param aMsgWindow * @returns URI that's run to perform the copy */ nsIURI CopyMessages(in unsigned long aNumKeys, [array, size_is (aNumKeys)] in nsMsgKey aKeys, in nsIMsgFolder srcFolder, in nsIStreamListener aCopyListener, in boolean aMoveMessage, in nsIUrlListener aUrlListener, in nsIMsgWindow aMsgWindow); /** * When you want a message displayed.... * * @param aMessageURI Is a uri representing the message to display. * @param aDisplayConsumer Is (for now) an nsIDocShell which we'll use to load * the message into. * XXXbz Should it be an nsIWebNavigation or something? * @param aMsgWindow * @param aUrlListener * @param aCharsetOverride (optional) character set over ride to force the message to use. * @param aURL */ void DisplayMessage(in string aMessageURI, in nsISupports aDisplayConsumer, in nsIMsgWindow aMsgWindow, in nsIUrlListener aUrlListener, in string aCharsetOverride, out nsIURI aURL); /** * When you want an attachment downloaded * * @param aContentType We need to know the content type of the attachment * @param aFileName The name of the attachment. * @param aUrl String representation of the original url associated with the msg. * @param aMessageUri RDF resource that describes the message * @param aDisplayConsumer * @param aMsgWindow Message window * @param aUrlListener */ void openAttachment(in string aContentType, in string aFileName, in string aUrl, in string aMessageUri, in nsISupports aDisplayConsumer, in nsIMsgWindow aMsgWindow, in nsIUrlListener aUrlListener); /** * When you want to spool a message out to a file on disk. * This is an asynch operation of course. You must pass in a * url listener in order to figure out when the operation is done. * * @param aMessageURI The uri representing the message to spool out to disk. * @param aFile The file you want the message saved to * @param aGenerateDummyEnvelope Usually FALSE. Set to TRUE if you want the msg * appended at the end of the file. * @param aUrlListener * @param aURL * @param canonicalLineEnding * @param aMsgWindow */ void SaveMessageToDisk(in string aMessageURI, in nsIFile aFile, in boolean aGenerateDummyEnvelope, in nsIUrlListener aUrlListener, out nsIURI aURL, in boolean canonicalLineEnding, in nsIMsgWindow aMsgWindow); /** * When you have a uri and you would like to convert that * to a url which can be run through necko, you can use this method. * the Uri MUST refer to a message and not a folder! * * @param aMessageURI A message uri to convert. * @param aURL URL which can be run through necko. * @param aMsgWindow */ void GetUrlForUri(in string aMessageURI, out nsIURI aURL, in nsIMsgWindow aMsgWindow); /** * When you want a message displayed in a format that is suitable for printing.... * * @param aMessageURI A uri representing the message to display. * @param aDisplayConsumer is (for now) a nsIDocShell which we'll use to load * the message into. * XXXbz should it be an nsIWebNavigation? * @param aMsgWindow * @param aUrlListener * @param aURL */ void DisplayMessageForPrinting(in string aMessageURI, in nsISupports aDisplayConsumer, in nsIMsgWindow aMsgWindow, in nsIUrlListener aUrlListener, out nsIURI aURL); /** * * * @param aSearchSession * @param aMsgWindow * @param aMsgFolder * @param aSearchUri */ void Search(in nsIMsgSearchSession aSearchSession, in nsIMsgWindow aMsgWindow, in nsIMsgFolder aMsgFolder, in string aSearchUri); /** * This method streams a message to the passed in consumer. If aConvertData is true, it * will create a stream converter from message rfc822 to star/star. It will also tack * aAdditionalHeader onto the url (e.g., "header=filter"). * * @param aMessageURI uri of message to stream * @param aConsumer generally, a stream listener listening to the message * @param aMsgWindow msgWindow for give progress and status feedback * @param aUrlListener gets notified when url starts and stops * @param aConvertData should we create a stream converter? * @param aAdditionalHeader added to URI, e.g., "header=filter" * @param aLocalOnly whether data should be retrieved only from local caches * If streaming over the network is required and this is true, then * an exception is thrown. This defaults to false. * * @note If we're offline, then even if aLocalOnly is false, we won't stream over the * network * * @return the URL that gets run */ nsIURI streamMessage(in string aMessageURI, in nsISupports aConsumer, in nsIMsgWindow aMsgWindow, in nsIUrlListener aUrlListener, in boolean aConvertData, in ACString aAdditionalHeader, [optional] in boolean aLocalOnly); /** * This method streams a message's headers to the passed in consumer. * This is for consumers who want a particular header but don't * want to stream the whole message. * * @param aMessageURI uri of message whose headers we are to stream * @param aConsumer a stream listener listening to the message headers. * @param aUrlListener gets notified when url starts and stops, if we run a url. * @param aLocalOnly whether data should be retrieved only from local caches * If streaming over the network is required and this is true, then * an exception is thrown. This defaults to false. * * @note If we're offline, then even if aLocalOnly is false, we won't stream over the * network * * @return the URL that gets run, if any. */ nsIURI streamHeaders(in string aMessageURI, in nsIStreamListener aConsumer, in nsIUrlListener aUrlListener, [optional] in boolean aLocalOnly); /** * Determines whether a message is in the memory cache. Local folders * don't implement this. * The URL needs to address a message, not a message part, all query * qualifiers will be stripped before looking up the entry in the cache. * * @param aUrl The URL of the message, possibly with an appropriate command in it * @param aFolder The folder this message is in * * @return TRUE if the message is in mem cache; FALSE if it is not. */ boolean isMsgInMemCache(in nsIURI aUrl, in nsIMsgFolder aFolder); /** * now the the message datasource is going away * we need away to go from message uri to go nsIMsgDBHdr * * @param uri A message uri to get nsIMsgDBHdr for. * * @return nsIMsgDBHdr for specified uri or null if failed. */ nsIMsgDBHdr messageURIToMsgHdr(in string uri); }; /** * Some mail protocols (like imap) allow you to fetch individual mime parts. We use this interface * to represent message services whose protocols support this. To use this interface, you should get * the message service then QI for this interface. If it's present, then can fetch a mime part. */ [scriptable, uuid(3728C255-480C-11d4-98D0-001083010E9B)] interface nsIMsgMessageFetchPartService : nsISupports { /** * Used to fetch an individual mime part * * @param aURI url representing the message * @param aMessageURI RDF URI including the part to fetch * @param aDisplayConsumer * @param aMsgWindow * @param aUrlListener * * @return */ nsIURI fetchMimePart(in nsIURI aURI, in string aMessageUri, in nsISupports aDisplayConsumer, in nsIMsgWindow aMsgWindow, in nsIUrlListener aUrlListener); };