diff -r a36b1e19a461 -r 989d2f495d90 serviceproviders/sapi_messaging/messagingservice/inc/sendmessage.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/serviceproviders/sapi_messaging/messagingservice/inc/sendmessage.h Fri Jul 03 15:51:24 2009 +0100 @@ -0,0 +1,220 @@ +/* +* 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: +* +*/ + + +#ifndef __SENDMESSAGE_H +#define __SENDMESSAGE_H + +#include +#include + +class CMsvAttachment; +class CRecipientList; +class CMsgCallbackBase; + +/** + * This class provides functionality for sending SMS/MMS messages. +*/ +class CSendMessage : public CActive + { + + /** + * TMessageState enum represents the message states for asynchronous requests. + */ + enum TMessageState + { + EInitialize = 0, + EValidate, + ESend, + EComplete + }; + + + public: + + /** + * Two-phased constructor. + * @param aServerSession Object of CMsvSession Class which + * represents a channel of communication between a client thread + * and the Message Server thread. + * @return CSendMessage object + */ + static CSendMessage* NewL( CMsvSession& aServerSession ); + + /** + * Destructor. + */ + virtual ~CSendMessage(); + + + private: + + /** + * Constructor. + * @param aServerSession Object of CMsvSession Class which + * represents a channel of communication between a client thread + * and the Message Server thread . + */ + CSendMessage( CMsvSession& aServerSession ); + + + public: + + /** + * Sets message input parameters + * Ownership is transferred to this class + * @param aMessageParam Message Input Parameters + * @param aTemplateDetail + * @param aNotifyCallback Bydefault it is NULL to make function + * call synchronous , if provided then function call is asynchronous + * @param aAsyncRequestObserver Asynchronous request observer + */ + void SetInputParamsL( CSendMessageParams* aMessageParam, + CMessageDetailInfo* aTemplateDetail = NULL, + CMsgCallbackBase* aNotifyCallback = NULL, + MAsyncRequestObserver* aAsyncRequestObserver = NULL); + + /** + * Sends the message + */ + void SendMessageL(); + + private: + + /** + * Inherited from CActive class + */ + virtual void DoCancel(); + + /** + * Inherited from CActive class + */ + virtual void RunL(); + + /** + * Internal function + */ + void InitializeL(); + + /** + * Internal function + */ + void ValidateL(); + + /** + * Internal function + */ + void SendL(); + + /** + * Activates the request and call SetActive() function + */ + void ActivateRequest(TInt aReason); + + /** + * Gives the result for notification request. + */ + void NotifyRequestResult(TInt aReason); + + /** + * Sets the subject for message + */ + void AddSubjectL(); + + /** + * Sets the recipient address + */ + void AddRecipientL(); + + /** + * Sets body text to message + */ + void AddBodyTextL(); + + /** + * Adds attachments to message + */ + void AddAttachmentL(); + + private: + + /** + * Represents a channel of communication between a client thread + * and the Message Server thread + */ + CMsvSession& iServerSession; + + /** + * Asynchronous request observer, Used to get infromed of completion or request + */ + MAsyncRequestObserver* iAsyncRequestObserver; + + /** + * Represents a session with the SendAs Server + */ + RSendAs iSendAs; + + /** + * RSendAsMessage class object which encapsulates creating and + * sending a message. + */ + RSendAsMessage iMessage; + + /** + * State of message + */ + TMessageState iMessageState; + + /** + * A callback notification for asynchronous function + */ + CMsgCallbackBase* iNotifyCallback; + + /** + * Message input parameters + */ + CSendMessageParams* iMessageParam; + + /** + * Message detail for template message id + */ + CMessageDetailInfo* iTemplateDetail; + + /** + * Flag which specifies to cancel the request + * but not to call the NotifyResultL + * If false doesnot call the NotifyResultL + **/ + TBool iCallNotifyForCancelFlag; + + /* + * Flag information specifying whether the body text file + * in case of MMS is created or not, if created need to be + * cleaned up checking this flag at the end + */ + TBool iBodyTextFileFlag; + + /* + * FileName of the Body Text file used in case of MMS + */ + TFileName iBodyTextFileName; + }; + + + + +#endif __SENDMESSAGE_H \ No newline at end of file