/** Copyright (c) 2002 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: Base class for document classes of the * mail viewer and editor applications**/#ifndef MSGMAILDOCUMENT_H#define MSGMAILDOCUMENT_H// INCLUDES#include <MsgEditorDocument.h> // CMsgEditorDocument#include <apgcli.h>// FORWARD DECLARATIONSclass CImHeader;class CMsgMailViewerSettings;class TMsvEmailEntry;class CImEmailMessage;class CEikMenuPane;class CMsgMailPreferences;class CMailMessage;class CMailCRHandler;// CLASS DECLARATION/*** CMsgMailDocument, base class for editor and viewer application document * classes.* Defines CMsgMailDocument -class, which is a base class for document * classes of the mail viewer and editor applications. The document is * part of the Symbian OS application framework.*/class CMsgMailDocument :public CMsgEditorDocument { public: // Constructors and destructor // Types of messages to keep count enum { EIndexAddHeaders = 0, EIndexLast }; /** * Destructor. */ IMPORT_C ~CMsgMailDocument(); public: // New functions /** * Sets preferences of the message.. * @param aModel model. */ void SetPreferences(CMsgMailPreferences* aPrefs); /** * Returns header of the message. * @return CImHeader, header of the message. */ CImHeader& HeaderL() const; /** * Get entry of the message. * @return TMsvEmailEntry entry of the message. */ IMPORT_C const TMsvEmailEntry& TMsvEMailEntryL(); /** * Returns reference to message object. * @return CImEmailMessage reference to message. */ IMPORT_C CImEmailMessage& MessageL(); /** * inline * Creates new message. * @see CreateNewL(TMsvId aServiceType, TMsvId aDestination, * TInt aTypeList, TUid aMtm) * * calls CreateNewL(aService, aTarget, aTypeList, KUidMsgTypeSMTP); */ TMsvId CreateNewL(TMsvId aService, TMsvId aTarget, TInt aTypeList); /** * inline * @return a pointer to Mail Central Repository handler. * Ownership not transferred. */ CMailCRHandler* MailCRHandler() const; /** * Creates new message. * A new message of given type is created in a destination folder. * @param aServiceType service used for sending message * @param aTarget folder in which message will be saved eg. * KMsvDraftEntryIdValue * @param aTypeList type of message to be created. * @see TMsvEmailTypeList * @param aMtm, message type to be created e.g. KUidMsgTypeSMTP * @return ID of mail operation. */ IMPORT_C TMsvId CreateNewL(TMsvId aServiceType, TMsvId aTarget, TInt aTypeList, TUid aMtm); /** * Creates new message entry. * @return new message ID. */ TMsvId CreateNewEntryL( TMsvEmailEntry& aEntry ); /** * Returns a preferences object of the document. * @return A preference object. */ CMsgMailPreferences& SendOptions() const; /** * Sets iConfNote flag according to parameter. * @param aConfNote value to set. */ void SetConfirmation(TBool aConfNote); /** * Checks if confirmation note needs to be shown to user. * @return ETrue if note is needed. */ TBool ShowConfirmation() const; /** * Save iHeader information to current store. */ void SaveHeaderToStoreL(); /** * Check if we are dealing with a SyncML mail * @deprecated * @returns EFalse. */ IMPORT_C TBool IsSyncMLMail(); /** * Check file mime type * @param aFile file to be checked. * @return TDataType mime type of a file. */ IMPORT_C TDataType ResolveMimeType( RFile aFile ); /** * Informs the model of updated central repository value * Integer override * @param aMessageType The index of entry. * @param aValue Received value */ TInt SetReceivedIntL( const TUint aMessageType, const TInt aValue ); /** * Informs the model of updated central repository value * Real override * @param aMessageType The index of entry. * @param aValue Received value */ TInt SetReceivedRealL( const TUint aMessageType, const TReal aValue ); /** * Informs the model of updated central repository value * Binary override * @param aMessageType The index of entry. * @param aValue Received value */ TInt SetReceivedBinaryL( const TUint aMessageType, const TDesC8 aValue ); /** * Informs the model of updated central repository value * String override * @param aMessageType The index of entry. * @param aValue Received value */ TInt SetReceivedStringL( const TUint aMessageType, const TDesC16 aValue ); /** * Check if we are below critical level. * @param aBytesToWrite bytes to be written. * @retur ETrue if critical level is not reached. */ TBool DiskSpaceBelowCriticalLevelL( TInt aBytesToWrite ); protected: // New functions /** * Constructor. * Initializes variables and calls parent class constructor. * @param aApp application object. */ IMPORT_C CMsgMailDocument(CEikApplication& aApp); public: // Functions from base classes /// From CMsgEditorDocument TMsvId DefaultMsgService() const; TMsvId DefaultMsgFolder() const; TMsvId CreateNewL(TMsvId aService, TMsvId aTarget); protected: // Functions from base classes /// From CMsgEditorDocument IMPORT_C void EntryChangedL(); IMPORT_C CMsvOperation* CreateReplyL( TMsvId aDest, TMsvPartList aParts, TRequestStatus& aStatus ); IMPORT_C CMsvOperation* CreateForwardL( TMsvId aDest, TMsvPartList aParts, TRequestStatus& aStatus ); private: // implementation void AddAttachmentNamesToMessageBodyL( const TDesC& aString ); HBufC* GetAttachmentNamesFromMessageL( CImEmailMessage* aMailMessage ); TBool IsPlainHTMLMessageL( CImEmailMessage* aMailMessage ); static TInt ShowHtmlNoteCallBackL( TAny* aCaller ); protected: // Data /// Own: Message proferences CMsgMailPreferences* iPrefs; // Ref: Mail message CMailMessage* iViewedMessage; // Own: message centry CMsvEntry* iMessageCEntry; // original message id TMsvId iMessageID; // Ref: Mail CR handler CMailCRHandler* iMailCRHandler; private: // Data /// Own: Mail message CImEmailMessage* iMessage; /// Own: Message header CImHeader* iHeader; /** * iConfNote flag telling if user needs to be informed * when attachment added. */ TBool iConfNote; // AP session RApaLsSession iApaSession; //own CIdle* iIdle; /** * iShowNoteCallBack is used to show * html note to user with some delay. */ TCallBack iShowNoteCallBack; };#include "MsgMailDocument.inl" // Inline functions#endif // MSGMAILDOCUMENT_H// End of File