williamr@2: /* williamr@2: * Copyright (c) 2002-2006 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: Encapsulates the message data for sending services. williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: #ifndef C_MESSAGEDATA_H williamr@2: #define C_MESSAGEDATA_H williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include "CMessageAddress.h" williamr@2: williamr@2: class MDesC16Array; williamr@2: class CRichText; williamr@2: class CMessageDataImpl; williamr@2: williamr@2: /** williamr@2: * Encapsulates the message data for sending services. williamr@2: * williamr@2: * Encapsulates the message data for sending services. Class supports williamr@2: * externalazation and internalization, which are used to relay message williamr@2: * to SendUI server application. williamr@2: * williamr@2: * @lib sendui williamr@2: * @since S60 v3.0 williamr@2: */ williamr@2: class CMessageData : public CBase williamr@2: { williamr@2: public: // Constructors and destructor williamr@2: williamr@2: /** williamr@2: * Two-phased constructor. williamr@2: * williamr@2: * @return Pointer to object of CMessageData. williamr@2: */ williamr@2: IMPORT_C static CMessageData* NewL(); williamr@2: williamr@2: /** williamr@2: * Two-phased constructor. williamr@2: * williamr@2: * @return Pointer to object of CMessageData. williamr@2: */ williamr@2: IMPORT_C static CMessageData* NewLC(); williamr@2: williamr@2: /** williamr@2: * Destructor. williamr@2: */ williamr@2: IMPORT_C virtual ~CMessageData(); williamr@2: williamr@2: public: // New functions williamr@2: williamr@2: /** williamr@2: * Set message subject. williamr@2: * williamr@2: * @since Series 60 3.0 williamr@2: * @param aSubject Sets message subject. Does not take ownership. williamr@2: * @return None. williamr@2: */ williamr@2: IMPORT_C void SetSubjectL( const TDesC* aSubject ); williamr@2: williamr@2: /** williamr@2: * Returns message subject. williamr@2: * williamr@2: * @since Series 60 3.0 williamr@2: * @return Message subject. williamr@2: */ williamr@2: IMPORT_C const TPtrC Subject() const; williamr@2: williamr@2: /** williamr@2: * Appends attachment file path to the array of attachment file paths. Only a link williamr@2: * to the attachment is stored and compared to AppendAttachmentHandleL less resources williamr@2: * is used during the send operation. williamr@2: * williamr@2: * NOTE: Do not add any temporary files as an attachment. Always use williamr@2: * AppendAttachmentHandleL for temporary files. williamr@2: * williamr@2: * @since Series 60 3.0 williamr@2: * @param aFilePath File path of the attachment. williamr@2: * williamr@2: * @return None. williamr@2: */ williamr@2: IMPORT_C void AppendAttachmentL( const TDesC& aFilePath ); williamr@2: williamr@2: /** williamr@2: * Returns the array of attachment file paths. williamr@2: * williamr@2: * @since Series 60 3.0 williamr@2: * @return Array of attachment file paths. williamr@2: */ williamr@2: IMPORT_C const CDesCArray& AttachmentArray() const; williamr@2: williamr@2: /** williamr@2: * Clears the array of attachment file paths. williamr@2: * williamr@2: * @since Series 60 3.0 williamr@2: * @return Array of attachment file paths. williamr@2: */ williamr@2: IMPORT_C void ClearAttachmentArray(); williamr@2: williamr@2: /** williamr@2: * Encapsulates address and alias to CMessageAddress and adds to array. williamr@2: * williamr@2: * @since Series 60 3.0 williamr@2: * @param aAddress Real address. williamr@2: * @param aAlias Alias for the real address. williamr@2: * @return None. williamr@2: */ williamr@2: IMPORT_C void AppendToAddressL( williamr@2: const TDesC& aAddress, williamr@2: const TDesC& aAlias = KNullDesC); williamr@2: williamr@2: /** williamr@2: * Returns array of addresses and aliases. williamr@2: * williamr@2: * @since Series 60 3.0 williamr@2: * @return Array of addresses and aliases. williamr@2: */ williamr@2: IMPORT_C const CMessageAddressArray& ToAddressArray() const; williamr@2: williamr@2: /** williamr@2: * Encapsulates CC address and alias to CMessageAddress and adds to williamr@2: * array. williamr@2: * williamr@2: * @since Series 60 3.0 williamr@2: * @param aCcAddress Real CC-address. williamr@2: * @param aCcAlias Alias for the real CC-address. williamr@2: * @return None. williamr@2: */ williamr@2: IMPORT_C void AppendCcAddressL( williamr@2: const TDesC& aCcAddress, williamr@2: const TDesC& aCcAlias = KNullDesC); williamr@2: williamr@2: /** williamr@2: * Returns array of CC addresses and aliases. williamr@2: * williamr@2: * @since Series 60 3.0 williamr@2: * @return Array of cc addresses and aliases. williamr@2: */ williamr@2: IMPORT_C const CMessageAddressArray& CcAddressArray() const; williamr@2: williamr@2: /** williamr@2: * Encapsulates Bcc address and alias to CMessageAddress and adds to williamr@2: * array. williamr@2: * williamr@2: * @since Series 60 3.0 williamr@2: * @param aBccAddress Real Bcc-address. williamr@2: * @param aBccAlias Alias for the real Bcc-address. williamr@2: * @return None. williamr@2: */ williamr@2: IMPORT_C void AppendBccAddressL( williamr@2: const TDesC& aBccAddress, williamr@2: const TDesC& aBccAlias = KNullDesC); williamr@2: williamr@2: /** williamr@2: * Returns array of Bcc addresses and aliases. williamr@2: * williamr@2: * @since Series 60 3.0 williamr@2: * @return Array of Bcc addresses and aliases. williamr@2: */ williamr@2: IMPORT_C const CMessageAddressArray& BccAddressArray() const; williamr@2: williamr@2: /** williamr@2: * Set message body text. williamr@2: * williamr@2: * @since Series 60 3.0 williamr@2: * @param aBodyText Message body text. williamr@2: * @return None. williamr@2: */ williamr@2: IMPORT_C void SetBodyTextL( const CRichText* aBodyText ); williamr@2: williamr@2: /** williamr@2: * Returns message body text. williamr@2: * williamr@2: * @since Series 60 3.0 williamr@2: * @return Message body text. williamr@2: */ williamr@2: IMPORT_C const CRichText* BodyText() const; williamr@2: williamr@2: /** williamr@2: * Appends attachment handle to the array of attachment handles. williamr@2: * williamr@2: * NOTE: Attachment handles should be opened using ShareProtected() williamr@2: * file session, otherwise handles can not be transfered through williamr@2: * client-server interface. williamr@2: * williamr@2: * NOTE: When adding a temporary file as an attachment, always use this method, williamr@2: * williamr@2: * @since Series 60 3.0 williamr@2: * @param aFileHandle File handle of the attachment. williamr@2: * @return None. williamr@2: */ williamr@2: IMPORT_C void AppendAttachmentHandleL( const RFile& aFileHandle ); williamr@2: williamr@2: /** williamr@2: * Returns the array of attachment handles. williamr@2: * williamr@2: * @since Series 60 3.0 williamr@2: * @return Array of attachment handles. williamr@2: */ williamr@2: IMPORT_C const RArray& AttachmentHandleArray() const; williamr@2: williamr@2: /** williamr@2: * Returns data type id. williamr@2: * williamr@2: * This can be used for interpreting the opaque data. williamr@2: * @since Series 60 3.0 williamr@2: * @return Data type id. williamr@2: */ williamr@2: IMPORT_C TUid DataType() const; williamr@2: williamr@2: /** williamr@2: * Clears all addressee arrays. williamr@2: * williamr@2: * @since Series 60 3.0 williamr@2: * @return None. williamr@2: */ williamr@2: IMPORT_C void ClearAddresses(); williamr@2: williamr@2: /** williamr@2: * Externalizes message data to a stream williamr@2: * williamr@2: * @since Series 60 3.2 williamr@2: * @return None. williamr@2: */ williamr@2: williamr@2: IMPORT_C void ExternalizeL( RWriteStream& aStream ) const; williamr@2: williamr@2: /** williamr@2: * Internalizes message data to from a stream williamr@2: * williamr@2: * @since Series 60 3.2 williamr@2: * @return None. williamr@2: */ williamr@2: IMPORT_C void InternalizeL( RReadStream& aStream ); williamr@2: williamr@2: /** williamr@2: * Set opaque data williamr@2: * williamr@2: * @since Series 60 3.2 williamr@2: * @param aData Opaque data. williamr@2: * @param aDataType, Identifier for the opaque data. williamr@2: * @return None. williamr@2: */ williamr@2: IMPORT_C void SetOpaqueDataL( const TDesC8* aData, TUid aDataType ); williamr@2: williamr@2: /** williamr@2: * Get opaque data williamr@2: * williamr@2: * @since Series 60 3.2 williamr@2: * @return aData Opaque data. williamr@2: */ williamr@2: IMPORT_C const TPtrC8 OpaqueData() const; williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * C++ default constructor. williamr@2: */ williamr@2: IMPORT_C CMessageData(); williamr@2: williamr@2: /** williamr@2: * By default Symbian 2nd phase constructor is private. williamr@2: */ williamr@2: IMPORT_C void ConstructL(); williamr@2: williamr@2: protected: // Data williamr@2: williamr@2: /** williamr@2: * Data type of this message. Normally this is KSenduiMsgDataBase williamr@2: * This can be used for interpreting the opaque data. williamr@2: */ williamr@2: TUid iDataType; williamr@2: williamr@2: private: // Data williamr@2: williamr@2: /** williamr@2: * Message data implementation. williamr@2: * Owned. williamr@2: */ williamr@2: CMessageDataImpl* iMessageDataImpl; williamr@2: williamr@2: /** williamr@2: * Reserved. williamr@2: */ williamr@2: TAny* iReserved1; williamr@2: TAny* iReserved2; williamr@2: TAny* iReserved3; williamr@2: TAny* iReserved4; williamr@2: TAny* iReserved5; williamr@2: RArray iReserved6; williamr@2: williamr@2: }; williamr@2: williamr@2: #endif // C_MESSAGEDATA_H williamr@2: williamr@2: // End of File williamr@2: