--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/mmsheaders.h Tue Aug 31 15:11:31 2010 +0300
@@ -0,0 +1,1229 @@
+/*
+* Copyright (c) 2002 - 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: mmsheaders declaration
+*
+*/
+
+
+
+#ifndef CMMSHEADERS_H
+#define CMMSHEADERS_H
+
+// INCLUDES
+#include <e32base.h>
+#include <badesca.h>
+#include <mtclbase.h> // TMsvPartList
+#include "mmsconst.h"
+#include "mmsgenutils.h"
+#include "mmssendingchain.h"
+#include "mmsdeleteresultarray.h"
+
+// CONSTANTS
+// Maximum size for Multimedia message field string value.
+const TInt KMaxHeaderStringLength = 1000;
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class CMmsSettings;
+class CMmsElementDescriptor;
+class CMmsMMBoxMessageHeaders;
+class CMmsMMBoxViewHeaders;
+
+// CLASS DECLARATION
+
+/**
+* This class provides access to MMS specific header data.
+* The class can be used from both Client MTM and Server MTM.
+*/
+class CMmsHeaders:public CBase
+ {
+ public: // Constructors and destructor
+
+// <DEPRECATED>
+ /**
+ * Two-phased constructor.
+ * This is a legacy function and sets the default mms version
+ * to a hard coded value.
+ * All client should use the NewL version that gives the version
+ * as parameter. The version value should come form CMmsSettings class
+ */
+ IMPORT_C static CMmsHeaders* NewL();
+// </DEPRECATED>
+
+ /**
+ * Two-phased constructor.
+ * @param aMmsVersion The version of MMS encapsulation that should be
+ * used unless the actual message contains some other value
+ */
+ IMPORT_C static CMmsHeaders* NewL( TInt16 aMmsVersion );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CMmsHeaders();
+
+ public: // New functions
+
+ /**
+ * Reset.
+ * @param aSettings MMS settings to be used for initial values. Can be NULL.
+ */
+ IMPORT_C void Reset( CMmsSettings* aSettings = NULL);
+
+ /**
+ * Internalize the headers.
+ * @param aStore CMsvStore
+ */
+ IMPORT_C void RestoreL( CMsvStore& aStore );
+
+ /**
+ * Externalize the headers.
+ * Caller must commit the store to allow several store operations
+ * before committing the store
+ * @param aStore CMsvStore in edit mode.
+ */
+ IMPORT_C void StoreL( CMsvStore& aStore );
+
+ /**
+ * Subject mutator. Note that Client MTM should update explicitly
+ * TMsvEntry.iDescription too.
+ * @param aSubject subject string,
+ */
+ IMPORT_C void SetSubjectL( const TDesC& aSubject );
+
+ /**
+ * Subject accessor.
+ * @return Subject string.
+ */
+ IMPORT_C TPtrC Subject() const;
+
+ /**
+ * Returns recipients that are of specified type (To, Cc, Bcc).
+ * @param aType specifies recipient type (types defined in MMSCONST.H)
+ * @return array of recipient addresses.
+ */
+ IMPORT_C const CDesCArray& TypedAddresseeList( TMmsRecipients aType );
+
+ /**
+ * Adds recipient with specified type (To, Cc, Bcc).<br>
+ * This function also adds all recipients into the internal list <br>
+ * that contains all addressees regardless of addressee type.<br>
+ * @param aRealAddress recipient address.
+ * @param aType specifies recipient type (types defined in MMSCONST.H)
+ */
+ IMPORT_C void AddTypedAddresseeL( const TDesC& aRealAddress,
+ TMmsRecipients aType );
+
+ /**
+ * Remove a given address from the right typed list.
+ * @param aRealAddress recipient address.
+ * @return ETrue is address is found and deleted.
+ */
+ IMPORT_C TBool RemoveAddressee( const TDesC& aRealAddress );
+
+ /**
+ * Sender mutator
+ * @param aAlias
+ */
+ IMPORT_C void SetSenderL( const TDesC& aAlias );
+
+ /**
+ * Sender accessor
+ * @return Real address of sender (for example phone number). <br>
+ * Alias can be searched from contacts database.
+ */
+ IMPORT_C TPtrC Sender() const;
+
+ /**
+ * Message class accessor
+ * @return Message class: Personal/Advertisement/Informational. <br>
+ * values defined in MMSCONST.H
+ */
+ inline TInt MessageClass() const;
+
+ /**
+ * Message class mutator
+ * values defined in MMSCONST.H
+ */
+ inline void SetMessageClass( TInt aClass );
+
+ /**
+ * Expiration interval mutator
+ * @param aInterval The length of time after which the message
+ * is discarded by MMSC. Expressed in seconds.
+ */
+ IMPORT_C void SetExpiryInterval( TInt aInterval );
+
+ /**
+ * Expiration interval accessor.
+ * @return Storage time of the message in MMSC (in seconds).
+ */
+ IMPORT_C TInt ExpiryInterval();
+
+ /**
+ * Expiration date mutator.
+ * @param aDate The date and time the message will expire in seconds from 1970-01-01.
+ * Date must be in UTC time zone
+ */
+ IMPORT_C void SetExpiryDate( TInt64 aDate );
+
+ /**
+ * Expiration date accessor.
+ * @return The date and time the message will expire in seconds from 1970-01-01.
+ * Date will be in UTC time zone
+ */
+ IMPORT_C TInt64 ExpiryDate();
+
+ /**
+ * Delivery time interval mutator.
+ * @param aInterval The length of time after which the message will<br>
+ * be delivered to the recipient by the MMSC.<br>
+ * Expressed in seconds.
+ */
+ IMPORT_C void SetDeliveryTimeInterval( TInt aInterval );
+
+ /**
+ * Delivery time interval accessor.
+ * @return delivery time interval of the message (in seconds).
+ */
+ IMPORT_C TInt DeliveryTimeInterval();
+
+ /**
+ * Delivery date mutator.
+ * @param aDate The date and time the message will be delivered <br>
+ * to the recipient by the MMSC in seconds from 1970-01-01.
+ * Date must be in UTC time zone
+ */
+ IMPORT_C void SetDeliveryDate( TInt64 aDate );
+
+ /**
+ * Delivery date accessor.
+ * @return The date and time the message will be delivered to the
+ * recipient by the MMSC in seconds from 1970-01-01.
+ * Date will be in UTC time zone
+ */
+ IMPORT_C TInt64 DeliveryDate();
+
+ /**
+ * Message priority mutator (Low/Normal/High). Default: Normal.
+ * @param aPriority Message priority, values defined in MMSCONST.H
+ */
+ inline void SetMessagePriority( TInt aPriority );
+
+ /**
+ * Message priority accessor.
+ * @return Message priority, values defined in MMSCONST.H
+ */
+ inline TInt MessagePriority() const;
+
+ /**
+ * Sender visibility mutator.
+ * @param aVisibility Hide or Show (values defined in MMSCONST.H)
+ */
+ inline void SetSenderVisibility( TInt aVisibility );
+
+ /**
+ * Sender visibility accessor.
+ * @return Hide or Show (values defined in MMSCONST.H)
+ */
+ inline TInt SenderVisibility();
+
+ /**
+ * Delivery Report Request mutator.
+ * @param aRequest Yes or No (values defined in MMSCONST.H)
+ */
+ inline void SetDeliveryReport( TInt aRequest );
+
+ /**
+ * Delivery Report Request accessor.
+ * @return Yes or No (values defined in MMSCONST.H)
+ */
+ inline TInt DeliveryReport();
+
+ /**
+ * Read Reply Request mutator.
+ * @param aRequest Yes or No (values defined in MMSCONST.H)
+ */
+ inline void SetReadReply( TInt aRequest );
+
+ /**
+ * Read Reply Request accessor.
+ * @return Yes or No (values defined in MMSCONST.H)
+ */
+ inline TInt ReadReply();
+
+ /**
+ * Message root part mutator.
+ * @param aId Id of the message part that should be displayed
+ * first.<br>
+ * Should point to the SMIL part that starts the message display.
+ */
+ inline void SetMessageRoot( const TMsvAttachmentId aId );
+
+ /**
+ * Message root part accessor.
+ * @return Id of the message part that should be displayed
+ * first.<br>
+ * Should point to the SMIL part that starts the message display.
+ */
+ inline TMsvAttachmentId MessageRoot( ) const;
+
+ /**
+ * Give const access to the "To" recipient list
+ * @return recipient list
+ */
+ inline const CDesCArray& ToRecipients() const;
+
+ /**
+ * Give const access to the "Cc" recipient list
+ * @return recipient list
+ */
+ inline const CDesCArray& CcRecipients() const;
+
+ /**
+ * Give const access to the "Bcc" recipient list
+ * @return recipient list
+ */
+ inline const CDesCArray& BccRecipients() const;
+
+ /**
+ * Content-Location mutator. Used in a Message Notification.
+ * @param aURL URL of the message.
+ */
+ IMPORT_C void SetContentLocationL( const TDesC8& aURL );
+
+ /**
+ * Content-Location accessor. Used in a Message Notification.
+ * @return URL of the message
+ */
+ IMPORT_C TPtrC8 ContentLocation() const;
+
+ /**
+ * Set Message-Size header.
+ * @param aSize Message-Size in bytes. Used in a Message Notification.
+ */
+ inline void SetMessageSize( TInt aSize );
+
+ /**
+ * Get Message-Size. Used in a Message Notification.
+ * @return Message-Size in bytes.
+ */
+ inline TInt MessageSize() const;
+
+ /**
+ * Size of the MMS headers object in memory.
+ * The multipart objet size is not included.
+ * @return object size
+ */
+ IMPORT_C TInt Size() const;
+
+ /**
+ * Set Transaction-ID
+ * @param aCid transaction ID
+ */
+ IMPORT_C void SetTidL( const TDesC8& aCid );
+
+ /**
+ * Get Transcation-ID
+ * @return transaction id
+ */
+ IMPORT_C TPtrC8 Tid() const;
+
+ /**
+ * Set Message-Type
+ * @param aType message type
+ */
+ inline void SetMessageType( TInt aType );
+
+ /**
+ * Get Message-Type
+ * @return message type.
+ */
+ inline TInt MessageType();
+
+ /**
+ * Set MMS-Version
+ * @param aVersion MMS version
+ */
+ inline void SetMmsVersion( TInt16 aVersion );
+
+ /**
+ * Get MMS-Version
+ * @return MMS-Version
+ */
+ inline TInt16 MmsVersion();
+
+ /**
+ * Set Date
+ * @param aTime seconds from 1.1. 1970
+ * Date must be in UTC time zone
+ */
+ inline void SetDate( TInt64 aTime );
+
+ /**
+ * Get Date
+ * @return seconds from 1.1. 1970
+ * Date will be in UTC time zone
+ */
+ inline TInt64 Date();
+
+ /**
+ * Report-Allowed accessor
+ * @return Report-Allowed field value
+ */
+ inline TInt32 ReportAllowed() const;
+
+ /**
+ * Report-Allowed mutator
+ * @param aValue Report-Allowed value
+ */
+ inline void SetReportAllowed( TInt32 aValue );
+
+ /**
+ * Response-Status accessor
+ * @return Response-Status field value
+ */
+ inline TInt32 ResponseStatus() const;
+
+ /**
+ * Response-Status mutator
+ * @param aValue Response-Status value
+ */
+ inline void SetResponseStatus( TInt32 aValue );
+
+ /**
+ * Message-ID mutator
+ * @param aID Message-ID
+ */
+ IMPORT_C void SetMessageIdL( const TDesC8& aId );
+
+ /**
+ * Message-ID accessor
+ * @return Message-ID
+ */
+ IMPORT_C TPtrC8 MessageId() const;
+
+ /**
+ * Status mutator
+ * @param aStatus status value. See mmsconst.h.
+ */
+ inline void SetStatus( const TInt aStatus );
+
+ /**
+ * Status accessor
+ * @return status value. See mmsconst.h.
+ */
+ inline TInt Status() const;
+
+ // DEPRECATED
+ // Legacy function, new version needs RFs (file system handle)
+ /**
+ * Make a copy of MmsHeaders
+ * @param aParts message part list
+ * @param aReply if the new message is a reply message. This has meaning
+ * for recipient handling.
+ * @return MmsHeader object
+ */
+ IMPORT_C CMmsHeaders* CopyL(
+ TMsvPartList aParts,
+ TBool aReply );
+
+ /**
+ * Set initial setting values from service settings
+ * @param aSettings MMS service settings. Optional.
+ */
+ IMPORT_C void SetSettings(
+ CMmsSettings* aSettings);
+
+ /**
+ * Maximum image size mutator.
+ * @param aWidth image width
+ * @param aHeight image height
+ */
+ IMPORT_C void SetMaximumImage( TInt aWidth, TInt aHeight );
+
+ /**
+ * Maximum image size accessor.
+ * @param aWidth image width (OUT)
+ * @param aHeight image height (OUT)
+ */
+ IMPORT_C void GetMaximumImage( TInt& aWidth, TInt& aHeight ) const;
+
+ /**
+ * Root Content-ID mutator.
+ * @param aID Content-ID for message presentation part
+ */
+ IMPORT_C void SetRootContentIdL( const TDesC8& aId );
+
+ /**
+ * Root Content-ID accessor.
+ * @return Content-ID for message presentation part
+ */
+ IMPORT_C TPtrC8 RootContentId() const;
+
+ // new for MMS encapsulation version 1.1
+ /**
+ * Read status mutator.
+ * @param aReadStatus status value. See mmsconst.h.
+ */
+ inline void SetReadStatus( const TInt aReadStatus );
+
+ /**
+ * Read status accessor.
+ * @return Read status field value.
+ */
+ inline TInt ReadStatus() const;
+
+ /**
+ * ReplyCharging mutator.
+ * @param aReplyCharging value. See mmsconst.h
+ */
+ inline void SetReplyCharging( const TInt aReplyCharging );
+
+ /**
+ * ReplyCharging accessor.
+ * @return ReplyCharging status field
+ */
+ inline TInt ReplyCharging() const;
+
+ /**
+ * ReplyChargingSize mutator.
+ * @param aReplyChargingSize maximum size of message for which
+ * reply charging applies.
+ */
+ inline void SetReplyChargingSize( const TInt aReplyChargingSize );
+
+ /**
+ * ReplyChargingSize accessor.
+ * @return maximum size of message for which reply charging applies.
+ */
+ inline TInt ReplyChargingSize() const;
+
+ /**
+ * ReplyChargingID mutator.
+ * @param aId original message ID to which this is a reply to
+ */
+ IMPORT_C void SetReplyChargingIdL( const TDesC8& aId );
+
+ /**
+ * ReplyChargingId accessor.
+ * @return original message ID to which this is a reply to
+ */
+ IMPORT_C TPtrC8 ReplyChargingId() const;
+
+ /**
+ * ReplyCharging interval mutator.
+ * @param aInterval The length of time during which the sender
+ * pays charges for reply. Expressed in seconds.
+ */
+ IMPORT_C void SetReplyChargingInterval( TInt aInterval );
+
+ /**
+ * ReplyCharging interval accessor.
+ * @return The length of time during which the sender
+ * pays charges for reply. Expressed in seconds.
+ */
+ IMPORT_C TInt ReplyChargingInterval();
+
+ /**
+ * ReplyCharging date mutator.
+ * @param aDate The date and time until which the sender pays charges
+ * for reply in seconds from 1970-01-01.
+ * Date must be in UTC time zone
+ */
+ IMPORT_C void SetReplyChargingDate( TInt64 aDate );
+
+ /**
+ * ReplyCharging date accessor.
+ * @return The date and time until which the sender pays charges for reply
+ * in seconds from 1970-01-01.
+ * Date will be in UTC time zone
+ */
+ IMPORT_C TInt64 ReplyChargingDate();
+
+ /*
+ * Insert previous sender.
+ * If corresponding entry is found, just insert sender to entry,
+ * otherwise create new CMmsSendingChain item and insert it into array
+ * @param aOrder the order number of the sending event
+ * @param aSender the previous sender.
+ */
+ IMPORT_C void InsertPreviouslySentByL( TInt aOrder, const TDesC& aSender );
+
+ /*
+ * Insert previous sending date.
+ * If corresponding entry is found, just inseret date to entry,
+ * otherwise create new CMmsSendingChain item and insert it into array
+ * @param aOrder the order number of the sending event
+ * @param aDate the previous sending date, seconds from 1.1.1970 (UTC time).
+ */
+ IMPORT_C void InsertPreviouslySentDateL( TInt aOrder, TInt64 aDate );
+
+ /*
+ * Append new item to previously sent list
+ * @param aDate the previous sending date, seconds from 1.1.1970 (UTC time).
+ * @param aSender the previous sender.
+ */
+ IMPORT_C void AppendPreviouslySentItemL( TInt64 aDate, const TDesC& aSender );
+
+ /*
+ * Accessor to previously sent chain for looking at the content.
+ * The items should normally be accessed in sequential order by outsiders.
+ * @return reference to the sending chain array.
+ */
+ inline const RPointerArray<CMmsSendingChain>& PreviouslySentList();
+
+ /**
+ * Response text mutator.
+ * Same string is used for Response text, Retrieve text and Status text
+ * as all strings are information messages coming in from the MMSC and
+ * only one of them can be present in any PDU
+ * @param aText Response text string
+ */
+ IMPORT_C void SetResponseTextL( const TDesC& aText );
+
+ /**
+ * Response text accessor.
+ * Same string is used for Response text, Retrieve text and Status text
+ * as all strings are information messages coming in from the MMSC and
+ * only one of them can be present in any PDU
+ * @return Response text string.
+ */
+ IMPORT_C TPtrC ResponseText() const;
+
+ /**
+ * Creates a ContentId to be used in mime headers
+ * @param aCid the created contentId (OUT)
+ * The caller must reserve a buffer that is at least 12 bytes long
+ * ( 10 bytes for a 32 bit integer converted to a string + angle brackets )
+ */
+ IMPORT_C static void CreateContentId( TDes8& aCid );
+
+ /**
+ * Distribution indicator accessor
+ * @since 2.6
+ * @return X-Mms-DistributionIndicator value KMmsYes/KMmsNo
+ */
+ inline TInt DistributionIndicator() const;
+
+ /**
+ * Distribution indicator mutator
+ * @since 2.6
+ * @param aDistributionIndicator X-Mms-DistributionIndicator value KMmsYes/KMmsNo
+ */
+ inline void SetDistributionIndicator( const TInt aDistributionIndicator );
+
+ /**
+ * Related entry accessor
+ * @since 2.6
+ * @return Id of an entry that is connected to this one by some relationship
+ * For example original notification entry in case of forward without retrieval
+ */
+ inline TMsvId RelatedEntry() const;
+
+ /**
+ * Related entry mutator
+ * @since 2.6
+ * @param aRelatedEntry Id of an entry that is connected to this one by some relationship
+ */
+ inline void SetRelatedEntry( const TMsvId aRelatedEntry );
+
+ /**
+ * Multipart type accessor
+ * @since 2.6
+ * @return type of multipart data saved to this entry (WSP assigned number)
+ * 0 = unknown or not defined
+ */
+ inline TInt MultipartType() const;
+
+ /**
+ * Multipart type mutator
+ * @since 2.6
+ * @param aMultipartType type of multipart data saved to this entry (WSP assigned number)
+ */
+ inline void SetMultipartType( const TInt aMultipartType );
+
+ // Read only accessors should be used when one must determine if data exists.
+ // Editable accessors should be used when data will be stored to the members
+ // No mutators are defined, these members are fully under control of CMmsHeaders
+
+ /**
+ * Element descriptor accessor for read only usage.
+ * @since 2.6
+ * @return pointer to element descriptor member for read only access.
+ * If no data has been defined for element descriptor, returns NULL.
+ */
+ inline const CMmsElementDescriptor* ReadOnlyElementDescriptor() const;
+
+ /**
+ * MMBox message headers accessor for read only usage
+ * @since 2.6
+ * @return pointer to MMBox message headers member for read only access.
+ * If no data has been defined for MMBox message headers, returns NULL.
+ */
+ inline const CMmsMMBoxMessageHeaders* ReadOnlyMMBoxMessageHeaders() const;
+
+ /**
+ * MMBox view headers accessor for read only usage
+ * @since 2.6
+ * @return pointer to MMBox view headers member for read only access.
+ * If no data has been defined for MMBox view headers, returns NULL.
+ */
+ inline const CMmsMMBoxViewHeaders* ReadOnlyMMBoxViewHeaders() const;
+
+ /**
+ * Element descriptor accessor for edit usage.
+ * @since 2.6
+ * @return reference to element descriptor member for edit access.
+ * If member pointer does not exist, it is created.
+ * This function must be used when data is to be added to CMmsElementDescriptor.
+ */
+ IMPORT_C CMmsElementDescriptor& ElementDescriptorL();
+
+ /**
+ * MMBox message headers accessor for edit usage
+ * @since 2.6
+ * @return reference to MMBox message headers member for edit access.
+ * If member pointer does not exist, it is created.
+ * This function must be used when data is to be added to CMmsMMBoxMessageHeaders.
+ */
+ IMPORT_C CMmsMMBoxMessageHeaders& MMBoxMessageHeadersL();
+
+ /**
+ * MMBox view headers accessor for edit usage
+ * @since 2.6
+ * @return reference to MMBox view headers member for edit access.
+ * If member pointer does not exist, it is created.
+ * This function must be used when data is to be added to CMmsMMBoxViewHeaders.
+ */
+ IMPORT_C CMmsMMBoxViewHeaders& MMBoxViewHeadersL();
+
+ /**
+ * Extended Notification mutator.
+ * @since 2.6
+ * @param aText Extended notification text.
+ */
+ IMPORT_C void SetExtendedNotificationL( const TDesC& aText );
+
+ /**
+ * Extended Notification accessor.
+ * @since 2.6
+ * @return Extended notification text.
+ */
+ IMPORT_C TPtrC ExtendedNotification() const;
+
+ /**
+ * Message complete indicator mutator
+ * @since 2.6
+ * @param aExtensionStatus indicator that tells if the whole message fits into
+ * extension text string.
+ * 0x20 = Message body size > text, message retrieval uncomplete
+ * 0x30 = Message retrieval complete (whole message body in IExtendedNotificationText)
+ * other values reserved.
+ */
+ inline void SetMessageComplete( TInt aExtensionStatus );
+
+ /**
+ * Message complete indicator accessor.
+ * @since 2.6
+ * @return status that tells if the whole message fits into extension text string.
+ * 0x20 = Message body size > text, message retrieval uncomplete
+ * 0x30 = Message retrieval complete (whole message body in IExtendedNotificationText)
+ * other values reserved.
+ */
+ inline TInt MessageComplete();
+
+ /**
+ * Accessor to delete result array for looking at the content.
+ * The items should normally be accessed in sequential order by outsiders.
+ * @return reference to the delete result array.
+ */
+ inline const RPointerArray<CMmsDeleteResultArray>& DeleteResultArray();
+
+ /**
+ * Insert delete status.
+ * If corresponding entry is found, just insert delete status to entry,
+ * otherwise create new CMmsDeleteResultArray item and insert it into array
+ * @param aOrder the order number of the not deleted entry
+ * @param aStatus the previous sender.
+ */
+ IMPORT_C void InsertDeleteStatusL( TUint aOrder, const TInt32 aStatus );
+
+ /**
+ * Insert delete result content location.
+ * If corresponding entry is found, just insert content location to entry,
+ * otherwise create new CMmsDeleteResultArray item and insert it into array
+ * @param aOrder the order number of the not deleted entry
+ * @param aContentlocation content location.
+ */
+ IMPORT_C void InsertDeleteContentLocationL( TUint aOrder, const TDesC8& aContentLocation );
+
+ /**
+ * Insert delete result response text.
+ * If corresponding entry is found, just insert response text to entry,
+ * otherwise create new CMmsDeleteResultArray item and insert it into array
+ * @param aOrder the order number of the not deleted entry
+ * @param aResponseText content location.
+ */
+ IMPORT_C void InsertDeleteResponseTextL( TUint aOrder, const TDesC& aResposeText );
+
+ /**
+ * Save the time when the message was received.
+ * This header allows the iDate field in TMsvEntry to contain
+ * either the receiving time or the sending time. If the TMsvEntry
+ * shows the sending time, the receiving time can be accessed through
+ * this field.
+ * @param aTime time in UTC time zone when the message has been received.
+ */
+ inline void SetReceivingTime( TTime aTime );
+
+ /**
+ * The time the message was received in the terminal.
+ * @return Message receiving time
+ */
+ inline TTime ReceivingTime() const;
+
+ /**
+ * Identification of the destination application mutator.
+ * @param aApplicId application ID
+ */
+ IMPORT_C void SetApplicIdL( const TDesC16& aApplicId );
+
+ /**
+ * Identification of the destination application accessor.
+ * @return Application ID.
+ */
+ IMPORT_C TPtrC16 ApplicId() const;
+
+ /**
+ * Identification of an application to which replies are addressed mutator.
+ * @param aApplicId reply to application ID
+ */
+ IMPORT_C void SetReplyApplicIdL( const TDesC16& aApplicId );
+
+ /**
+ * Identification of an application to which replies are addressed accessor.
+ * @return Reply to Application ID.
+ */
+ IMPORT_C TPtrC16 ReplyApplicId() const;
+
+ /**
+ * Auxiliary application information for internal use of the destination
+ * application mutator.
+ * @param aAuxApplicInfo auxiliary application info
+ */
+ IMPORT_C void SetAuxApplicInfoL( const TDesC8& aAuxApplicInfo );
+
+ /**
+ * Auxiliary application information for internal use of the destination
+ * application accessor.
+ * @return auxiliary application info.
+ */
+ IMPORT_C TPtrC8 AuxApplicInfo() const;
+
+ /**
+ * Make a copy of MmsHeaders
+ *
+ * @since 3.1
+ * @param aParts message part list
+ * @param aReply if the new message is a reply message. This has meaning
+ * for recipient handling.
+ * @param aFs file system handle. Needed for alias handling
+ * @return MmsHeader object
+ */
+ IMPORT_C CMmsHeaders* CopyL(
+ TMsvPartList aParts,
+ TBool aReply,
+ RFs& aFs );
+
+ /**
+ * Set the content class of the message as specified in MMS encapsulation 1.3-
+ * @param aContentClass content class value from mmsconst.h
+ * - KMmsContentClassText
+ * - KMmsContentClassImageBasic
+ * - KMmsContentClassImageRich
+ * - KMmsContentClassVideoBasic
+ * - KMmsContentClassVideoRich
+ * - KMmsContentClassMegaPixel
+ * - KMmsContentClassContentBasic
+ * - KMmsContentClassContentRich
+ */
+ inline void SetContentClass( TInt aContentClass );
+
+ /**
+ * Return the content class value as specified in MMS encapsulation 1.3.
+ * @return Content class value
+ * - 0 content class not defined
+ * - KMmsContentClassText ... KMmsContentClassContentRich defined content class.
+ */
+ inline TInt ContentClass() const;
+
+ /**
+ * Set DRM Content indicator header.
+ * @param aDrmContent Messag has DRM content. Possible values:
+ * - KMmsYes
+ * - KMmsNo
+ */
+ inline void SetDrmContent( TInt aDrmContent );
+
+ /**
+ * Get DRM content indicator (encapsulation 1.3)
+ * @return DRM indicator header. Possible values:
+ * - KMmsYes
+ * - KMmsNo
+ */
+ inline TInt DrmContent() const;
+
+ /**
+ * Set the header that tells if MMSC is allowed to alter the message (make it smaller).
+ * @param aAdaptationAllowed Adaptation allowed header. Possible values:
+ * - KMmsYes
+ * - KMmsNo
+ */
+ inline void SetAdaptationAllowed( TInt aAdaptationAllowed );
+
+ /**
+ * Get header that tells if MMSC is allowed to alter the message (make it smaller).
+ * @return Adaptation allowed header. Possible values:
+ * - KMmsYes
+ * - KMmsNo
+ */
+ inline TInt AdaptationAllowed() const;
+
+ /**
+ * Set recommended retrieval mode.
+ * This header appears in a notification and may recommend manual retrieval.
+ * @param aRetrievalMode Suggested retrieval mode. Possible values
+ * - KMmsRecommendedRetrievalModeManual
+ */
+ inline void SetRecommendedRetrievalMode( TInt aRetrievalMode );
+
+ /**
+ * Get recommended retrieval mode
+ * This header appears in a notification and may recommend manual retrieval.
+ * @return Suggested retrieval mode. Possible values
+ * - KMmsRecommendedRetrievalModeManual
+ * 0 not defined
+ */
+ inline TInt RecommendedRetrievalMode() const;
+
+ /**
+ * Set explanation why retrival mode is recommended
+ * @param explanantion for recommended retrieval mode
+ */
+ IMPORT_C void SetRecommendedRetrievalModeTextL(
+ const TDesC16& aRecommendedRetrievalModeText );
+
+ /**
+ * Get explanation why retrival mode is recommended
+ * @return explanantion for recommended retrieval mode
+ */
+ IMPORT_C TPtrC16 RecommendedRetrievalModeText() const;
+
+ /**
+ * Set id of message to be replaced or cancelled
+ * @param id of message to be replaced or cancelled
+ */
+ IMPORT_C void SetReplaceCancelIdL( const TDesC8& aReplaceCancelId );
+
+ /**
+ * Get id of message to be replaced or cancelled
+ * @return id of message to be replaced or cancelled
+ */
+ IMPORT_C TPtrC8 ReplaceCancelId() const;
+
+ /**
+ * Set status of cancel operation
+ * @param aCancelStatus Status of cancel operation. Possible values:
+ * - KMmsCancelRequestSuccessfullyReceived
+ * - KMmsCancelRequestCorrupted
+ */
+ inline void SetCancelStatus( TInt aCancelStatus );
+
+ /**
+ * Get status of cancel operation
+ * @return aCancelStatus Status of cancel operation. Possible values:
+ * - KMmsCancelRequestSuccessfullyReceived
+ * - KMmsCancelRequestCorrupted
+ * 0 not defined
+ */
+ inline TInt CancelStatus() const;
+
+
+ public: // Functions from base classes
+
+
+ protected: // New functions
+
+
+ protected: // Functions from base classes
+
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CMmsHeaders();
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL( TInt16 aMmsDefaultVersion );
+
+ /**
+ * Internalize.
+ * @param aStream read stream
+ */
+ IMPORT_C void InternalizeL( RMsvReadStream& aStream );
+
+ /**
+ * Externalize.
+ * @param aStream write stream
+ */
+ IMPORT_C void ExternalizeL( RMsvWriteStream& aStream ) const;
+
+ /**
+ * Remove a addressee from a given addressee list.
+ * @param aList addressee list
+ * @param aAddress addressee to match
+ * @return ETrue if matched and deleted.
+ */
+ TBool RemoveAddressee(
+ CDesCArray& aList,
+ const TDesC& aAddress );
+
+ /**
+ * Externalize Array.
+ * @param anArray the array to be externalized
+ * @param aStream stream where to write.
+ */
+ void ExternalizeArrayL(
+ CDesC16Array& anArray,
+ RWriteStream& aStream ) const;
+
+ /**
+ * Internalize Array.
+ * @param anArray the array where to write data
+ * @param aStream a stream where to read data from
+ */
+ void InternalizeArrayL(
+ CDesC16Array& anArray,
+ RReadStream& aStream );
+
+ /**
+ * Copy addressee list from source headers
+ * @param aArray addressee list
+ * @param aType recipient lins type
+ * @param aExclude Address to be excluded from the list (sender)
+ * @param aFs file system handle
+ */
+ void CopyAddresseeListL(
+ const CDesCArray& aArray,
+ TMmsRecipients aType,
+ const TPtrC& aExclude,
+ RFs& aFs );
+
+ /**
+ * Generate aliased address from an address that may be pure or not <br>
+ * Caller must free buffer when no lenger needed
+ * @param aOriginalAddress original address may be pure or not
+ * @param aFs file system handle
+ * @return combined address in format: <br>
+ * alias<real_address>
+ */
+ HBufC* AliasedAddressL(
+ const TDesC& aOriginalAddress,
+ RFs& aFs );
+
+
+ /**
+ * Generate array of aliased addresses from an arrays of addresses
+ * that may be pure or not <br>
+ * Caller must free the array when no lenger needed
+ * @param aOriginalAddress array of original addresses, may be pure or not
+ * @return array of addresses in format: <br>
+ * alias<real_address>
+ */
+ CDesCArray* AliasedAddressL(
+ const CDesCArray& aOriginalAddress,
+ RFs& aFs );
+
+ /**
+ * Limit string size to maximum length
+ * @param aString input string
+ * @param aMaxSize maximum length of the string
+ */
+ static TPtrC8 LimitStringSize(const TPtrC8& aString, TInt aMaxSize);
+
+ /**
+ * Limit string size to maximum length
+ * @param aString input string
+ * @param aMaxSize maximum length of the string
+ */
+ static TPtrC16 LimitStringSize(const TPtrC16& aString, TInt aMaxSize);
+
+
+
+ public: // Data
+
+ protected: // Data
+
+ private: // Data
+ TInt32 iMsgType; // Message-Type;
+ HBufC8* iTID; // Transaction ID
+ TInt16 iVersion; // MMS-version
+ TInt64 iDate; // Date
+
+ CDesCArray* iToArray; // TO headers
+ CDesCArray* iCcArray; // Cc headers
+ CDesCArray* iBccArray; // Bcc headers
+ HBufC* iSender; // From header
+
+ HBufC* iSubject; // Subject
+
+ TInt32 iMsgClass; // Message-Class
+
+ TInt64 iExpiry; // Expiry
+ TBool iExpiryAbs; // Is the iExpiry time absolute time
+ TInt64 iDelivery; // Delivery
+ TBool iDeliveryAbs; // Is iDelivery absolute time
+ TInt32 iPriority; // Priority
+ TInt32 iSenderVisi; // Sender-Visibility
+ TInt32 iDelivReport; // Delivery-Report
+ TInt32 iReadReply; // Read-Reply
+
+ TMsvAttachmentId iStart; // root part of the message
+
+ HBufC8* iContentLocation; // Content-Location
+ TUint32 iMessageSize; // Message-Size
+
+ TInt32 iReportAllowed; // Report-Allowed
+ TInt32 iResponseStatus; // Response-Status
+ HBufC8* iMessageId; // Message-ID
+
+ TInt32 iStatus; // Status
+
+ TInt32 iMaxImageHeight; // maximum image height
+ TInt32 iMaxImageWidth; // maximum image width
+
+ HBufC* iOperatorResponseText; // Operator response in send-conf or retrieve-conf
+ HBufC8* iRootContentID; // content-id of the root message part.
+
+ // new fields for MMS encapsulation version 1.1
+ // Retrieve status is stored into same variable as response status
+ // response status comes in send confirmation,
+ // retrieve status comes in retrieve confirmation.
+ // Both have the same meaning indicating success or failure of the operation
+
+ TInt32 iReadStatus; // status from a read report
+ TInt32 iReplyCharging;
+ TInt64 iReplyChargingDeadline;
+ TBool iReplyChargingAbs; // Is iReplyChargingDeadline absolute time
+ TInt32 iReplyChargingSize;
+ HBufC8* iReplyChargingId;
+ // previously sent by
+ // previously sent date
+ RPointerArray<CMmsSendingChain> iPreviouslySentArray;
+ TLinearOrder<CMmsSendingChain> iLinearOrder;
+
+ // New fields for MMS encapsulation version 1.2
+
+ TInt32 iDistributionIndicator; // Yes/No
+ // UID of an entry that is related to this one.
+ // For example id of the original notification when a notification is
+ // being forwarded. The result of the operation affects the original entry
+ TMsvId iRelatedEntry;
+ // Type of multipart data stored in this entry
+ // (multipart/mixed, multipart/related, multipart/alternative)
+ // saved as WSP assigned number
+ TInt32 iMultipartType;
+
+ TTime iReceivingTime;
+
+ // Reserved fields have been taken into use to store version 1.3 headers
+ // Content class values defined in mmsconst.h
+ TInt32 iContentClass;
+ TInt32 iDrmContent; // Yes/No
+ TInt32 iAdaptationAllowed; // Yes/No
+
+ // Pointer to separate classes that contain rarer 1.2 headers
+ // These are stored to separate streams to help preserving
+ // compatibility.
+ // The data for these classes is restored only when the
+ // corresponding stream is present.
+
+ CMmsElementDescriptor* iElementDescriptor;
+ CMmsMMBoxMessageHeaders* iMmBoxMessageHeaders;
+ CMmsMMBoxViewHeaders* iMmBoxViewHeaders;
+
+ // Extended notification data
+ // These are stored in a separate stream
+ // End of message flag is not saved.
+ // If the whole message is contained in the notification, the notification is converted
+ // into a message.
+ HBufC* iExtendedNotificationText; // Operator response in send-conf or retrieve-conf
+ // Extension status coding:
+ // 0x20 = Message body size > text, message retrieval uncomplete
+ // 0x30 = Message retrieval complete (whole message body in IExtendedNotificationText)
+ TInt iExtensionStatus;
+
+ // result array from MMBox delete confirmation.
+ // These are never saved to disk
+ RPointerArray<CMmsDeleteResultArray> iDeleteResultArray;
+ TLinearOrder<CMmsDeleteResultArray> iDeleteResultOrder;
+
+ HBufC* iApplicationId; // receiving application
+ HBufC* iReplyToApplicationId; // application to receive replies
+ HBufC8* iApplicationInfo; // info for the receiving application
+
+ // Default MMS encapsulation version.
+ // This is used to initialize iVersion member
+ // The value is given in NewL, and should be the value from CMmsSettings class
+ TInt16 iMmsDefaultVersion;
+
+ // New headers from version 1.3
+ // These are actually not part of a message but control the transactions.
+ // These are stored on disk in case the transaction data is created by one
+ // component and later sent by another
+
+ // Recommended retrieval mode (notification)
+ TInt32 iRecommendedRetrievalMode;
+ // Explanation why manual retrieval is recommended
+ HBufC* iRecommendedRetrievalModeText;
+ // Id of a message that is to be replaced or cancelled
+ HBufC8* iReplaceCancelId;
+ // cancel status
+ TInt32 iCancelStatus;
+
+
+ public: // Friend classes
+
+ protected: // Friend classes
+
+ private: // Friend classes
+
+
+ };
+
+#include "mmsheaders.inl"
+
+#endif // CMMSHEADERS_H
+
+// End of File