serviceproviders/sapi_messaging/messagingservice/inc/sendmessage.h
changeset 19 989d2f495d90
child 23 5c0037c72160
--- /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 <rsendas.h>
+#include <rsendasmessage.h>
+
+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