--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/email/pop3andsmtpmtm/clientmtms/inc/POPCMTM.H Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,233 @@
+// 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 "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.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 <miutmsg.h>
+#endif
+#if !defined (__MIUTPARS_H__)
+#include <miutpars.h> //TImMessageField
+#endif
+#if !defined (__POP3CMDS_H__)
+#include <pop3cmds.h> // KPOP3MTMConnect etc
+#endif
+#if !defined (__POP3SET_H__)
+#include <pop3set.h> // 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<TPop3Progress> iProgressBuf;
+ TPckgBuf<TImPop3GetMailInfo> iPop3GetMailInfo;
+ };
+
+#endif // __POPCMTM_H__