diff options
Diffstat (limited to 'comm/mailnews/compose/src/nsMsgCopy.h')
-rw-r--r-- | comm/mailnews/compose/src/nsMsgCopy.h | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/comm/mailnews/compose/src/nsMsgCopy.h b/comm/mailnews/compose/src/nsMsgCopy.h new file mode 100644 index 0000000000..4fa50bd8ac --- /dev/null +++ b/comm/mailnews/compose/src/nsMsgCopy.h @@ -0,0 +1,108 @@ +/* -*- Mode: C++; 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/. */ + +#ifndef _nsMsgCopy_H_ +#define _nsMsgCopy_H_ + +#include "mozilla/Attributes.h" +#include "nscore.h" +#include "nsIFile.h" +#include "nsIMsgHdr.h" +#include "nsIMsgFolder.h" +#include "nsITransactionManager.h" +#include "nsIMsgCopy.h" +#include "nsIMsgCopyServiceListener.h" +#include "nsIMsgCopyService.h" + +// Forward declarations... +class nsMsgCopy; + +//////////////////////////////////////////////////////////////////////////////////// +// This is the listener class for the copy operation. We have to create this +// class to listen for message copy completion and eventually notify the caller +//////////////////////////////////////////////////////////////////////////////////// +class CopyListener : public nsIMsgCopyServiceListener { + public: + CopyListener(void); + + // nsISupports interface + NS_DECL_THREADSAFE_ISUPPORTS + + NS_IMETHOD OnStartCopy() override; + + NS_IMETHOD OnProgress(uint32_t aProgress, uint32_t aProgressMax) override; + + NS_IMETHOD SetMessageKey(nsMsgKey aMessageKey) override; + + NS_IMETHOD GetMessageId(nsACString& aMessageId) override; + + NS_IMETHOD OnStopCopy(nsresult aStatus) override; + + NS_IMETHOD SetMsgComposeAndSendObject(nsIMsgSend* obj); + + bool mCopyInProgress; + + private: + virtual ~CopyListener(); + nsCOMPtr<nsIMsgSend> mComposeAndSend; +}; + +// +// This is a class that deals with processing remote attachments. It implements +// an nsIStreamListener interface to deal with incoming data +// +class nsMsgCopy : public nsIMsgCopy, public nsIUrlListener { + public: + nsMsgCopy(); + + // nsISupports interface + NS_DECL_ISUPPORTS + NS_DECL_NSIMSGCOPY + NS_DECL_NSIURLLISTENER + + ////////////////////////////////////////////////////////////////////// + // Object methods... + ////////////////////////////////////////////////////////////////////// + // + nsresult DoCopy(nsIFile* aDiskFile, nsIMsgFolder* dstFolder, + nsIMsgDBHdr* aMsgToReplace, bool aIsDraft, uint32_t aMsgFlags, + nsIMsgWindow* msgWindow, nsIMsgSend* aMsgSendObj); + + nsresult GetUnsentMessagesFolder(nsIMsgIdentity* userIdentity, + nsIMsgFolder** msgFolder, bool* waitForUrl); + nsresult GetDraftsFolder(nsIMsgIdentity* userIdentity, + nsIMsgFolder** msgFolder, bool* waitForUrl); + nsresult GetTemplatesFolder(nsIMsgIdentity* userIdentity, + nsIMsgFolder** msgFolder, bool* waitForUrl); + nsresult GetSentFolder(nsIMsgIdentity* userIdentity, nsIMsgFolder** msgFolder, + bool* waitForUrl); + nsresult CreateIfMissing(nsIMsgFolder** folder, bool* waitForUrl); + + // + // Vars for implementation... + // + nsIFile* mFile; // the file we are sending... + nsMsgDeliverMode mMode; + nsCOMPtr<nsIMsgFolder> mDstFolder; + nsCOMPtr<nsIMsgDBHdr> mMsgToReplace; + bool mIsDraft; + uint32_t mMsgFlags; + nsCOMPtr<nsIMsgSend> mMsgSendObj; + char* mSavePref; + + private: + virtual ~nsMsgCopy(); +}; + +// Useful function for the back end... +nsresult LocateMessageFolder(nsIMsgIdentity* userIdentity, + nsMsgDeliverMode aFolderType, const char* aSaveURI, + nsIMsgFolder** msgFolder); + +nsresult MessageFolderIsLocal(nsIMsgIdentity* userIdentity, + nsMsgDeliverMode aFolderType, + const char* aSaveURI, bool* aResult); + +#endif /* _nsMsgCopy_H_ */ |