diff -r a36b1e19a461 -r 989d2f495d90 serviceproviders/sapi_messaging/messagingservice/inc/messageheader.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/serviceproviders/sapi_messaging/messagingservice/inc/messageheader.h Fri Jul 03 15:51:24 2009 +0100 @@ -0,0 +1,1005 @@ +/* +* 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 +#include +#include +#include + +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* + */ + IMPORT_C const CArrayPtr* 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* 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* + */ + IMPORT_C const CArrayPtr* 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* 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 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