williamr@2: // Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@2: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // SMTCPMTM.H williamr@2: // Client MTM for the SMTP protocol williamr@2: // williamr@2: // williamr@2: williamr@2: #if !defined (__SMTCMTM_H__) williamr@2: #define __SMTCMTM_H__ williamr@2: williamr@2: #if !defined (__E32BASE_H__) williamr@2: #include // CActive, TFileName) williamr@2: #endif williamr@2: williamr@2: #if !defined(__BADESCA_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: #if !defined (__MSVAPI_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: #if !defined (__MTCLBASE_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: #if !defined (__MIUTHDR_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: #if !defined (__MIUTPARS_H__) williamr@2: #include //TImMessageField williamr@2: #endif williamr@2: williamr@2: #if !defined (__MIUTMSG_H__) williamr@2: #include //CImEmailMessage williamr@2: #endif williamr@2: williamr@2: #if !defined (__SMTPSET_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: #if !defined (__SMTPCMDS_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: class CMsvEntry; williamr@2: class CMtmDllRegistry; williamr@2: class CRichText; williamr@2: class TMsvEntry; williamr@2: class CRegisteredMtmDll; williamr@2: class CImSmtpSettings; williamr@2: class CMsvSession; williamr@2: class CImAttachmentWaiter; williamr@2: williamr@4: // Smtp Client MTM // williamr@2: class CSmtpClientMtm : public CBaseMtm williamr@2: /** SMTP client MTM interface. williamr@2: williamr@2: Most of the functions in this class are implementations of the virtual functions williamr@2: defined by the base class CBaseMtm. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CSmtpClientMtm* NewL(CRegisteredMtmDll& aRegisteredMtmDll, CMsvSession& aMsvSession); williamr@2: ~CSmtpClientMtm(); williamr@2: williamr@2: void SaveMessageL(); williamr@2: void LoadMessageL(); williamr@2: williamr@2: IMPORT_C void StoreSettingsL(); williamr@2: IMPORT_C void RestoreSettingsL(); williamr@2: williamr@2: CMsvOperation* ReplyL (TMsvId aReplyEntryId, TMsvPartList aPartlist, TRequestStatus& aCompletionStatus); williamr@2: CMsvOperation* ForwardL(TMsvId aForwardEntryId, TMsvPartList aPartList, TRequestStatus& aCompletionStatus); williamr@2: williamr@2: TMsvPartList ValidateMessage(TMsvPartList aPartList); williamr@2: TMsvPartList Find(const TDesC& aTextToFind, TMsvPartList aPartList); williamr@2: williamr@2: // addresssee list (used by objects with no MTM knowledge) williamr@2: void AddAddresseeL(const TDesC& aRealAddress); williamr@2: void AddAddresseeL(const TDesC& aRealAddress, const TDesC& aAlias); williamr@2: void AddAddresseeL(TMsvRecipientType aType, const TDesC& aRealAddress); williamr@2: void AddAddresseeL(TMsvRecipientType aType, const TDesC& aRealAddress, const TDesC& aAlias); williamr@2: void RemoveAddressee(TInt aIndex); williamr@2: williamr@2: IMPORT_C void SetSettingsL(const CImSmtpSettings& aSettings); williamr@2: IMPORT_C const CImSmtpSettings& Settings() const; williamr@2: IMPORT_C void SetSubjectL(const TDesC& aSubject); williamr@2: IMPORT_C const TPtrC SubjectL() const; williamr@2: williamr@2: // --- RTTI functions --- williamr@2: TInt QueryCapability(TUid aCapability, TInt& aResponse); williamr@2: void InvokeSyncFunctionL(TInt aFunctionId,const CMsvEntrySelection& aSelection, TDes8& aParameter); williamr@2: CMsvOperation* InvokeAsyncFunctionL(TInt aFunctionId,const CMsvEntrySelection& aSelection, TDes8& aParameter, TRequestStatus& aCompletionStatus); williamr@2: williamr@2: // Attachment functions to support the SendAs API williamr@2: IMPORT_C virtual void AddAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus); williamr@2: IMPORT_C virtual void AddAttachmentL(RFile& aFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus); williamr@2: IMPORT_C virtual void AddLinkedAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus); williamr@2: IMPORT_C virtual void AddEntryAsAttachmentL(TMsvId aAttachmentId, TRequestStatus& aStatus); williamr@2: IMPORT_C virtual void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus); williamr@2: IMPORT_C virtual void CreateMessageL(TMsvId aServiceId); williamr@2: williamr@2: IMPORT_C virtual TMsvId DefaultServiceL() const; williamr@2: IMPORT_C virtual void RemoveDefaultServiceL(); williamr@2: IMPORT_C virtual void ChangeDefaultServiceL(const TMsvId& aService); williamr@2: IMPORT_C void CancelAttachmentOperation(); williamr@2: williamr@2: protected: williamr@2: CSmtpClientMtm(CRegisteredMtmDll& aRegisteredMtmDll, CMsvSession& aMsvSession); williamr@2: void ConstructL(); williamr@2: williamr@2: void ContextEntrySwitched(); // called after the context of this instance has been changed to another entry williamr@2: private: williamr@2: TBool ValidateAddress(const TPtrC& anAddress); williamr@2: void ResetData(); williamr@2: williamr@2: void RestoreEmailMessageL(); williamr@2: void StoreEmailMessageL(); williamr@2: void SetAddresseeListL(); williamr@2: void GetBodyTextL(CImEmailMessage& aMessage, TMsvId aMsvId); williamr@2: TInt32 GetAttachmentSizeL(CImEmailMessage& aMessage, TMsvId aMsvId); williamr@2: TMsvPartList DoFindL(const TDesC& aTextToFind, TMsvPartList aPartList); williamr@2: williamr@2: private: williamr@2: CMsvOperationActiveSchedulerWait* iWait; williamr@2: CImSmtpSettings* iImSmtpSettings; williamr@2: CImHeader* iHeader; williamr@2: HBufC* iSubject; williamr@2: williamr@2: TImMessageField iTImMessageField; williamr@2: HBufC* iEmailAddressFormatString; // defines format of email address used by "Send as" API eg _LIT("/"%S/" <%S>") williamr@2: CMsvEntrySelection* iEntrySelection; williamr@2: CImEmailOperation* iImEmailOperation; williamr@2: CImAttachmentWaiter* iAttachmentWaiter; williamr@2: CImEmailMessage* iEmailMessage; williamr@2: }; williamr@2: williamr@2: williamr@2: #endif // __SMTCMTM_H__