williamr@2: // Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@2: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #ifndef __RSENDASMESSAGE_H__ williamr@2: #define __RSENDASMESSAGE_H__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: class RSendAs; williamr@2: class CRichText; williamr@2: class RFile; williamr@2: williamr@2: /** williamr@2: Send as progress williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: typedef CMsvSendOperation::TSendOperationProgress TSendAsProgress; williamr@2: williamr@2: /** williamr@2: Encapsulates creating and sending a message. This class requires williamr@2: a connected RSendAs session. williamr@2: williamr@2: A client application can have several RSendAsMessage objects created simultaneously. williamr@2: Each RSendAsMessage object corresponds to a single message. williamr@2: williamr@2: With the RSendAsMessage class, a client application can perform the following williamr@2: operations: williamr@2: williamr@2: -Creating and managing a message williamr@2: williamr@2: -Modifying a message created using SendAs williamr@2: williamr@2: -Sending a message williamr@2: williamr@2: -Launching a message editor williamr@2: williamr@2: Client applications do not require any capabilities in order to use the RSendAs williamr@2: and RSendAsMessage APIs. However, if an application does not have the necessary security williamr@2: capabilities to send a message, the SendAs server ensures that a message is only sent williamr@2: after the user's authorization. williamr@2: williamr@2: A message created using RSendAsMessage can be saved, sent, or passed to the appropriate williamr@2: message editor. There are two types of send operation: williamr@2: williamr@2: -A confirmed send is forwarded to the UI MTM for the message type. Typically this williamr@2: results in the user being asked to confirm that the message should be sent. williamr@2: williamr@2: -An unconfirmed send fails if the client application does not have the williamr@2: required capabilities to use the server MTM for the message type. williamr@2: williamr@2: There are asynchronous and synchronous forms of these sending methods. Progress information for williamr@2: sending is available when the asynchronous forms are used. The synchronous forms, and the williamr@2: methods for saving the message and for launching it in a message editor, all close the handle to the williamr@2: RSendAsMessage, so the message cannot be further accessed through the API. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class RSendAsMessage : public RSubSessionBase williamr@2: { williamr@2: public: williamr@2: /** williamr@2: Defines the recipient types available when adding a recipient to a message williamr@2: */ williamr@2: enum TSendAsRecipientType williamr@2: { williamr@2: /** williamr@2: Designates a 'To' recipient. williamr@2: */ williamr@2: ESendAsRecipientTo = EMsvRecipientTo, williamr@2: williamr@2: /** williamr@2: Designates a 'Cc' recipient. williamr@2: */ williamr@2: ESendAsRecipientCc, williamr@2: williamr@2: /** williamr@2: Designates a 'Bcc' recipient. williamr@2: */ williamr@2: ESendAsRecipientBcc williamr@2: }; williamr@2: public: williamr@2: IMPORT_C void CreateL(RSendAs& aSendAs, TSendAsAccount aAccount); williamr@2: IMPORT_C void CreateL(RSendAs& aSendAs, TUid aMessageType); williamr@2: // williamr@2: IMPORT_C void SendMessage(TRequestStatus& aStatus); williamr@2: IMPORT_C void SendMessageAndCloseL(); // Sends in background williamr@2: IMPORT_C void SendMessageConfirmed(TRequestStatus& aStatus); williamr@2: IMPORT_C void SendMessageConfirmedAndCloseL(); // Sends in background williamr@2: IMPORT_C void LaunchEditorAndCloseL(); williamr@2: IMPORT_C void SaveMessageAndCloseL(); williamr@2: // williamr@2: IMPORT_C void ProgressL(TSendAsProgress& aProgress); williamr@2: williamr@2: IMPORT_C void SetBodyTextL(const CRichText& aBody); williamr@2: IMPORT_C void SetBodyTextL(const TDesC& aBody); williamr@2: IMPORT_C void SetSubjectL(const TDesC& aSubject); williamr@2: IMPORT_C void SetBioTypeL(TUid aBioType); williamr@2: // williamr@2: IMPORT_C void AddRecipientL(const TDesC& aAddress, TSendAsRecipientType aRecipientType); williamr@2: IMPORT_C void AddRecipientL(const TDesC& aAddress, const TDesC& aAlias, TSendAsRecipientType aRecipientType); williamr@2: // williamr@2: IMPORT_C void AddAttachment(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus); williamr@2: IMPORT_C void AddAttachment(const TDesC& aFilePath, const TDesC8& aMimeType, TRequestStatus& aStatus); williamr@2: IMPORT_C void AddAttachment(const TDesC& aFilePath, TRequestStatus& aStatus); williamr@2: williamr@2: IMPORT_C void AddAttachment(RFile& aFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus); williamr@2: IMPORT_C void AddAttachment(RFile& aFile, const TDesC8& aMimeType, TRequestStatus& aStatus); williamr@2: IMPORT_C void AddAttachment(RFile& aFile, TRequestStatus& aStatus); williamr@2: williamr@2: IMPORT_C void AddLinkedAttachment(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus); williamr@2: IMPORT_C void AddLinkedAttachment(const TDesC& aFilePath, const TDesC8& aMimeType, TRequestStatus& aStatus); williamr@2: IMPORT_C void AddLinkedAttachment(const TDesC& aFilePath, TRequestStatus& aStatus); williamr@2: williamr@2: IMPORT_C void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile); williamr@2: IMPORT_C void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, const TDesC8& aMimeType); williamr@2: IMPORT_C void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, const TDesC8& aMimeType, TUint aCharset); williamr@2: williamr@2: // williamr@2: IMPORT_C void Cancel(); williamr@2: IMPORT_C void Close(); williamr@2: williamr@2: /** williamr@2: Sets the character encoding value. The character encoding value options are 7-bit, williamr@2: 8-bit and 16-Bit Unicode. By default the character set encoding is 7 bit encoding. williamr@2: */ williamr@2: IMPORT_C void SetCharacterSetL(const TUint aCharset); williamr@2: williamr@2: williamr@2: private: williamr@2: TAny* iAny; // Future proofing. williamr@2: }; williamr@2: williamr@2: #endif // __RSENDASMESSAGE_H__