messagingappbase/sendui/meetingrequestsender/inc/MeetingRequestSender.h
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingappbase/sendui/meetingrequestsender/inc/MeetingRequestSender.h	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,285 @@
+/*
+* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "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:   Provides meeting request sending service.
+*                Service expects to received messages of type CMimeMessageData.
+*                Implements CSendingService. 
+*
+*/
+
+
+
+#ifndef CMEETINGREQUESTSENDER_H
+#define CMEETINGREQUESTSENDER_H
+
+//  INCLUDES
+#include    <e32base.h>
+#include    <e32std.h>              // RPointerArray
+#include    <msvapi.h>              // MMsvSessionObserver
+#include    <f32file.h>             // RFs
+#include    <coemain.h>
+#include    <CSendingService.h>
+#include    <CMessageAddress.h>
+#include    <SenduiMtmUids.h>
+#include    <CMsvRecipientList.h>
+#include    "MeetingRequestSenderUids.hrh"
+
+//  FORWARD DECLARATIONS
+class CMsvSession;
+class CClientMtmRegistry;
+class CBaseMtm;
+class TDataType;
+class CMeetingRequestData;
+class CSendUiAttachment;
+class CSendUiSingleton;
+
+//  CLASS DEFINITION
+/**
+ *
+ * CMeetingRequestSender in an ECOM plug-in to Sendui.
+ * Plug-in is used to send meeting requests.
+ * Sendui is responsible of instantiating and calling the
+ * service when needed.
+ * @lib MeetingRequestSender.dll
+ * @since Series 60 3.0
+ */
+class CMeetingRequestSender : public CSendingService
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static CMeetingRequestSender* NewL( TSendingServiceParams* aParams );
+
+        /**
+        * Two-phased constructor.
+        */
+        static CMeetingRequestSender* NewLC( TSendingServiceParams* aParams );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CMeetingRequestSender();
+
+    private:    // Constructors
+
+        /**
+        * C++ default constructor.
+        */
+        CMeetingRequestSender( CCoeEnv& aCoeEnv, CSendUiSingleton& aSingleton );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */  
+        void ConstructL( );
+
+    public:     // Methods from CSendingService
+        
+        void PopulateServicesListL(
+            RPointerArray<CSendingServiceInfo>& aList );
+
+        void CreateAndSendMessageL(
+            TUid aServiceUid,
+            const CMessageData* aMessageData,
+            TBool aLaunchEditorEmbedded = ETrue);
+
+        TUid ServiceProviderId() const;
+        
+        /**
+        * Return technology type of a given service
+        *
+        * @since Series 60 v3.1
+        * @return TUid Technology type id
+        */ 
+        TUid TechnologyTypeId( ) const;
+
+    private:    // New methods
+
+        /**
+        * Creates and sends message by using client MTM.
+        *
+        * @since Series 60 3.0
+        * @param aMessageData Data for the meeting request message.
+        * @return None.
+        */
+        void DoCreateAndSendMessageL( const CMessageData& aMessageData,
+                                      CMeetingRequestData* aMeetingRequestData );
+
+        /**
+        * Transfer iCal IDs to client MTM.
+        *
+        * @since Series 60 3.0
+        * @param aMessageData Data for the meeting request message.
+        * @return None.
+        */
+        void TransferIdsToClientL( const CMessageData& aMessageData );
+
+        /**
+        * Creates new message. Index entry is initialized and 
+        * new message is created in drafs folder. 
+        * @since Series 60 3.0
+        * @param aMessageData Message containing subject.
+        * @return None.
+        */
+        void CreateMessageL( const CMessageData& aMessageData );
+
+        /**
+        * Add addressees.
+        * @since Series 60 3.0
+        * @param aRecipientType Recipient type.
+        * @param aAddressees Array of addressees.
+        * @return None.
+        */        
+        void AddAddresseesL(
+            TMsvRecipientType aRecipientType, 
+            const CMessageAddressArray& aAddressees );
+
+        /**
+        * Add attachment to email. 
+        * @since Series 60 3.0
+        * @param Attachment.
+        * @return None
+        */                                
+        void AddAttachmentL( 
+            CSendUiAttachment* aAttachment, 
+            TInt aLinksSupported );
+
+        /**
+        * Remove illegal characters from string. Illegal chars
+        * are replaced with spaces. String is trimmed before it is 
+        * returned. 
+        * @since Series 60 3.0
+        * @param aCheckedString String where chars are removed
+        * @return None
+        */                                                                            
+        void RemoveIllegalChars( HBufC* aCheckedString );
+
+        /**
+        * Initialize plug-in service info. 
+        * @since Series 60 3.0
+        * @return None
+        */                                                                                    
+        void InitializeServiceL();
+
+        /**
+        * Set message body.
+        * @since Series 60 3.0
+        * @param aMessageData Message data which contains the body. 
+        * @return None. 
+        */                                                                                    
+        void SetBodyL( const CMessageData& aMessageData );
+
+        /**
+        * Create email headers ("standard" and MIME)
+        * @since Series 60 3.0
+        * @param aMessageData Message which contains attendees and MIME type.  
+        * @return None. 
+        */                                                                                    
+        void CreateHeaderL( const CMessageData& aMessageData, CMeetingRequestData* aMeetingRequestData );
+
+        /**
+        * Add attachments to the email.
+        * @since Series 60 3.0
+        * @param aMessageData Message which contains attachments.
+        * @return None. 
+        */                                                                                    
+        void AddAttachmentsL( const CMessageData& aMessageData );
+
+        /**
+        * Check if there are enough disk space.
+        * @since Series 60 3.0
+        * @param aMsgSize Total message size including attachments. 
+        * @return None. 
+        */                                                                                    
+        void CheckDiskSpaceL( TInt aMsgSize );
+
+        /**
+        * Initialize standard email header. 
+        * @since Series 60 3.0
+        * @param aMessageData Message containing addressees.
+        * @return None. 
+        */                                                                                    
+        void InitStdHeaderL( const CMessageData& aMessageData );
+
+        /**
+        * Initialize MIME email header. 
+        * @since Series 60 3.0
+        * @param aMessageData Message containing MIME type.
+        * @return None. 
+        */                                                                                    
+        void InitMimeHeaderL( CMeetingRequestData* aMeetingRequestData );
+
+        /**
+        * Validate email.
+        * @since Series 60 3.0
+        * @return ETrue, if email is valid. 
+        */                                                                                    
+        TBool ValidateEmail( );
+
+        /**
+        * Send email.
+        * @since Series 60 3.0
+        * @return None. 
+        */
+        void SendEmailL( );
+
+        /**
+        * Initialize and create MTM client resources.
+        * @since Series 60 3.0
+        * @param aMessageData 
+        * @return None.
+        */                                                                       
+        void InitResourcesL( CMeetingRequestData* aMeetingRequestData );
+
+        /**
+        * Move message to specified folder (usually outbox). 
+        * @since Series 60 3.0
+        * @param aTarget Id of target folder. 
+        * @return None. 
+        */                                                                                    
+        void MoveMessageEntryL( TMsvId aTarget );
+
+        /**
+        * Resolves the client MTM type by using service id.
+        * @since Series 60 3.0
+        * @param aServiceId Mailbox id
+        * @return None. 
+        */                                                                                    
+        void ResolveClientMTMTypeL( TMsvId aServiceId );
+        
+        /**
+        * Returns a new descriptor where "MAILTO:" prefix 
+        * is removed if it existed.
+        * @since Series 60 3.0
+        * @param aAddress Text string to be parsed.
+        * @return TPtrC A new string which has no "MAILTO:" prefix. 
+        */
+        TPtrC AttendeeAdressWithoutPrefix( const TDesC& aAddress );
+
+    private:    // Data
+
+        // Contains pointers to the data of the services provided by this plugin.
+        // Pointed service data objects are owned.
+        RPointerArray<CSendingServiceInfo>      iServiceArray;
+
+        CStreamStore*           iStore;     //Owns
+        CBaseMtm*               iClientMtm; //Owns
+        TMsvId                  iMailServiceId;
+        TUid                    iClientMtmType;
+    };
+
+
+#endif      //  CMEETINGREQUESTSENDER_H
+
+// End of File