diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/popcmtm.h --- a/epoc32/include/popcmtm.h Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/popcmtm.h Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,233 @@ -popcmtm.h +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Client MTM for the POP3 protocol +// +// + + +#if !defined (__POPCMTM_H__) +#define __POPCMTM_H__ + +#if !defined (__MIUTMSG_H__) +#include +#endif +#if !defined (__MIUTPARS_H__) +#include //TImMessageField +#endif +#if !defined (__POP3CMDS_H__) +#include // KPOP3MTMConnect etc +#endif +#if !defined (__POP3SET_H__) +#include // KPOP3MTMConnect etc +#endif + +class CImPOP3GetMail; +class CImEmailAutoSend; + +/////// Pop3 Client MTM ///////////////////////////////////////////////////////////////////////////// +class CPop3ClientMtm : public CBaseMtm +/** POP3 client MTM interface. + +Most of the functions in this class are implementations of the virtual functions +defined by the base class CBaseMtm. +@publishedAll +@released +*/ + { +/** +@deprecated +*/ + +public: + enum TImPopcNewEmailHeaderType + { + EForwardedEmail, + EReplyToEmail, + EReceiptToEmail + }; + +public: + IMPORT_C static CPop3ClientMtm* NewL(CRegisteredMtmDll& aRegisteredMtmDll, CMsvSession& aMsvSession); + ~CPop3ClientMtm(); + + void SaveMessageL(); + void LoadMessageL(); + + IMPORT_C void StoreSettingsL(); + IMPORT_C void RestoreSettingsL(); + + CMsvOperation* ReplyL (TMsvId aId, TMsvPartList aPartlist, TRequestStatus& aCompletionStatus); + CMsvOperation* ForwardL(TMsvId aId, TMsvPartList aPartList, TRequestStatus& aCompletionStatus); + + TUint ValidateMessage(TMsvPartList aPartList); + TMsvPartList Find(const TDesC& aTextToFind, TMsvPartList aPartList); + + void AddAddresseeL(const TDesC& aRealAddress); + void AddAddresseeL(const TDesC& aRealAddress, const TDesC& aAlias); + void RemoveAddressee(TInt aIndex); + + IMPORT_C void SetSettingsL(const CImPop3Settings& aSettings); + IMPORT_C const CImPop3Settings& Settings() const; + + // --- RTTI functions --- + TInt QueryCapability(TUid aCapability, TInt& aResponse); + void InvokeSyncFunctionL(TInt aFunctionId, const CMsvEntrySelection& aSelection, TDes8& aParameter); + CMsvOperation* InvokeAsyncFunctionL(TInt aFunctionId, const CMsvEntrySelection& aSelection, TDes8& aParameter, TRequestStatus& aCompletionStatus); + + // Attachment functions to support the SendAs API + IMPORT_C virtual void AddAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus); + IMPORT_C virtual void AddAttachmentL(RFile& aFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus); + IMPORT_C virtual void AddLinkedAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus); + IMPORT_C virtual void AddEntryAsAttachmentL(TMsvId aAttachmentId, TRequestStatus& aStatus); + EXPORT_C virtual void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus); + IMPORT_C virtual void CreateMessageL(TMsvId aServiceId); + + IMPORT_C virtual TMsvId DefaultServiceL() const; + IMPORT_C virtual void RemoveDefaultServiceL(); + IMPORT_C virtual void ChangeDefaultServiceL(const TMsvId& aService); + +protected: + CPop3ClientMtm(CRegisteredMtmDll& aRegisteredMtmDll, CMsvSession& aMsvSession); + void ConstructL(); + void ContextEntrySwitched(); + +private: + TBool ValidateAddress(const TPtrC& anAddress); + void SendOnNextConnectionL(); + TMsvPartList DoFindL(const TDesC& aTextToFind, TMsvPartList aPartList); + CMsvEntrySelection* FilteredChildrenLC(TBool aNewOnly, TInt aMaxEmailSize); + CMsvEntrySelection* FilteredSelectionLC(TInt aMaxEmailSize, const CMsvEntrySelection& aSelection); + + + +private: + CImPop3Settings* iImPop3Settings; + TImMessageField iTImMessageField; + CImHeader* iHeader; + + HBufC* iEmailAddressFormatString; // defines format of email address used by "Send as" API eg _LIT("/"%S/" <%S>") + CImEmailOperation* iImEmailOperation; + CImPOP3GetMail* iImPOP3GetMail; + }; + + +class CImPOP3GetMail : public CMsvOperation +/** Encapsulates an operation to copy/move POP3 emails from the remote inbox to +any local folder. + +Functionality is provided to: + +1. copy/move any new emails + +2. copy/move a selection of emails + +3. copy/move all emails + +4. in the Remote Inbox to a local folder. + +There are three cases for copying/moving the emails from the Remote Inbox: + +1. the user is connected to the account so just copy/move the emails + +2. the user is not connected to the account so connect, copy/move the emails, +and then disconnect + +3. the user is not connected to the account so connect, copy/move the emails, +and then stay online + +Objects of this type are returned from CPop3ClientMtm::InvokeAsyncFunctionL() +when a suitable get command is requested. +@publishedAll +@released +*/ + { +public: + /** Defines types of get mail operation. */ + enum TImPOP3GetMailType + { + /** Connect and copy new mail and stay online. */ + EConnectAndCopyNewMailAndStayOnline, + /** Connect and copy new mail and disconnect. */ + EConnectAndCopyNewMailAndDisconnect, + /** Connect and move new mail and stay online. */ + EConnectAndMoveNewMailAndStayOnline, + /** Connect and move new mail and disconnect. */ + EConnectAndMoveNewMailAndDisconnect, + /** Connect and copy mail selection and stay online. */ + EConnectAndCopyMailSelectionAndStayOnline, + /** Connect and copy mail selection and disconnect. */ + EConnectAndCopyMailSelectionAndDisconnect, + /** Connect and move mail selection and stay online. */ + EConnectAndMoveMailSelectionAndStayOnline, + /** Connect and move mail selection and disconnect. */ + EConnectAndMoveMailSelectionAndDisconnect, + /** Connect and copy all mail and stay online. */ + EConnectAndCopyAllMailAndStayOnline, + /** Connect and copy all mail and disconnect. */ + EConnectAndCopyAllMailAndDisconnect, + /** Connect and move all mail and stay online. */ + EConnectAndMoveAllMailAndStayOnline, + /** Connect and move all mail and disconnect. */ + EConnectAndMoveAllMailAndDisconnect + }; + +public: + IMPORT_C CMsvOperation* GetMailL(CPop3ClientMtm& aPop3ClientMtm, TRequestStatus& aObserverRequestStatus, const CMsvEntrySelection& aMsvEntrySelection, TDes8& aPop3GetMailInfo, TImPOP3GetMailType aPOP3GetMailType); + IMPORT_C const TDesC8& FinalProgress(); + IMPORT_C ~CImPOP3GetMail(); + void DoCancel(); + void RunL(); + const TDesC8& ProgressL(); +private: + CImPOP3GetMail(CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus, CPop3ClientMtm& aPop3ClientMtm, TImPOP3GetMailType aPOP3GetMailType); + void ConstructL(const CMsvEntrySelection& aMsvEntrySelection, TDes8& aPop3GetMailInfo); + void SelectNextStateL(); // selects next state to go to + void ChangeStateL(); // initiates the next state operation + void SelectAndChangeToNextStateL(); + void RequestComplete(TInt aError); + void Complete(); + void ConnectToMailboxL(); + void CopyMoveNewMessagesL(TBool aCopy); + void CopyMoveMessageSelectionL(TBool aCopy); + void CopyMoveAllMessagesL(TBool aCopy); + void DisconnectFromMailboxL(); + void ResetProgress(); + void StoreProgressL(); +private: + enum TImPOP3GetMailState + { + EConnectToMailbox, + ECopyNewMessages, + EMoveNewMessages, + ECopyMessageSelection, + EMoveMessageSelection, + ECopyAllMessages, + EMoveAllMessages, + EDisconnectFromMailbox, + EFinished + }; + + CPop3ClientMtm& iPop3ClientMtm; + CMsvEntrySelection* iMsvEntrySelection; + CMsvOperation* iMsvOperation; + + TPop3Progress iProgress; + TPop3Progress iErrorProgress; + TImPOP3GetMailState iState; + TImPOP3GetMailType iPOP3GetMailType; + TPckgBuf iProgressBuf; + TPckgBuf iPop3GetMailInfo; + }; + +#endif // __POPCMTM_H__