--- /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