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