diff options
Diffstat (limited to 'mailnews/imap/src/nsImapService.h')
-rw-r--r-- | mailnews/imap/src/nsImapService.h | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/mailnews/imap/src/nsImapService.h b/mailnews/imap/src/nsImapService.h new file mode 100644 index 000000000..dc6f1921a --- /dev/null +++ b/mailnews/imap/src/nsImapService.h @@ -0,0 +1,123 @@ +/* -*- 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/. */ + +#ifndef nsImapService_h___ +#define nsImapService_h___ + +#include "nsIImapService.h" +#include "nsIMsgMessageService.h" +#include "nsCOMPtr.h" +#include "nsIFile.h" +#include "nsIProtocolHandler.h" +#include "nsIMsgProtocolInfo.h" +#include "nsIContentHandler.h" +#include "nsICacheStorage.h" + +class nsIImapHostSessionList; +class nsCString; +class nsIImapUrl; +class nsIMsgFolder; +class nsIMsgStatusFeedback; +class nsIMsgIncomingServer; + +class nsImapService : public nsIImapService, + public nsIMsgMessageService, + public nsIMsgMessageFetchPartService, + public nsIProtocolHandler, + public nsIMsgProtocolInfo, + public nsIContentHandler +{ +public: + nsImapService(); + + NS_DECL_THREADSAFE_ISUPPORTS + NS_DECL_NSIMSGPROTOCOLINFO + NS_DECL_NSIIMAPSERVICE + NS_DECL_NSIMSGMESSAGESERVICE + NS_DECL_NSIPROTOCOLHANDLER + NS_DECL_NSIMSGMESSAGEFETCHPARTSERVICE + NS_DECL_NSICONTENTHANDLER + +protected: + virtual ~nsImapService(); + char GetHierarchyDelimiter(nsIMsgFolder *aMsgFolder); + + nsresult GetFolderName(nsIMsgFolder *aImapFolder, nsACString &aFolderName); + + // This is called by both FetchMessage and StreamMessage + nsresult GetMessageFromUrl(nsIImapUrl *aImapUrl, + nsImapAction aImapAction, + nsIMsgFolder *aImapMailFolder, + nsIImapMessageSink *aImapMessage, + nsIMsgWindow *aMsgWindow, + nsISupports *aDisplayConsumer, + bool aConvertDataToText, + nsIURI **aURL); + + nsresult CreateStartOfImapUrl(const nsACString &aImapURI, // a RDF URI for the current message/folder, can be empty + nsIImapUrl **imapUrl, + nsIMsgFolder *aImapFolder, + nsIUrlListener *aUrlListener, + nsACString &urlSpec, + char &hierarchyDelimiter); + + nsresult GetImapConnectionAndLoadUrl(nsIImapUrl *aImapUrl, + nsISupports *aConsumer, + nsIURI **aURL); + + nsresult SetImapUrlSink(nsIMsgFolder *aMsgFolder, nsIImapUrl *aImapUrl); + + nsresult FetchMimePart(nsIImapUrl *aImapUrl, + nsImapAction aImapAction, + nsIMsgFolder *aImapMailFolder, + nsIImapMessageSink *aImapMessage, + nsIURI **aURL, + nsISupports *aDisplayConsumer, + const nsACString &messageIdentifierList, + const nsACString &mimePart); + + nsresult FolderCommand(nsIMsgFolder *imapMailFolder, + nsIUrlListener *urlListener, + const char *aCommand, + nsImapAction imapAction, + nsIMsgWindow *msgWindow, + nsIURI **url); + + nsresult ChangeFolderSubscription(nsIMsgFolder *folder, + const nsAString &folderName, + const char *aCommand, + nsIUrlListener *urlListener, + nsIURI **url); + + nsresult DiddleFlags(nsIMsgFolder *aImapMailFolder, + nsIUrlListener *aUrlListener, + nsIURI **aURL, + const nsACString &messageIdentifierList, + const char *howToDiddle, + imapMessageFlagsType flags, + bool messageIdsAreUID); + + nsresult OfflineAppendFromFile(nsIFile *aFile, + nsIURI *aUrl, + nsIMsgFolder *aDstFolder, + const nsACString &messageId, // to be replaced + bool inSelectedState, // needs to be in + nsIUrlListener *aListener, + nsIURI **aURL, + nsISupports *aCopyState); + + nsresult GetServerFromUrl(nsIImapUrl *aImapUrl, nsIMsgIncomingServer **aServer); + + // just a little helper method...maybe it should be a macro? which helps break down a imap message uri + // into the folder and message key equivalents + nsresult DecomposeImapURI(const nsACString &aMessageURI, nsIMsgFolder **aFolder, nsACString &msgKey); + nsresult DecomposeImapURI(const nsACString &aMessageURI, nsIMsgFolder **aFolder, nsMsgKey *msgKey); + + + nsCOMPtr<nsICacheStorage> mCacheStorage; + bool mPrintingOperation; // Flag for printing operations +}; + +#endif /* nsImapService_h___ */ |