diff -r ebe688cedc25 -r 7fdbb852d323 messagingappbase/sendui/meetingrequestsender/inc/MeetingRequestSender.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingappbase/sendui/meetingrequestsender/inc/MeetingRequestSender.h Wed Sep 01 12:31:54 2010 +0100 @@ -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 +#include // RPointerArray +#include // MMsvSessionObserver +#include // RFs +#include +#include +#include +#include +#include +#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& 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 iServiceArray; + + CStreamStore* iStore; //Owns + CBaseMtm* iClientMtm; //Owns + TMsvId iMailServiceId; + TUid iClientMtmType; + }; + + +#endif // CMEETINGREQUESTSENDER_H + +// End of File