serviceproviders/sapi_messaging/tsrc/dev/tmessagingtest/tmsg_sendmessageiter1/inc/messageheader.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/serviceproviders/sapi_messaging/tsrc/dev/tmessagingtest/tmsg_sendmessageiter1/inc/messageheader.h Fri Jul 03 15:51:24 2009 +0100
@@ -0,0 +1,1006 @@
+/*
+* 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 the License "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: Support for header information retrieval
+*
+*/
+
+
+
+#ifndef __MESSAGEHEADER_H
+#define __MESSAGEHEADER_H
+
+#include <e32base.h>
+#include <msvstd.h>
+#include <msvapi.h>
+#include <cmsvrecipientlist.h>
+
+class CMsvAttachment;
+class CRecipientList;
+
+const TInt KArrayGranularity = 4;
+
+_LIT(KMessageTypeMMS, "MMS");
+_LIT(KMessageTypeSMS, "SMS");
+_LIT(KUnknown, "unknown");
+_LIT(KPriorityHigh, "High");
+_LIT(KPriorityMedium, "Medium");
+_LIT(KPriorityLow, "Low");
+
+/**
+ * TMessageStatusFlag enum for status of message
+*/
+enum TMessageStatusFlag
+ {
+ EUnread = 0,
+ EReplied,
+ EForward,
+ EDelete
+ };
+
+/**
+ * TNotificationType enum for notification of new arrival of message
+*/
+enum TNotificationType
+ {
+ ENewMessage = 0
+ };
+
+/**
+ * TMessageFilter enum is provided to filtering out search options
+*/
+enum TMessageFilter
+ {
+ EFilterId = 0x1,
+ EFilterMtm = 0x2,
+ EFilterFrom = 0x4,
+ EFilterSubject = 0x8,
+ EFilterStartDate = 0x10,
+ EFilterEndDate = 0x20
+ };
+
+/**
+ * CFilterParamInfo Contains filter and sorting information required for getting header list
+*/
+class CFilterParamInfo : public CBase
+ {
+ public:
+
+ /**
+ * Two Phase Constructor
+ */
+ IMPORT_C static CFilterParamInfo* NewL();
+
+ /**
+ * Destructor
+ */
+ ~CFilterParamInfo();
+
+ /**
+ * Adds the sender address as a filter
+ * @param aFrom It is sender address
+ * @return void
+ */
+ IMPORT_C void AddFromL( const TDesC& aFrom );
+
+ /**
+ * Gets the sender address list
+ * @return CDesCArray*
+ */
+ IMPORT_C const CDesCArray* From() const ;
+
+ /**
+ * Adds the mtm as a filter
+ * @param aMtm It is mtm type
+ * @return void
+ */
+ IMPORT_C TInt AddMtmL( const TDesC& aMtm );
+
+ /**
+ * Gets the mtm list
+ * @return CDesCArray*
+ */
+ IMPORT_C const CDesCArray* Mtm() const;
+
+ /**
+ * Sets the subject filter
+ * @param aSubject It is the subject which user want to set as filter
+ * @return void
+ */
+ IMPORT_C void SetSubjectL( const TDesC& aSubject );
+
+ /**
+ * Gets the subject filter
+ * @return TPtrC
+ */
+ IMPORT_C TPtrC Subject() const;
+
+ /**
+ * Sets the sorting order
+ * @param aSortType It could be { @c EMsvSortByNone , @c EMsvSortByDate ,@c EMsvSortByDateReverse ,
+ @c EMsvSortBySize ,@c EMsvSortBySizeReverse, @c EMsvSortByDetails ,
+ @c EMsvSortByDetailsReverse ,@c EMsvSortByDescription ,@c EMsvSortByDescriptionReverse ,
+ @c EMsvSortById ,@c EMsvSortByIdReverse } defined in @c MSVSTD.H
+ * @return void
+ */
+ IMPORT_C void SetSortType( const TMsvSorting aSortType );
+
+ /**
+ * Gets the sorting order
+ * @return TMsvSorting
+ */
+ IMPORT_C TMsvSorting SortType() const;
+
+ /**
+ * Sets the message id as filter
+ * @param aMessageId It is the message id which user want to set as filter
+ * @return void
+ */
+ IMPORT_C void SetMessageIdFilter( const TMsvId aMessageId );
+
+ /**
+ * Gets the message id filter
+ * @return TMsvId
+ */
+ IMPORT_C TMsvId MessageId() const;
+
+ /**
+ * Sets the starting date for date range as a filter
+ * @param aStartDate It is the date to which we want
+ * to set as starting date for date range
+ * @return void
+ */
+ IMPORT_C void SetStartDateFilter( const TTime& aStartDate );
+
+ /**
+ * Gets the starting date for date range as a filter
+ * @return TTime&
+ */
+ IMPORT_C const TTime& StartDate() const;
+
+ /**
+ * Sets the ending date for date range as a filter
+ * @param aEndDate It is the date to which we want
+ * to set as ending date for date range
+ * @return void
+ */
+ IMPORT_C void SetEndDate( const TTime& aEndDate );
+
+ /**
+ * Gets the ending date for date range as a filter
+ * @return TTime&
+ */
+ IMPORT_C const TTime& EndDate() const;
+
+ /**
+ * Gives the iFilter
+ * @return TInt
+ */
+ IMPORT_C TInt Filter() const;
+
+ /**
+ * Resets the filterinfo object
+ * @return void
+ */
+ IMPORT_C void Reset();
+
+ /**
+ * Assignment operator.
+ * @param aFilterParamInfo Item to assign.
+ * @return The source object.
+ */
+ CFilterParamInfo& operator=(const CFilterParamInfo& aFilterParamInfo);
+
+ private:
+
+ /**
+ * Constructor
+ */
+ CFilterParamInfo();
+
+
+ private:
+
+ /**
+ * Sender Array
+ */
+ CDesCArray* iFromArray;
+
+ /**
+ * Mtm Array
+ */
+ CDesCArray* iMtmArray;
+
+ /**
+ * Subject
+ */
+ HBufC* iSubject;
+
+ /**
+ * Sort type
+ */
+ TMsvSorting iSortType;
+
+ /**
+ * Message Id
+ */
+ TMsvId iMessageId;
+
+ /**
+ * Starting date of date range
+ */
+ TTime iStartDate;
+
+ /**
+ * End date of date range
+ */
+ TTime iEndDate;
+
+ /**
+ * Filter options
+ */
+ TInt iFilter;
+ };
+
+
+/**
+ * CMessageAttachInfo Structure for attachment information
+*/
+class CMessageAttachInfo : public CBase
+ {
+ public:
+
+ /**
+ * Two Phase Constructor
+ */
+ IMPORT_C static CMessageAttachInfo* NewL();
+
+ /**
+ * Destructor
+ */
+ ~CMessageAttachInfo();
+
+ /**
+ * Sets the Attachment Name
+ * @param aName Attachment Name
+ * @return void
+ */
+ IMPORT_C void SetNameL(const TDesC& aName);
+
+ /**
+ * Gets the Attachment Name
+ * @return TPtrC Attachment Name
+ */
+ IMPORT_C const TPtrC Name() const;
+
+ /**
+ * Sets the File handle
+ * @param aFile File handle
+ * @return void
+ */
+ IMPORT_C void SetFileHandle( RFile aFile);
+
+ /**
+ * Gets the File handle
+ * @return RFile File handle
+ */
+ IMPORT_C RFile FileHandle() const;
+
+ /**
+ * Sets the File size
+ * @param aSize File size
+ * @return void
+ */
+ IMPORT_C void SetSize( TInt32 aSize);
+
+ /**
+ * Gets the File size
+ * @return File size
+ */
+ IMPORT_C TInt32 Size() const;
+
+ /**
+ * Sets the Mime type
+ * @param aMimeType Mime type
+ * @return void
+ */
+ IMPORT_C void SetMimeTypeL(const TDesC& aMimeType);
+
+ /**
+ * Gets the Mime type
+ * @return TPtrC Mime type
+ */
+ IMPORT_C const TPtrC MimeType() const;
+
+
+ private:
+
+ /**
+ * Constructor
+ */
+ CMessageAttachInfo();
+
+ private:
+
+ /**
+ * Attachment name
+ */
+ HBufC* iName;
+
+ /**
+ * File Handle for attachment
+ */
+ RFile iFile;
+
+ /**
+ * Size of attachment
+ */
+ TInt32 iSize;
+
+ /**
+ * Mimetype
+ */
+ HBufC* iMimeType;
+ };
+
+/**
+ * CMessageDetailInfo Structure for message detail information
+*/
+class CMessageDetailInfo : public CBase
+ {
+ public:
+
+ /**
+ * Two Phase Constructor
+ */
+ IMPORT_C static CMessageDetailInfo* NewL();
+
+ /**
+ * Destructor
+ */
+ ~CMessageDetailInfo();
+
+ /**
+ * Adds Recipient
+ * @param aRecipient recipient address
+ * @param aType recipient type
+ */
+ IMPORT_C void AddRecipientL( const TDesC& aRecipient,
+ TMsvRecipientType aType = EMsvRecipientTo );
+
+ /**
+ * Gives the receipient array
+ * @return CRecipientList*
+ */
+ IMPORT_C const CRecipientList* RecipientArray() const;
+
+ /**
+ * Sets the sender address
+ * @param aFrom Sender address
+ * @return void
+ */
+ IMPORT_C void SetFromL(const TDesC& aFrom);
+
+ /**
+ * Gets the sender address
+ * @return TPtrC Sender address
+ */
+ IMPORT_C const TPtrC From() const;
+
+ /**
+ * Sets the body for message
+ * @param aMsg Body for message
+ */
+ IMPORT_C void SetBodyTextL( const TDesC& aMsg );
+
+ /**
+ * Gets the body text
+ * @return TPtrC
+ */
+ IMPORT_C const TPtrC BodyText() const;
+
+ /**
+ * Sets the message id
+ * @param aMessageID Message ID
+ * @return void
+ */
+ IMPORT_C void SetMessageId(const TMsvId aMessageID);
+
+ /**
+ * Gets the message id
+ * @return TMsvId Message ID
+ */
+ IMPORT_C TMsvId MessageId() const;
+
+ /**
+ * Adds attachment
+ * @param aAttachment attachment information
+ */
+ IMPORT_C void AddAttachmentInfoL( CMessageAttachInfo* aAttachment );
+
+ /**
+ * Gives the attachment array
+ * @return CArrayPtr<CMsvAttachment>*
+ */
+ IMPORT_C const CArrayPtr<CMessageAttachInfo>* AttachmentInfoArray();
+
+ private:
+
+ /**
+ * Constructor
+ */
+ CMessageDetailInfo();
+
+ private:
+
+ /**
+ * Message ID
+ */
+ TMsvId iMessageId;
+
+ /**
+ * Message Body text
+ */
+ HBufC* iBodyText;
+
+ /**
+ * Sender address
+ */
+ HBufC* iFrom;
+
+ /**
+ * Receipient List
+ */
+ CRecipientList* iRecipientList;
+
+ /**
+ * Array of Attachments
+ */
+ CArrayPtr<CMessageAttachInfo>* iAttachEntries;
+ };
+
+/**
+ * CSendMessageParams Contains parameters required for sending a message
+*/
+class CSendMessageParams : public CBase
+ {
+ public:
+
+ /**
+ * Two Phase Constructor
+ */
+ IMPORT_C static CSendMessageParams* NewL();
+
+ /**
+ * Destructor
+ */
+ ~CSendMessageParams();
+
+ /**
+ * Adds Recipient
+ * @param aRecipient recipient address
+ * @param aType recipient type
+ */
+ IMPORT_C void AddRecipientL( const TDesC& aRecipient,
+ TMsvRecipientType aType = EMsvRecipientTo );
+
+ /**
+ * Gives the receipient array
+ * @return CRecipientList*
+ */
+ IMPORT_C const CRecipientList* RecipientArray() const;
+
+ /**
+ * Adds attachment
+ * @param aAttachment attachment information
+ */
+ IMPORT_C void AddAttachmentL( CMsvAttachment* aAttachment );
+
+ /**
+ * Gives the attachment array
+ * @return CArrayPtr<CMsvAttachment>*
+ */
+ IMPORT_C const CArrayPtr<CMsvAttachment>* AttachmentArray();
+
+ /**
+ * Sets the message subject
+ * @param aSubject Message Subject
+ */
+ IMPORT_C void SetSubjectL( const TDesC& aSubject );
+
+ /**
+ * Gives message subject
+ * @return TPtrC
+ */
+ IMPORT_C const TPtrC Subject() const;
+
+ /**
+ * Sets the body for message
+ * @param aMsg Body for message
+ */
+ IMPORT_C void SetBodyTextL( const TDesC& aMsg );
+
+ /**
+ * Appends the message to the existing bodytext
+ * @param aMsg Body for message
+ */
+ void AppendBodyTextL( const TDesC& aMsg );
+
+ /**
+ * Gets the body text
+ * @return TPtrC
+ */
+ IMPORT_C const TPtrC BodyText() const;
+
+ /**
+ * Sets the templateid
+ * @param aTemplateId template id
+ */
+ IMPORT_C void SetTemplateId( const TMsvId aTemplateId );
+
+ /**
+ * Gets the template id
+ * @return TMsvId
+ */
+ IMPORT_C TMsvId TemplateId() const;
+
+ /**
+ * Sets paramter to launch editor depends on argument value
+ * if ETrue then launches editor or if EFalse the don't launch editor.
+ * @param aLaunchEditor Boolean param
+ */
+ IMPORT_C void SetLaunchEditor( const TBool aLaunchEditor = ETrue );
+
+ /**
+ * Gets the LaunchEditor value
+ * @return TBool
+ */
+ IMPORT_C TBool LaunchEditor() const;
+
+ /**
+ * Sets the message type
+ * @param aMessageType Describing message type (SMS/MMS)
+ */
+ IMPORT_C TInt SetMessageTypeL( const TDesC& aMessageType );
+
+ /**
+ * Gets the messagetype
+ * @return TUid
+ */
+ IMPORT_C TUid MessageType() const;
+
+ /**
+ * Assignment operator.
+ * @param aSendMessageParams Item to assign.
+ * @return The source object.
+ */
+ CSendMessageParams& operator=(const CSendMessageParams& aSendMessageParams);
+
+ private:
+
+ /**
+ * Constructor
+ */
+ CSendMessageParams();
+
+ private:
+
+ /**
+ * Message Type
+ */
+ TUid iMessageType;
+
+ /**
+ * Template id
+ */
+ TMsvId iTemplateId;
+
+ /**
+ * Receipient Array
+ */
+ CRecipientList* iRecipientArray;
+
+ /**
+ * Attachment Array
+ */
+ CArrayPtr<CMsvAttachment>* iAttachmentArray;
+
+ /**
+ * Subject of message
+ */
+ HBufC* iSubject;
+
+ /**
+ * Bpodytext
+ */
+ HBufC* iBodyText;
+
+ /**
+ * Launch editor variable
+ */
+ TBool iLaunchEditor;
+ };
+
+/**
+ * Contains recipients information
+*/
+class CRecipientList : public CBase
+{
+ public:
+
+ /**
+ * Two-phased constructor.
+ * @return CRecipientList*
+ */
+ IMPORT_C static CRecipientList* CRecipientList::NewL();
+
+ /**
+ * Destructor.
+ */
+ ~CRecipientList();
+
+ /**
+ * Appends the recipient type
+ * @param aValue Recipient Type
+ * @param aPtr recipient address
+ * @return void
+ */
+ IMPORT_C void AppendL(TMsvRecipientType aType, const TDesC& aRecipient);
+
+ /**
+ * Gives the number of elements in recipient list
+ * @return TInt
+ */
+ IMPORT_C TInt Count() const;
+
+ /**
+ * Gives the recipient type
+ * @param aPos position
+ * @return TMsvRecipientType
+ */
+ IMPORT_C TMsvRecipientType Type(TInt aPos) const;
+
+ /**
+ * Gives the recipient address
+ * @param aIndex index
+ * @return TDesC recipient address
+ */
+ IMPORT_C const TDesC& operator[](TInt aIndex) const;
+
+ /**
+ * Resets the recipient list
+ * @return void
+ */
+ IMPORT_C void Reset();
+
+ private:
+
+ /**
+ * Symbian Constructor.
+ */
+ void ConstructL();
+
+ /**
+ * Constructor
+ */
+ CRecipientList();
+
+
+ private:
+
+ /**
+ * Recipient type
+ */
+ RArray<TMsvRecipientType> iRecipientType;
+
+ /**
+ * Recipients
+ */
+ CDesCArrayFlat* iRecipients;
+};
+
+/**
+ * Gives Message header
+*/
+class CMessageHeader : public CBase
+ {
+ public:
+
+ /**
+ * Two-phased constructor.
+ * @return CMessageHeader*
+ */
+ IMPORT_C static CMessageHeader* NewL();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CMessageHeader();
+
+ private:
+
+ /**
+ * Symbain constructor.
+ */
+ CMessageHeader();
+
+ public:
+
+ /**
+ * Sets the unread flag
+ * @param aUnread unread flag
+ * @return void
+ */
+ IMPORT_C void SetUnreadFlag(const TBool aUnread);
+
+ /**
+ * Gets the unread flag
+ * @param aUnead Unread flag
+ * @return void
+ */
+ IMPORT_C void GetUnreadFlag(TBool& aUnread) const;
+
+ /**
+ * Gets the unread flag
+ * @return TBool unread flag
+ */
+ IMPORT_C TBool UnreadFlag() const;
+
+ /**
+ * Sets the attahment flag
+ * @param aAttachment Attachment flag
+ * @return void
+ */
+ IMPORT_C void SetAttachFlag(const TBool aAttachment);
+
+ /**
+ * Gets the attachment flag
+ * @param aAttachment Attachment flag
+ * @return void
+ */
+ IMPORT_C void GetAttachFlag(TBool& aAttachment) const;
+
+ /**
+ * Gets the Attachment flag
+ * @return TBool Attachment flag
+ */
+ IMPORT_C TBool AttachFlag() const;
+
+ /**
+ * Sets the priority flag
+ * @param aPriority Priority flag
+ * @return void
+ */
+ IMPORT_C void SetPriorityFlag(const TMsvPriority aPriority);
+
+ /**
+ * Gets the priority flag
+ * @param aPriority Priority flag
+ * @return void
+ */
+ IMPORT_C void GetPriorityFlag(TMsvPriority& aPriority) const;
+
+ /**
+ * Gets the priority
+ * @return TPtrC Priority
+ */
+ IMPORT_C TPtrC Priority() const;
+
+ /**
+ * Sets the mtm type
+ * @param aMtm Mtm id
+ * @return void
+ */
+ IMPORT_C void SetMtmId(const TUid aMtm);
+
+ /**
+ * Gets the mtm type
+ * @param aMtm Mtm id
+ * @return void
+ */
+ IMPORT_C void GetMtmId(TUid& aMtm) const;
+
+ /**
+ * Gets the mtm type
+ * @return TPtrC Message Type
+ */
+ IMPORT_C TPtrC Mtm() const;
+
+ /**
+ * Sets the message id
+ * @param aMessageID Message ID
+ * @return void
+ */
+ IMPORT_C void SetMessageId(const TMsvId aMessageID);
+
+ /**
+ * Gets the message id
+ * @param aMessageID Message ID
+ * @return void
+ */
+ IMPORT_C void GetMessageId(TMsvId& aMessageID) const;
+
+ /**
+ * Gets the message id
+ * @return TMsvId Message ID
+ */
+ IMPORT_C TMsvId MessageId() const;
+
+ /**
+ * Sets the time
+ * @param aTime Time
+ * @return void
+ */
+ IMPORT_C void SetTime(const TTime& aTime);
+
+ /**
+ * Gets the time
+ * @param aTime Time
+ * @return void
+ */
+ IMPORT_C void GetTime(TTime& aTime) const;
+
+ /**
+ * Gets the time
+ * @return TTime
+ */
+ IMPORT_C const TTime& Time() const;
+
+ /**
+ * Sets the sender address
+ * @param aFrom Sender address
+ * @return void
+ */
+ IMPORT_C void SetFromL(const TDesC& aFrom);
+
+ /**
+ * Gets the sender address
+ * @return TPtrC Sender address
+ */
+ IMPORT_C const TPtrC From() const;
+
+ /**
+ * Sets the message subject
+ * @param aSubject Subject of message
+ * @return void
+ */
+ IMPORT_C void SetSubjectL(const TDesC& aSubject);
+
+ /**
+ * Gets the message
+ * @return TPtrC Subject of message
+ */
+ IMPORT_C const TPtrC Subject() const;
+
+ private:
+
+ /**
+ * Unread flag
+ */
+ TBool iUnread;
+
+ /**
+ * Attachment flag
+ */
+ TBool iAttachment;
+
+ /**
+ * Priority
+ */
+ TMsvPriority iPriority;
+
+ /**
+ * Priority as string
+ */
+ HBufC* iPriAsString;
+
+ /**
+ * Mtm
+ */
+ TUid iMtm;
+
+ /**
+ * Mtm
+ */
+ HBufC* iMtmAsString;
+
+ /**
+ * Message subject
+ */
+ HBufC* iSubject;
+
+ /**
+ * Address of sender
+ */
+ HBufC* iFrom;
+
+ /**
+ * Time
+ */
+ TTime iTime;
+
+ /**
+ * Entry id of message
+ */
+ TMsvId iMessageID;
+ };
+
+/**
+ * Messaging Callback base class
+*/
+class CMsgCallbackBase : public CBase
+ {
+ public:
+
+ /**
+ * Gives the result
+ * @param aErrCode Error code
+ * @param aResult Result
+ * @return void
+ */
+ virtual void NotifyResultL(TInt aErrCode, TAny* aResult) = 0;
+
+ /**
+ * Input param
+ */
+ const TAny* iPtrInParamList;
+
+ /**
+ * Callback
+ */
+ TAny* iPtrNotifyCallback;
+
+ /**
+ * Transaction Id
+ */
+ TInt32 iTransactionId;
+ };
+
+/**
+ * Interface used to get callback notification from async request module
+ * about completion of request. Implemented by the CMessagingService class,
+ * which is used by the service modules to notify about request completion.
+*/
+class MAsyncRequestObserver
+ {
+ public:
+
+ /**
+ * Notifies Messaging service about the completeion of the request
+ * @param aTransactionId Asynchronous request transaction ID
+ * @return void
+ */
+ virtual void RequestComplete( TInt32 aTransactionId ) = 0;
+ };
+
+
+/**
+ * Structure for storing transaction id and associated active object.
+*/
+struct TAsyncRequestInfo
+ {
+
+ /**
+ * TransactionId
+ */
+ TInt32 iTransactionId;
+
+ /**
+ * Active object pointer
+ */
+ CActive* iAsyncObj;
+ };
+
+
+
+#endif __MESSAGEHEADER_H
\ No newline at end of file