emailservices/emailframework/inc/CFSMailPlugin.h
changeset 20 ecc8def7944a
parent 18 578830873419
child 30 759dc5235cdb
--- a/emailservices/emailframework/inc/CFSMailPlugin.h	Fri Apr 16 14:51:52 2010 +0300
+++ b/emailservices/emailframework/inc/CFSMailPlugin.h	Mon May 03 12:23:15 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2007-2009 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"
@@ -25,6 +25,7 @@
 #include "MFSMailEventObserver.h"
 #include "CFSMailBox.h"
 #include "CFSMailPlugin.hrh"
+#include "cemailextensionbase.h"
 //</cmail>
 
 // constants
@@ -44,11 +45,11 @@
  *  CFSMailPlugin,CFSMailPlugin.inl are exported by framework
  *
  *  @lib FSFWCommonLib
- *  @since S60 v3.1
+ *
  */
-NONSHARABLE_CLASS ( CFSMailPlugin ) : public CBase
+NONSHARABLE_CLASS ( CFSMailPlugin ) : public CExtendableEmail
     {
-    
+
 public: // Methods
 
     /**
@@ -72,9 +73,9 @@
      * @param aInfo plugin implementation info
      */
      static void ListImplementationsL( RPointerArray<CImplementationInformation>& aInfo );
-  	      	
-	/** MAILBOX HANDLING API */
-	
+
+    /** MAILBOX HANDLING API */
+
     /**
      * Enables synchronization of identified mailbox. This means
      * that the plugin can connect to server to do synchronization
@@ -94,7 +95,7 @@
      * in offline state like network error or scheduling.
      *
      * @param aMailBoxId mailbox id request is accessed to
-	 */
+     */
      virtual void GoOnlineL( const TFSMailMsgId& aMailBoxId ) = 0;
 
     /**
@@ -106,7 +107,7 @@
      * mailboxes also.
      *
      * @param aMailBoxId mailbox id request is accessed to
-	 */
+     */
      virtual void GoOfflineL( const TFSMailMsgId& aMailBoxId ) = 0;
 
     /**
@@ -117,10 +118,10 @@
      *
      * All collections (mail etc.) supported by the plugin and
      * enabled by user settings are synchronized.
-     *     
+     *
      * This is an asynchronous operation and the request id
      * is returned for cancelling purpose.
-     * 
+     *
      * Observer is given as a parameter to enable callbacks
      * related to this operation. Alternatively user can use
      * empty implementation of the observer function and rely
@@ -132,7 +133,7 @@
      *        will receive progress notifications during the operation.
      * @param aRequestId identifies asynchronous request if parallel
      * requests exist
-	 */
+     */
      virtual void RefreshNowL( const TFSMailMsgId& aMailBoxId,
                                MFSMailRequestObserver& aOperationObserver,
                                TInt aRequestId ) = 0;
@@ -143,7 +144,7 @@
      * @param aMailBoxId mailbox id
      *
      * @return last sync operation status
-     * 
+     *
      */
      virtual const TFSProgress GetLastSyncStatusL( const TFSMailMsgId& aMailBoxId ) = 0;
 
@@ -151,7 +152,7 @@
      * cancels all ongoing synchronizations in given mailbox regardless if initiated
      * by email framework or plugin itself
      *
-     * @return error code 
+     * @return error code
      */
      virtual TInt CancelSyncL( const TFSMailMsgId& aMailBoxId ) = 0;
 
@@ -165,14 +166,14 @@
      virtual TSSMailSyncState CurrentSyncState( const TFSMailMsgId& aMailboxId ) = 0;
 
     /**
-     * returns mailbox online status 
+     * returns mailbox online status
      *
      * @param aMailboxId id of target mailbox
      *
      * @return online / offline
      */
      virtual TFSMailBoxStatus GetMailBoxStatus( const TFSMailMsgId& aMailBoxId ) = 0;
-	
+
     /**
      * checks if mailbox supports given capability
      *
@@ -181,9 +182,9 @@
      *
      * @return true/false
      */
-     virtual TBool MailboxHasCapabilityL( 	TFSMailBoxCapabilities aCapability,
-	 										TFSMailMsgId aMailBoxId ) = 0;
-	 	 
+     virtual TBool MailboxHasCapabilityL(   TFSMailBoxCapabilities aCapability,
+                                            TFSMailMsgId aMailBoxId ) = 0;
+
     /**
      * lists existing mailboxes contained by plugin
      *
@@ -191,33 +192,33 @@
      *        table owned by user
      * to this table owned by framework
      */
-  	 virtual void ListMailBoxesL( RArray<TFSMailMsgId>& aMailboxes) = 0;
+     virtual void ListMailBoxesL( RArray<TFSMailMsgId>& aMailboxes) = 0;
 
     /**
      * returns email mailbox object related to given mailbox id
      * mailbox data set by plugin :
-     *				 - mailbox id
+     *               - mailbox id
      *               - mailbox name
      *               - branding id
      *               - mailbox capabilities
      *
      * @param aMailBoxId mailbox id
      *
-     * @return mailBox object ( CFSMailBox ) to be owned by user 
+     * @return mailBox object ( CFSMailBox ) to be owned by user
      */
      virtual CFSMailBox* GetMailBoxByUidL( const TFSMailMsgId& aMailBoxId) = 0;
-      	  		
+
     /**
-     * removes mailbox 
+     * removes mailbox
      *
      * @param aMailBoxId id of the mailbox to be removed
      * @param aOperationObserver is FW provided observer that should be
      * used to report progress notifications during the operation.
      * @param aRequestId asynchronous request id
      */
-     virtual void DeleteMailBoxByUidL(	const TFSMailMsgId& aMailBoxId,
-	                                    MFSMailRequestObserver& aOperationObserver,
-	                                    const TInt aRequestId ) = 0;
+     virtual void DeleteMailBoxByUidL(  const TFSMailMsgId& aMailBoxId,
+                                        MFSMailRequestObserver& aOperationObserver,
+                                        const TInt aRequestId ) = 0;
 
     /**
      * Returns branding id of this mailbox.
@@ -243,7 +244,7 @@
      * Unsubscribes events from given mailbox
      *
      * @param aMailboxId id of target mailbox
-     * @param aObserver event observer 
+     * @param aObserver event observer
      */
      virtual void UnsubscribeMailboxEvents(const TFSMailMsgId& aMailboxId,
                                            MFSMailEventObserver& aObserver) = 0;
@@ -270,11 +271,23 @@
     /**
      * checks from plugin if connection is allowed when roaming
      *
-     * @param  aConnectionAllowed 
+     * @param  aConnectionAllowed
      * @return KErrNone or error code
      */
      virtual TInt IsConnectionAllowedWhenRoaming( TFSMailMsgId aMailBoxId, TBool& aConnectionAllowed );
 
+
+    /**
+      * Reads email from file stream and converts it to class CFSMailMessage
+      *
+      * @param  aMailBoxId mailbox where email exists
+      * @param  aFile input file given by user
+      * @return CFSMailMessage
+      */
+     virtual CFSMailMessage* CreateMessageFromFileL( const TFSMailMsgId /*aMailboxId*/,
+                                                     const RFile& /*aFile*/ )
+                                                     { return NULL; };
+
     /**
      * Moves a messages between the given folders.
      *
@@ -283,16 +296,30 @@
      * @param aSourceFolderId source folder id
      * @param aDestinationFolderId destination folder id
      *
-     */    
+     */
      virtual void MoveMessagesL( const TFSMailMsgId& aMailBoxId,
-                                 const RArray<TFSMailMsgId>& aMessageIds, 
+                                 const RArray<TFSMailMsgId>& aMessageIds,
                                  const TFSMailMsgId& aSourceFolderId,
                                  const TFSMailMsgId& aDestinationFolderId ) = 0;
-                                 
+
+    /**
+     * Moves a messages between the given folders. Async version.
+     * @param aMailBoxId id of the target mailbox
+     * @param aMessageIds ids of the messages to be transferred owned by user
+     * @param aSourceFolderId source folder id
+     * @param aDestinationFolderId destination folder id
+     */
+     virtual TInt MoveMessagesL( const TFSMailMsgId& /*aMailBoxId*/,
+                                 const RArray<TFSMailMsgId>& /*aMessageIds*/,
+                                 const TFSMailMsgId& /*aSourceFolderId*/,
+                                 const TFSMailMsgId& /*aDestinationFolderId*/,
+                                 MFSMailRequestObserver& /*aOperationObserver*/,
+                                 TInt /*aRequestId*/ ){return KErrNotSupported;}
+
     /**
      * Copies a messages from folder to another.
      * This function copies a messages to the given folder,
-     * including the properties, content, and all attachments. 
+     * including the properties, content, and all attachments.
      * (note Only works if the store is in an authenticated state,
      *  otherwise this function leaves with KErrNotReady)
      *
@@ -301,7 +328,7 @@
      * @param aNewMessages ids of the copied new messages owned by user
      * @param aSourceFolderId source folder id
      * @param aDestinationFolderId destination folder id
-     */    
+     */
      virtual void CopyMessagesL( const TFSMailMsgId& aMailBoxId,
                                  const RArray<TFSMailMsgId>& aMessageIds,
                                  RArray<TFSMailMsgId>& aNewMessages,
@@ -317,7 +344,7 @@
      *
      *  The function will leave with KErrNotFound if a mailbox with
      *  given id is not found.
-     *        
+     *
      * @param aMailBoxId target mailbox id
      *
      * @return Array of descriptors containing MRUs. Ownership
@@ -334,26 +361,26 @@
      *
      *  The function will leave with KErrNotFound if a mailbox with
      *  given id is not found.
-     *        
+     *
      * @param aMailBoxId target mailbox id
      * @param aNewMruList Array of descriptors containing MRUs.
      * Empty if no entries are found.
      */
      virtual void SetMrusL( const TFSMailMsgId& aMailBoxId,
                             MDesCArray* aNewMruList ) = 0;
-     						
-	/** FOLDER HANDLING API */
+
+    /** FOLDER HANDLING API */
     /**
      * returns email folder object related to given folder id
      * folder data set by plugin :
-     *				 - folder id
+     *               - folder id
      *               - folder name
-     *				 - folder type ; Inbox, Outbox, Sent, Drafts, Deleted, Other
+     *               - folder type ; Inbox, Outbox, Sent, Drafts, Deleted, Other
      *               - message count
      *               - unread message count
-     *               - mailbox id 
-	 *				 - parent folder
-	 *
+     *               - mailbox id
+     *               - parent folder
+     *
      * @param aMailBoxId id of mailbox containing folder
      * @param aFolderId folder id
      *
@@ -364,7 +391,7 @@
 
     /**
      * create new folder
-     * 
+     *
      * @param aMailBoxId id of the mailbox where folder is created
      * @param aFolderId id of the parent folder where folder is created
      * @param aFolderName name of the new folder
@@ -373,7 +400,7 @@
      *
      * @return new folder object CFSMailFolder to be owned by user
      */
-     virtual CFSMailFolder* CreateFolderL( 	const TFSMailMsgId& aMailBoxId,
+     virtual CFSMailFolder* CreateFolderL(  const TFSMailMsgId& aMailBoxId,
                                             const TFSMailMsgId& aParentFolderId,
                                             const TDesC& aFolderName,
                                             const TBool aSync ) = 0;
@@ -387,47 +414,47 @@
      virtual void DeleteFolderByUidL( const TFSMailMsgId& aMailBoxId,
                                       const TFSMailMsgId& aFolderId) = 0;
 
-	/**
-	 * Lists subfolders of given folder. 
-	 * Only direct subfolders of given folder are returned.
-	 * Folder data : 
-	 * - folder id
-	 * - folder name
-	 * - folder type ; Inbox, Outbox, Sent, Drafts, Deleted, Other
-	 * - message count
-	 * - unread message count
-	 * - mailbox id 
-	 * - parent folder
-	 * - subfolder count
-	 *
-	 * @param aMailBoxId id of the mailbox where parent folder is located
-	 * @param aFolderId parent folder id. TFSMailId::NullId() for root level list.
-	 * @param aFolderList plugin writes results in this array owned by user
-	 */
-	 virtual void ListFoldersL(	const TFSMailMsgId& aMailBoxId,
-	                            const TFSMailMsgId& aParentFolderId,
-	                            RPointerArray<CFSMailFolder>& aFolderList) = 0; 
-
-   /**
-     * List all subfolders of given mailbox. 
-     * folder data : 
+    /**
+     * Lists subfolders of given folder.
+     * Only direct subfolders of given folder are returned.
+     * Folder data :
      * - folder id
      * - folder name
      * - folder type ; Inbox, Outbox, Sent, Drafts, Deleted, Other
      * - message count
      * - unread message count
-     * - mailbox id 
+     * - mailbox id
+     * - parent folder
+     * - subfolder count
+     *
+     * @param aMailBoxId id of the mailbox where parent folder is located
+     * @param aFolderId parent folder id. TFSMailId::NullId() for root level list.
+     * @param aFolderList plugin writes results in this array owned by user
+     */
+     virtual void ListFoldersL( const TFSMailMsgId& aMailBoxId,
+                                const TFSMailMsgId& aParentFolderId,
+                                RPointerArray<CFSMailFolder>& aFolderList) = 0;
+
+   /**
+     * List all subfolders of given mailbox.
+     * folder data :
+     * - folder id
+     * - folder name
+     * - folder type ; Inbox, Outbox, Sent, Drafts, Deleted, Other
+     * - message count
+     * - unread message count
+     * - mailbox id
      * - parent folder
      * - subfolder count
      *
      * @param aMailBoxId mailbox id
      * @param aFolderList plugin writes results in this array owned by user.
-	 * Caller must determine tree structure by examining parent id of each
+     * Caller must determine tree structure by examining parent id of each
      * returned folder.
      */
-     virtual void ListFoldersL(	const TFSMailMsgId& aMailBoxId,
-                                RPointerArray<CFSMailFolder>& aFolderList) = 0; 
-    
+     virtual void ListFoldersL( const TFSMailMsgId& aMailBoxId,
+                                RPointerArray<CFSMailFolder>& aFolderList) = 0;
+
     /**
      * returns folder id of given standard folder
      *
@@ -437,57 +464,57 @@
      * return folder id
      */
      virtual TFSMailMsgId GetStandardFolderIdL( const TFSMailMsgId& aMailBoxId,
-	 											const TFSFolderType aFolderType ) = 0;
+                                                const TFSFolderType aFolderType ) = 0;
 
-	/** MESSAGE FETCH AND STORE */
+    /** MESSAGE FETCH AND STORE */
     /**
-     * List messages contained by given folder. 
+     * List messages contained by given folder.
      * Returns email list iterator to user.
      *
      * @param aMailBoxId id of the mailbox where parent folder is located
      * @param aFolderId folder id of given folder
      * @param aDetails defines which message details are included in messages
-	 * EFSMsgDataIdOnly  -> Doesn't get any data. The object just contains the ID.
-	 * EFSMsgDataDate    -> Get received date only. To be used when showing messages sorted by date.
+     * EFSMsgDataIdOnly  -> Doesn't get any data. The object just contains the ID.
+     * EFSMsgDataDate    -> Get received date only. To be used when showing messages sorted by date.
      *                      The rest would be retreived when needed but date is needed to build the list.
-	 * EFSMsgDataSubject -> Like above but when sorting by subject
-	 * EFSMsgDataSender  -> Likewise for sender address.
-	 * EFSMsgDataEnvelope, EFSMsgDataStructure -> email content type is returned by plugin
+     * EFSMsgDataSubject -> Like above but when sorting by subject
+     * EFSMsgDataSender  -> Likewise for sender address.
+     * EFSMsgDataEnvelope, EFSMsgDataStructure -> email content type is returned by plugin
      * @param aSorting describes requested sort criteria (owned by user).
      *        First item in array is primary sort criteria.
      *
      * @return Email list iterator, ownership is transferred to user.
-	 */
-	 virtual MFSMailIterator* ListMessagesL( const TFSMailMsgId& aMailBoxId,
-	                                         const TFSMailMsgId& aFolderId,
-	                                         const TFSMailDetails aDetails,
-	                                         const RArray<TFSMailSortCriteria>& aSorting ) = 0;
-	
+     */
+     virtual MFSMailIterator* ListMessagesL( const TFSMailMsgId& aMailBoxId,
+                                             const TFSMailMsgId& aFolderId,
+                                             const TFSMailDetails aDetails,
+                                             const RArray<TFSMailSortCriteria>& aSorting ) = 0;
+
     /**
      * returns email object related to given message id
      *
      * message info set by plugin :
-     *				  - message id
+     *                - message id
      *                - mailbox
-     *				  - parent folder
+     *                - parent folder
      *                - message size
-	 *                - the rest is defined by message attributes ;
+     *                - the rest is defined by message attributes ;
      * @param aMailBoxId id of the mailbox containing email
      * @param aFolderId parent folder id containing email
      * @param aMessageId email message id
      *
      * @param aDetails defines which message parts are included in message
-	 * EFSMsgDataIdOnly  -> Doesn't get any data. The object just contains the ID.
-	 * EFSMsgDataDate    -> Get received date only. To be used when showing messages sorted by date.
+     * EFSMsgDataIdOnly  -> Doesn't get any data. The object just contains the ID.
+     * EFSMsgDataDate    -> Get received date only. To be used when showing messages sorted by date.
      *                      The rest would be retreived when needed but date is needed to build the list.
-	 * EFSMsgDataSubject -> Like above but when sorting by subject
-	 * EFSMsgDataSender  -> Likewise for sender address.
-	 * EFSMsgDataEnvelope, EFSMsgDataStructure -> 
-	 * email content type is evaluated and returned by plugin
+     * EFSMsgDataSubject -> Like above but when sorting by subject
+     * EFSMsgDataSender  -> Likewise for sender address.
+     * EFSMsgDataEnvelope, EFSMsgDataStructure ->
+     * email content type is evaluated and returned by plugin
      *
      * @return email object (CFSMailMessage), ownership is transferred to user
      */
-     virtual CFSMailMessage* GetMessageByUidL( 	const TFSMailMsgId& aMailBoxId,
+     virtual CFSMailMessage* GetMessageByUidL(  const TFSMailMsgId& aMailBoxId,
                                                 const TFSMailMsgId& aParentFolderId,
                                                 const TFSMailMsgId& aMessageId,
                                                 const TFSMailDetails aDetails) = 0;
@@ -502,7 +529,7 @@
      virtual void DeleteMessagesByUidL( const TFSMailMsgId& aMailBoxId,
                                         const TFSMailMsgId& aFolderId,
                                         const RArray<TFSMailMsgId>& aMessages ) = 0;
-	 
+
     /**
      * creates new email template into drafts folder
      *
@@ -565,17 +592,17 @@
                                           const TDesC& aHeaderDescriptor = KNullDesC );
 // </qmail>
 
-     /**
-      * creates new email template to drafts folder to be replied
-      *
-      * @param aMailBoxId id of the mailbox where new email is created
-      * @param aOriginalMessageId id of original email,which is replied to
-      * @param aReplyToAll true if reply to all is wanted
-      * @param aHeaderDescriptor user can give quote headers data to plugin as
-      *        parameter if needed
-      *
-      * @return email object to be modified by user, ownership is transferred to user
-      */
+    /**
+     * creates new email template to drafts folder to be replied
+     *
+     * @param aMailBoxId id of the mailbox where new email is created
+     * @param aOriginalMessageId id of original email,which is replied to
+     * @param aReplyToAll true if reply to all is wanted
+     * @param aHeaderDescriptor user can give quote headers data to plugin as
+     *        parameter if needed
+     *
+     * @return email object to be modified by user, ownership is transferred to user
+     */
      virtual CFSMailMessage* CreateReplyMessageL( const TFSMailMsgId& aMailBoxId,
                                                   const TFSMailMsgId& aOriginalMessageId,
                                                   const TBool aReplyToAll,
@@ -632,19 +659,19 @@
     
     /**
      * starts email fetching from email server
-	 *
+     *
      * @param aMailBoxId id of the mailbox where email is located
      * @param aFolderId id of the parent folder containing email
      * @param aMessageIds ids of email to be fetched
      * @param aDetails defines which details are included in email
-	 * EFSMsgDataIdOnly  -> Doesn't get any data. The object just contains the ID.
-	 * EFSMsgDataDate    -> Get received date only. To be used when showing messages sorted by date.
+     * EFSMsgDataIdOnly  -> Doesn't get any data. The object just contains the ID.
+     * EFSMsgDataDate    -> Get received date only. To be used when showing messages sorted by date.
      *                      The rest would be retreived when needed but date is needed to build the list.
-	 * EFSMsgDataSubject -> Like above but when sorting by subject
-	 * EFSMsgDataSender  -> Likewise for sender address.
-	 * EFSMsgDataEnvelope -> Date, subject, Sender, To, Cc at least.
-	 * EFSMsgDataStructure -> the part structure including mime type, size and name headers.
-	 *
+     * EFSMsgDataSubject -> Like above but when sorting by subject
+     * EFSMsgDataSender  -> Likewise for sender address.
+     * EFSMsgDataEnvelope -> Date, subject, Sender, To, Cc at least.
+     * EFSMsgDataStructure -> the part structure including mime type, size and name headers.
+     *
      * @param aObserver observer (callback medhod), which plugin calls to pass progress
      *        events to user (like fetching has completed)
      * @param aRequestId asynchronous request id
@@ -655,10 +682,10 @@
                                   TFSMailDetails aDetails,
                                   MFSMailRequestObserver& aObserver,
                                   TInt aRequestId) = 0;
-     							 	
+
     /**
      * starts email parts fetching from email server
-	 *
+     *
      * @param aMailBoxId id of the mailbox where email is located
      * @param aFolderId id of the parent folder containing email
      * @param aMessagePartIds part ids of email parts, which are to be fetched
@@ -677,31 +704,31 @@
                                       MFSMailRequestObserver& aOperationObserver,
                                       const TInt aRequestId,
                                       const TUint aPreferredByteCount) = 0;
-        								
+
 
     /* reads email objects from plugin store
-	 *
+     *
      * @param aMailBoxId id of the mailbox where email are located
      * @param aParentFolderId parent folder id containing emails
      * @param aMessageIds ids of emails to be read from plugin store
- 	 * @param aMessageList plugin writes results into this table owned by user
+     * @param aMessageList plugin writes results into this table owned by user
      * @param aDetails defines which email details are included in each email object
-	 *        EFSMsgDataIdOnly  -> Doesn't get any data. The object just contains the ID.
-	 *        EFSMsgDataDate    -> Get received date only. To be used when showing
-	 *        messages sorted by date. The rest would be retreived when needed but
-	 *        date is needed to build the list.
-	 *        EFSMsgDataSubject -> Like above but when sorting by subject
-	 *        EFSMsgDataSender  -> Likewise for sender address.
-	 *        EFSMsgDataEnvelope -> Date, subject, Sender, To, Cc at least.
-	 *        EFSMsgDataStructure -> the part structure including mime type,
-	 *        size and name headers.
-	 */
-	 virtual void GetMessagesL(	const TFSMailMsgId& aMailBoxId,
-	                            const TFSMailMsgId& aParentFolderId,
-	                            const RArray<TFSMailMsgId>& aMessageIds,
-	                            RPointerArray<CFSMailMessage>& aMessageList,
-	                            const TFSMailDetails aDetails ) = 0;
-     							
+     *        EFSMsgDataIdOnly  -> Doesn't get any data. The object just contains the ID.
+     *        EFSMsgDataDate    -> Get received date only. To be used when showing
+     *        messages sorted by date. The rest would be retreived when needed but
+     *        date is needed to build the list.
+     *        EFSMsgDataSubject -> Like above but when sorting by subject
+     *        EFSMsgDataSender  -> Likewise for sender address.
+     *        EFSMsgDataEnvelope -> Date, subject, Sender, To, Cc at least.
+     *        EFSMsgDataStructure -> the part structure including mime type,
+     *        size and name headers.
+     */
+     virtual void GetMessagesL( const TFSMailMsgId& aMailBoxId,
+                                const TFSMailMsgId& aParentFolderId,
+                                const RArray<TFSMailMsgId>& aMessageIds,
+                                RPointerArray<CFSMailMessage>& aMessageList,
+                                const TFSMailDetails aDetails ) = 0;
+
     /**
      * Returns child part objects for given email part. Ownership of objects
      * is transferred to user.
@@ -720,7 +747,7 @@
 
     /**
      * Creates and adds a new child part to given email part.
-     * 
+     *
      * @param aMailBoxId id of the mailbox where email is located
      * @param aParentFolderId id of the parent folder where email is located
      * @param aMessageId id of the email email belongs to
@@ -730,7 +757,7 @@
      * @param aContentType content type of the new message part
      *
      * return new child part object, ownership is transferred to user
-     */        
+     */
      virtual CFSMailMessagePart* NewChildPartL( const TFSMailMsgId& aMailBoxId,
                                                 const TFSMailMsgId& aParentFolderId,
                                                 const TFSMailMsgId& aMessageId,
@@ -740,7 +767,7 @@
 
     /**
      * Creates and adds a new child part from file to given email part.
-     * 
+     *
      * @param aMailBoxId id of the mailbox where parent part is located
      * @param aParentFolderId id of the parent folder where email is located
      * @param aMessageId id of the email parent part belongs to
@@ -751,15 +778,15 @@
      * @param aFilePath file containing new child part contents
      *
      * return new child part object, ownership is transferred to user
-     */        
-	 virtual CFSMailMessagePart* NewChildPartFromFileL( const TFSMailMsgId& aMailBoxId,
-	                                                    const TFSMailMsgId& aParentFolderId,
-	                                                    const TFSMailMsgId& aMessageId,
-	                                                    const TFSMailMsgId& aParentPartId,
-	                                                    const TDesC& aContentType,
-	                                                    const TDesC& aFilePath) = 0;
+     */
+     virtual CFSMailMessagePart* NewChildPartFromFileL( const TFSMailMsgId& aMailBoxId,
+                                                        const TFSMailMsgId& aParentFolderId,
+                                                        const TFSMailMsgId& aMessageId,
+                                                        const TFSMailMsgId& aParentPartId,
+                                                        const TDesC& aContentType,
+                                                        const TDesC& aFilePath) = 0;
 
-     // <qmail>
+// <qmail>
 	    /**
 	     * Creates and adds a new child part from file to given email part.
 	     * 
@@ -771,6 +798,8 @@
 	     * If aInsertBefore is NULL id then new part is added as last.
 	     * @param aContentType content type of the new message part
 	     * @param aFilePath file containing new child part contents
+         * @param aOperationObserver Observer for the operation 
+         * @param aRequestId id of the operation
 	     *
 	     * return new child part object, ownership is transferred to user
 	     */        
@@ -782,7 +811,7 @@
 	                                        const TDesC& aFilePath,
 	                                        MFSMailRequestObserver& aOperationObserver,
 	                                        const TInt aRequestId );
-	 // </qmail>
+// </qmail>
 	 
 	 /**
 	  * Creates and adds a new child part from file to given email part.
@@ -806,10 +835,10 @@
 	                                                     const TDesC& aContentType, 
 	                                                     RFile& aFile ) = 0; 
 
-											    
+
     /**
      * Copies given email as new child part to given email part.
-     * 
+     *
      * @param aMailBoxId id of the mailbox where email is located
      * @param aParentFolderId id of the parent folder where email is located
      * @param aMessageId id of the email parent part belongs to
@@ -819,7 +848,7 @@
      * @param aMessage id of the email that is copied as child part
      *
      * return new child part object, ownership is transferred to user
-     */        
+     */
      virtual CFSMailMessagePart* CopyMessageAsChildPartL( const TFSMailMsgId& aMailBoxId,
                                                           const TFSMailMsgId& aParentFolderId,
                                                           const TFSMailMsgId& aMessageId,
@@ -829,19 +858,40 @@
 
     /**
      * Removes child part (and its children, if any) from given email part
-     * 
+     *
      * @param aMailBoxId id of the mailbox where email is located
      * @param aParentFolderId id of the parent folder where email is located
      * @param aMessageId id of the email parent part belongs to
      * @param aParentPartId id of the parent of the part
      * @param aPartId id of the part to removed
-     */        
-     virtual void RemoveChildPartL(	const TFSMailMsgId& aMailBoxId,
+     */
+     virtual void RemoveChildPartL( const TFSMailMsgId& aMailBoxId,
                                     const TFSMailMsgId& aParentFolderId,
                                     const TFSMailMsgId& aMessageId,
                                     const TFSMailMsgId& aParentPartId,
                                     const TFSMailMsgId& aPartId) = 0;
 
+// <qmail>
+     /**
+      * Removes child part (and its children, if any) from given email part
+      * 
+      * @param aMailBoxId id of the mailbox where email is located
+      * @param aParentFolderId id of the parent folder where email is located
+      * @param aMessageId id of the email parent part belongs to
+      * @param aParentPartId id of the parent of the part
+      * @param aPartId id of the part to removed
+      * @param aOperationObserver Observer for the operation 
+      * @param aRequestId id of the operation
+      */        
+      virtual void RemoveChildPartL( const TFSMailMsgId& aMailBoxId,
+                                     const TFSMailMsgId& aParentFolderId,
+                                     const TFSMailMsgId& aMessageId,
+                                     const TFSMailMsgId& aParentPartId,
+                                     const TFSMailMsgId& aPartId,
+                                     MFSMailRequestObserver& aOperationObserver,
+                                     const TInt aRequestId);
+// </qmail>
+      
     /**
      * Returns given message part. Ownership of object is transferred to caller.
      *
@@ -878,12 +928,12 @@
 
     /**
      * copies contents of this message part to given file
-     * 
+     *
      * @param aMailBoxId id of the mailbox where email is located
      * @param aParentFolderId id of the parent folder where email is located
      * @param aMessageId id of the email part belongs to
      * @param aMessagePartId id of the message part
-     * @param aContentLocation defines file location as 
+     * @param aContentLocation defines file location as
      * a) directory, when plugin finds out corresponding file name
      *    related to this part id, in this case last character should
      *    be '/'
@@ -912,7 +962,7 @@
                                        const TFSMailMsgId& aMessagePartId,
                                        TDes& aBuffer,
                                        const TUint aStartOffset) = 0;
-	 							 
+
     /**
      * stores email part content
      *
@@ -922,12 +972,12 @@
      * @param aMessageId id of the email part belongs to
      * @param aMessagePartId id of the message part
      */
-	 virtual void SetContentL(	const TDesC& aBuffer,
-	 						  	const TFSMailMsgId& aMailBoxId,
-     							const TFSMailMsgId& aParentFolderId,
-								const TFSMailMsgId& aMessageId,
-	 							const TFSMailMsgId& aMessagePartId) = 0; 
-	 
+     virtual void SetContentL(  const TDesC& aBuffer,
+                                const TFSMailMsgId& aMailBoxId,
+                                const TFSMailMsgId& aParentFolderId,
+                                const TFSMailMsgId& aMessageId,
+                                const TFSMailMsgId& aMessagePartId) = 0;
+
     /**
      * Removes fetched contents of these parts.
      *
@@ -935,16 +985,16 @@
      * @param aParentFolderId defines parent folder where message is located
      * @param aMessageId gives the id of the message that message part belongs to
      * @param aPartIds message part ids to be removed
-     */  
-     virtual void RemovePartContentL( 	const TFSMailMsgId& aMailBoxId,
-     	     							const TFSMailMsgId& aParentFolderId,
-									  	const TFSMailMsgId& aMessageId,
-     								  	const RArray<TFSMailMsgId>& aPartIds) = 0;
-     							
+     */
+     virtual void RemovePartContentL(   const TFSMailMsgId& aMailBoxId,
+                                        const TFSMailMsgId& aParentFolderId,
+                                        const TFSMailMsgId& aMessageId,
+                                        const RArray<TFSMailMsgId>& aPartIds) = 0;
+
     /**
      * Sets email part contents from given file.
      * Possible old contents are replaced.
-     * 
+     *
      * @param aMailBoxId id of the mailbox where email is located
      * @param aParentFolderId id of the parent folder where email is located
      * @param aMessageId id of the email part belongs to
@@ -966,9 +1016,9 @@
      * @param aMessagePart email part data to be stored
      */
      virtual void StoreMessagePartL( const TFSMailMsgId& aMailBoxId,
-   	     							 const TFSMailMsgId& aParentFolderId,
-									 const TFSMailMsgId& aMessageId,
-         							 CFSMailMessagePart& aMessagePart) = 0;
+                                     const TFSMailMsgId& aParentFolderId,
+                                     const TFSMailMsgId& aMessageId,
+                                     CFSMailMessagePart& aMessagePart) = 0;
      
     // <qmail>
     /**
@@ -984,12 +1034,12 @@
     // <//qmail>
 
     /**
-     * unregisters request observer to cancel pending events  
+     * unregisters request observer to cancel pending events
      *
      * @param aRequestId request id of the pending asynchronous request
      */
      virtual void UnregisterRequestObserver(TInt aRequestId) = 0;
-    
+
     /**
      * Launches email sending in plugin,
      * cancellation is deleting the message from outbox.
@@ -1012,8 +1062,8 @@
 
     /**
      * Returns pending asynchronous request status, request is identified
-	 * by request id if parallel requests exists
-	 *
+     * by request id if parallel requests exists
+     *
      * @param aRequestId request id
      *
      * @return pending request status
@@ -1024,11 +1074,11 @@
      * cancels pending request
      *
      * @param aRequestId identifies request if parallel requests exists
-	 */
+     */
      virtual void CancelL( const TInt aRequestId ) = 0;
-     
-	/** Search API */
-	
+
+    /** Search API */
+
     /**
      * Asyncronous call for starting search for given string. Only one search can be
      * performed at a time.
@@ -1037,54 +1087,54 @@
      * This function will search for message's containing the given search string.
      * The search will be performed on the all message fields: To, Cc, Bcc, subject, body.
      * The search client will be notified of each found message,
-     * and upon completion of the search.  Only one search can be performed at a time.  
-     *  
+     * and upon completion of the search.  Only one search can be performed at a time.
+     *
      * To change the sort order in the search result, use the same search string in the
      * but change the aSortCriteria parameter.  The store "caches" the search
      * results generated by the same search string.
-     *    
+     *
      * The function will leave with KErrInUse if a search is already in progress.
-	 *
+     *
      * /note Only works if the store is in an authenticated state,
      *  otherwise this function leaves with KErrNotReady
-     * 
+     *
      * @paran aMailBoxId id of the mailbox where messages are to be searched
      * @param aFolderIds list of folders where messages are to be searched
-	 * 	      global or folder specific search depends on the size of array is 0 or not.
+     *        global or folder specific search depends on the size of array is 0 or not.
      * @param aSearchStrings text strings that will be searched from different message fields.
-	 * @param aSortCriteria sort criteria for the results
+     * @param aSortCriteria sort criteria for the results
      * @param aSearchObserver client observer that will be notified about search status.
      *
-     */    
+     */
      virtual void SearchL( const TFSMailMsgId& aMailBoxId,
                            const RArray<TFSMailMsgId>& aFolderIds,
                            const RPointerArray<TDesC>& aSearchStrings,
                            const TFSMailSortCriteria& aSortCriteria,
                            MFSMailBoxSearchObserver& aSearchObserver ) = 0;
-	
+
 
     /**
      * Cancels current search. Does nothing if there is not any search.
      * The search client will not be called back after this function is called.
-	 *
-     * \note CancelSearch() method does NOT clear the search result cached in the store. 
-     *       A different sort order can be used for the same search string, and the 
+     *
+     * \note CancelSearch() method does NOT clear the search result cached in the store.
+     *       A different sort order can be used for the same search string, and the
      *       cache will be utilized.  Only by using a different search string can the
      *       cache be cleaned.
-	 *
+     *
      * @paran aMailBoxId id of the mailbox where the search should be cancelled
      */
      virtual void CancelSearch( const TFSMailMsgId& aMailBoxId ) = 0;
 
-    /** 
+    /**
      * Inform the store to clean up its cache for search results.
-     *        
+     *
      * This method cancels the the ongoing search (if exists), and then clean ups store's cache.
-     * 
+     *
      * This function should be called when search results are no longer in display.
-	 *
+     *
      * @paran aMailBoxId id of the mailbox where the search cache should be cleared
-	 */
+     */
      virtual void ClearSearchResultCache( const TFSMailMsgId& aMailBoxId ) = 0;
 
     /**
@@ -1113,7 +1163,7 @@
      virtual void AuthenticateL(MFSMailRequestObserver& aOperationObserver, TInt aRequestId) = 0;
 
     /**
-	 * sets authentication popup data 
+     * sets authentication popup data
      * @param aMailBoxId id of the mailbox
      * @param aUsername email account user name
      * @param aPassword email account password
@@ -1121,9 +1171,9 @@
     virtual void SetCredentialsL( const TFSMailMsgId& aMailBoxId,
                                   const TDesC& aUsername,
                                   const TDesC& aPassword )  = 0;
-    
+
     /**
-      * Sets the mailbox name for this mailbox. 
+      * Sets the mailbox name for this mailbox.
       *
       * @param aMailboxId id of target mailbox
       * @param aMailboxName new name for the mailbox
@@ -1139,7 +1189,7 @@
 
 private:
 
-  	/**
+    /**
      * Two-phased constructor
      */
      void ConstructL();
@@ -1147,10 +1197,10 @@
 private: // data
 
     /**
-     * instance identifier key for destructor 
+     * instance identifier key for destructor
      */
-    TUid		iDtor_ID_Key;
-    
+    TUid        iDtor_ID_Key;
+
     };
 
 //<cmail>
@@ -1158,5 +1208,5 @@
 //</cmail>
 
 #endif // CFSFW_MAIL_PLUGIN_H
-            
+
 // End of File