diff -r 000000000000 -r 8466d47a6819 emailuis/emailui/sendasmtm/fsmtms/client/inc/cfsclientmtm.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/emailui/sendasmtm/fsmtms/client/inc/cfsclientmtm.h Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,223 @@ +/* +* Copyright (c) 2007 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: Definition of the class CFsMtmClient. +* +*/ + + +#ifndef CFSCLIENTMTM_H +#define CFSCLIENTMTM_H + +#include +#include +#include "CFSMailCommon.h" + +#include +enum TEasEmailMTMCmds + { + KEasEmailMTMReadEntry = KMtmFirstFreeMtmFunctionId, //from + KEasEmailMTMAddEmailAttachment, + KEasEmailMTMDeleteEntry, + // KEEP THIS ALWAYS LAST! + KEasEmailMTMLastCommand + }; + +class CFsSendAsHelper; + +/** + * Implements MFsEmailBaseMtm + * + * @since S60 v5.2 + * @lib fsclientmtm.lib + */ +class MFsEmailBaseMtm + { + /** + * Creates a new MTM account. The account also acts as an Inbox folder + * + * @param aAccountName Freestyle Account name. + * @param aOwnAddress Freestyle Account own mail address. + * @param aMsgId Freestyle Account details. + * @return KErrNone if no problem in creating account. + */ + virtual TInt CreateAccountL( const TDesC& aAccountName, + const TDesC& aOwnAddress, TFSMailMsgId aMsgId) = 0; + + /** + * Deletes created MTM account. + * + * @param aAccountName Freestyle Account name. + * @param aMsgId Freestyle Account details. + * @return KErrNone if no problem in deleting account. + */ + virtual TInt DeleteAccountL( const TDesC& aAccountName, + TFSMailMsgId aMsgId) = 0; + + /** + * Renames existing MTM account. + * + * @param aAccountName Freestyle Account name. + * @param aOwnAddress Freestyle Account own mail address. + * @param aMsgId Freestyle Account details. + * @return KErrNone if no problem in deleting account. + */ + virtual TInt RenameAccountL( const TDesC& aAccountNewName, + const TDesC& aOwnAddress, TFSMailMsgId aMsgId) = 0; + }; + +/** + * Implements CBaseMtm to provide Client-side MTM functionality + * + * @since S60 3.1 + * @lib fsclientmtm.lib + */ +class CFsMtmClient : public CBaseMtm, public MFsEmailBaseMtm + { +public: // Construction and destruction + /** + * Constructs new object. + * @return created object. + */ + IMPORT_C static CFsMtmClient* NewL( + CRegisteredMtmDll& aRegisteredMtmDll, CMsvSession& aMsvSession); + + /** + * Destructor. + */ + ~CFsMtmClient(); + +public: // From MFsEmailBaseMtm + virtual TInt CreateAccountL(const TDesC& aAccountName, + const TDesC& aOwnAddress, TFSMailMsgId aMsgId); + + virtual TInt DeleteAccountL(const TDesC& aAccountName, + TFSMailMsgId aMsgId); + + virtual TInt RenameAccountL( const TDesC& aAccountNewName, + const TDesC& aOwnAddress, TFSMailMsgId aMsgId); + +public: // From CBaseMtm + + virtual void SetSubjectL(const TDesC& aSubject); + + // Attachment functions to support the SendAs API + virtual void AddAttachmentL(const TDesC& aFilePath, + const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus); + + virtual void AddAttachmentL(RFile& aFile, const TDesC8& aMimeType, + TUint aCharset, TRequestStatus& aStatus); + + virtual void AddLinkedAttachmentL(const TDesC& aFilePath, + const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus); + + virtual void AddEntryAsAttachmentL(TMsvId aAttachmentId, + TRequestStatus& aStatus); + + virtual void CreateAttachmentL(const TDesC& aFileName, + RFile& aAttachmentFile, const TDesC8& aMimeType, TUint aCharset, + TRequestStatus& aStatus); + + // Addressee list (used by objects with no MTM knowledge) + void AddAddresseeL(const TDesC& aRealAddress); + + void AddAddresseeL(const TDesC& aRealAddress, const TDesC& aAlias); + + void AddAddresseeL(TMsvRecipientType aType, const TDesC& aRealAddress); + + void AddAddresseeL(TMsvRecipientType aType, const TDesC& aRealAddress, + const TDesC& aAlias); + + void RemoveAddressee(TInt aIndex); + + // Store and restore entry data + void SaveMessageL(); + + void LoadMessageL(); + + // Response message creation + CMsvOperation* ReplyL (TMsvId aReplyEntryId, TMsvPartList aPartlist, + TRequestStatus& aCompletionStatus); + + CMsvOperation* ForwardL(TMsvId aForwardEntryId, TMsvPartList aPartList, + TRequestStatus& aCompletionStatus); + + // Validation and search + TMsvPartList ValidateMessage(TUint aPartList); + + TMsvPartList Find(const TDesC& aTextToFind, TMsvPartList aPartList); + + // MTM-specific functionality + 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); + + IMPORT_C TInt RemoveRedundantAccountsL(RArray& aMailBoxIds); + + IMPORT_C TInt AddEmailAsAttachmentL( const TUint& aPluginId, const TDesC& aAttachmentPath, TMsvId& aNewAttachEntryId ); + IMPORT_C TInt DeleteEmailAsAttachmentL( const TMsvId aNewAttachEntryId ); + +protected: // From CBaseMtm + void ContextEntrySwitched(); + +private: // methods used internally + + /** + * Finds the accounts entry based on account name. + * + * @param aAccountName Freestyle Account name. + * @param aMsgId Freestyle Account details. + */ + void SetTMsvIdsL( const TDesC& aAccountName, TFSMailMsgId aMsgId); + +private: // constructors + + /** + * Constructor. + * + * @param aRegisteredMtmDll To access self registry information. + * @param aMsvSession To communicate from Client to Server + */ + CFsMtmClient(CRegisteredMtmDll& aRegisteredMtmDll, + CMsvSession& aMsvSession); + /** + * Second-phase constructor. + */ + void ConstructL(); + +private: //data + // Current account details + TMsvId iAccountId; + + // Current account details + CMsvEntry* iAccountEntry; + + // To call sendasinfo functions. + CFsSendAsHelper* iSendAsHelper; + + /** + * Tells if feature Email Attached In Email is ON or OFF. + * State is looked from cenrep. + */ + TBool iEmailAttachedInEmail; + + CMsvOperationActiveSchedulerWait* iActiveSchedulerWait; + TMsvId iMTMAttachmentId; + }; + +#endif // CFSCLIENTMTM_H