mailnews/protocols/ews/src/EwsFolder.h (63 lines of code) (raw):

/* 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 __COMM_MAILNEWS_PROTOCOLS_EWS_FOLDER_H #define __COMM_MAILNEWS_PROTOCOLS_EWS_FOLDER_H #include "IEwsClient.h" #include "nsICopyMessageListener.h" #include "nsMsgDBFolder.h" #include "nscore.h" class EwsFolder : public nsMsgDBFolder { public: NS_DECL_ISUPPORTS_INHERITED EwsFolder(); friend class MessageDeletionCallbacks; friend class MessageOperationCallbacks; protected: virtual ~EwsFolder(); virtual nsresult CreateBaseMessageURI(const nsACString& aURI) override; virtual nsresult GetDatabase() override; NS_IMETHOD CreateStorageIfMissing(nsIUrlListener* urlListener) override; NS_IMETHOD CreateSubfolder(const nsACString& folderName, nsIMsgWindow* msgWindow) override; NS_IMETHOD CopyFileMessage(nsIFile* aFile, nsIMsgDBHdr* msgToReplace, bool isDraftOrTemplate, uint32_t newMsgFlags, const nsACString& aNewMsgKeywords, nsIMsgWindow* msgWindow, nsIMsgCopyServiceListener* listener) override; NS_IMETHOD CopyMessages(nsIMsgFolder* srcFolder, nsTArray<RefPtr<nsIMsgDBHdr>> const& srcHdrs, bool isMove, nsIMsgWindow* msgWindow, nsIMsgCopyServiceListener* listener, bool isFolder, bool allowUndo) override; NS_IMETHOD DeleteMessages(const nsTArray<RefPtr<nsIMsgDBHdr>>& msgHeaders, nsIMsgWindow* msgWindow, bool deleteStorage, bool isMove, nsIMsgCopyServiceListener* listener, bool allowUndo) override; NS_IMETHOD CopyFolder(nsIMsgFolder* srcFolder, bool isMoveFolder, nsIMsgWindow* window, nsIMsgCopyServiceListener* listener) override; NS_IMETHOD DeleteSelf(nsIMsgWindow* aWindow) override; NS_IMETHOD GetDBFolderInfoAndDB(nsIDBFolderInfo** folderInfo, nsIMsgDatabase** _retval) override; NS_IMETHOD GetDeletable(bool* deletable) override; NS_IMETHOD GetIncomingServerType(nsACString& aIncomingServerType) override; NS_IMETHOD GetNewMessages(nsIMsgWindow* aWindow, nsIUrlListener* aListener) override; NS_IMETHOD GetSubFolders( nsTArray<RefPtr<nsIMsgFolder>>& aSubFolders) override; NS_IMETHOD MarkMessagesRead(const nsTArray<RefPtr<nsIMsgDBHdr>>& messages, bool markRead) override; NS_IMETHOD RenameSubFolders(nsIMsgWindow* msgWindow, nsIMsgFolder* oldFolder) override; NS_IMETHOD UpdateFolder(nsIMsgWindow* aWindow) override; NS_IMETHOD Compact(nsIUrlListener* aListener, nsIMsgWindow* aMsgWindow) override; NS_IMETHOD CompactAll(nsIUrlListener* aListener, nsIMsgWindow* aMsgWindow) override; /** * Delete messages from the local database as well as any downloaded * messages from the local message store. * * This method is intended to be used by friend classes. */ nsresult LocalDeleteMessages(const nsTArray<RefPtr<nsIMsgDBHdr>>& messages); private: bool mHasLoadedSubfolders; /** * Generate or retrieve an EWS API client capable of interacting with the EWS * server this folder depends from. */ nsresult GetEwsClient(IEwsClient** ewsClient); /** * Locally look up the EWS ID for the current folder. */ nsresult GetEwsId(nsACString& ewsId); /** * Looks up the trash folder for the current account. */ nsresult GetTrashFolder(nsIMsgFolder** result); /** * Synchronize the message list for the current folder. */ nsresult SyncMessages(nsIMsgWindow* window); }; #endif