williamr@2: // Copyright (c) 1998-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@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
williamr@2: // which accompanies this distribution, and is available
williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.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: #if !defined (__IMAPCMDS_H__)
williamr@2: #define __IMAPCMDS_H__
williamr@2: 
williamr@2: #if !defined (__MSVSTD_HRH__)
williamr@2: #include <msvstd.hrh>
williamr@2: #endif
williamr@2: 
williamr@2: class TImap4RenameFolder
williamr@2: /** Buffer for an IMAP folder name. 
williamr@2: 
williamr@2: @see KIMAP4MTMRenameFolder
williamr@2: 
williamr@2: @publishedAll
williamr@2: @released
williamr@2: */
williamr@2: 	{
williamr@2: public:
williamr@2: 	/** IMAP folder name. */
williamr@2: 	TBuf<128> iNewName;
williamr@2: 	};
williamr@2: 
williamr@2: /** IMAP4-specific commands that can be issued through either 
williamr@2: CImap4ClientMtm::InvokeAsyncFunctionL() or, in a few cases, 
williamr@2: CImap4ClientMtm::InvokeSyncFunctionL().
williamr@2:  
williamr@2: These functions take an input message selection parameter 
williamr@2: (@c const CMsvEntrySelection& @c aSelection) and an input/output buffer parameter 
williamr@2: (TDes8& @c aParameter). The use of these parameters is command specific, and is 
williamr@2: described for each command below.
williamr@2: 
williamr@2: The commands fall into a number of categories: 
williamr@2: 
williamr@2: - Connect and logon to remote server:
williamr@2:   - #KIMAP4MTMConnect
williamr@2:   - #KIMAP4MTMDisconnect
williamr@2: - Synchronise headers:
williamr@2:   - #KIMAP4MTMCancelBackgroundSynchronise
williamr@2:   - #KIMAP4MTMConnectAndSyncCompleteAfterConnect
williamr@2:   - #KIMAP4MTMConnectAndSyncCompleteAfterDisconnect
williamr@2:   - #KIMAP4MTMConnectAndSyncCompleteAfterFullSync
williamr@2:   - #KIMAP4MTMConnectAndSynchronise
williamr@2:   - #KIMAP4MTMFolderFullSync
williamr@2:   - #KIMAP4MTMFullSync
williamr@2:   - #KIMAP4MTMInboxNewSync
williamr@2:   - #KIMAP4MTMSynchronise
williamr@2:   - #KIMAP4MTMWaitForBackground
williamr@2: - Subscribe to mailboxes:
williamr@2:   - #KIMAP4MTMLocalSubscribe
williamr@2:   - #KIMAP4MTMLocalUnsubscribe
williamr@2: - Populate messages:
williamr@2:   - #KIMAP4MTMPopulate
williamr@2:   - #KIMAP4MTMPopulateAllMailWhenAlreadyConnected
williamr@2:   - #KIMAP4MTMPopulateMailSelectionWhenAlreadyConnected
williamr@2:   - #KIMAP4MTMPopulateNewMailWhenAlreadyConnected
williamr@2:   - #KIMAP4MTMConnectAndPopulateAllMailAndDisconnect
williamr@2:   - #KIMAP4MTMConnectAndPopulateAllMailAndStayOnline
williamr@2:   - #KIMAP4MTMConnectAndPopulateMailSelectionAndDisconnect
williamr@2:   - #KIMAP4MTMConnectAndPopulateMailSelectionAndStayOnline
williamr@2:   - #KIMAP4MTMConnectAndPopulateNewMailAndDisconnect
williamr@2:   - #KIMAP4MTMConnectAndPopulateNewMailAndStayOnline
williamr@2: - Copy messages:
williamr@2:   - #KIMAP4MTMCopyAllMailWhenAlreadyConnected
williamr@2:   - #KIMAP4MTMCopyMailSelectionWhenAlreadyConnected
williamr@2:   - #KIMAP4MTMCopyNewMailWhenAlreadyConnected
williamr@2:   - #KIMAP4MTMConnectAndCopyAllMailAndDisconnect
williamr@2:   - #KIMAP4MTMConnectAndCopyAllMailAndStayOnline
williamr@2:   - #KIMAP4MTMConnectAndCopyMailSelectionAndDisconnect
williamr@2:   - #KIMAP4MTMConnectAndCopyMailSelectionAndStayOnline
williamr@2:   - #KIMAP4MTMConnectAndCopyNewMailAndDisconnect
williamr@2:   - #KIMAP4MTMConnectAndCopyNewMailAndStayOnline
williamr@2: - Move messages:
williamr@2:   - #KIMAP4MTMMoveAllMailWhenAlreadyConnected
williamr@2:   - #KIMAP4MTMMoveMailSelectionWhenAlreadyConnected
williamr@2:   - #KIMAP4MTMMoveNewMailWhenAlreadyConnected
williamr@2:   - #KIMAP4MTMConnectAndMoveAllMailAndDisconnect
williamr@2:   - #KIMAP4MTMConnectAndMoveAllMailAndStayOnline
williamr@2:   - #KIMAP4MTMConnectAndMoveMailSelectionAndDisconnect
williamr@2:   - #KIMAP4MTMConnectAndMoveMailSelectionAndStayOnline
williamr@2:   - #KIMAP4MTMConnectAndMoveNewMailAndDisconnect
williamr@2:   - #KIMAP4MTMConnectAndMoveNewMailAndStayOnline
williamr@2: - Create messages:
williamr@2:   - #KIMAP4MTMCreateForwardAsAttachmentEmailMessage
williamr@2:   - #KIMAP4MTMCreateForwardEmailMessage
williamr@2:   - #KIMAP4MTMCreateNewEmailMessage
williamr@2:   - #KIMAP4MTMCreateReceiptEmailMessage
williamr@2:   - #KIMAP4MTMCreateReplyEmailMessage
williamr@2:   .
williamr@2:   Note that CImEmailOperation is usually a more convenient way
williamr@2:   to create messages.
williamr@2: - Query state:
williamr@2:   - #KIMAP4MTMBusy
williamr@2:   - #KIMAP4MTMIsConnected
williamr@2: - Offline operations:
williamr@2:   - #KIMAP4MTMCancelOffLineOperations
williamr@2:   - #KIMAP4MTMUndeleteAll
williamr@2: - Miscellaneous:
williamr@2:   - #KIMAP4MTMEndBatch
williamr@2:   - #KIMAP4MTMRenameFolder
williamr@2:   - #KIMAP4MTMSelect
williamr@2:   - #KIMAP4MTMStartBatch
williamr@2: 
williamr@2: Note that when @c iServiceSelection is referred to in code examples for some
williamr@2: commands, this is assumed to be a CMsvEntrySelection that  
williamr@2: contain the entry ID of an IMAP service. 
williamr@2: 
williamr@2: @see CImap4ClientMtm::InvokeAsyncFunctionL() 
williamr@2: @see CImap4ClientMtm::InvokeSyncFunctionL()
williamr@2: 
williamr@2: @publishedAll
williamr@2: @released
williamr@2: */	
williamr@2: enum TImap4Cmds {
williamr@2: 	/** Tests if a specified service is connected.
williamr@2: 	
williamr@2: 	This command is synchronous, and used from @c InvokeSyncFunctionL().
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
williamr@2: 	to test.
williamr@2: 	 
williamr@2: 	@c aParameter: a packaged TInt. On return, this is set to  
williamr@2: 	KErrNone if the service is connected or KErrDisconnected if not. 
williamr@2: 	
williamr@2: 	Example:
williamr@2: 	@code
williamr@2: 	TPckgBuf<TInt> parameter;
williamr@2: 	iClientMtm->InvokeSyncFunctionL(KIMAP4MTMIsConnected, *iServiceSelection, parameter);
williamr@2: 	if (parameter()==KErrNone)
williamr@2: 		{
williamr@2: 		_LIT(KConnStatus, "\n\n Connected to the service");
williamr@2: 		iConsole->Printf(KConnStatus);
williamr@2: 		}	
williamr@2: 	@endcode
williamr@2: 	*/
williamr@2: 	KIMAP4MTMIsConnected = KMtmFirstFreeMtmFunctionId,
williamr@2: 	
williamr@2: 	/** Connects to the specified IMAP service.
williamr@2: 
williamr@2: 	This makes a network connection and logs on the IMAP server specified 
williamr@2: 	in the settings for the service. 
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
williamr@2: 	to connect to.
williamr@2: 	 
williamr@2: 	@c aParameter: packages a pointer to an implementation of the connection observer 
williamr@2: 	interface, MMsvImapConnectionObserver. Callbacks are made to this interface
williamr@2: 	to notify the client of the stages of connection.
williamr@2: 	
williamr@2: 	Completion: KErrBusy if the device is already connected to the specified server.
williamr@2: 
williamr@2: 	Example:
williamr@2: 	@code
williamr@2: 	TBuf8<1> parameter;
williamr@2: 	iOperation = iClientMtm->InvokeAsyncFunctionL(KIMAP4MTMConnect, *iServiceSelection, parameter, iStatus);    
williamr@2: 	@endcode	
williamr@2: 	*/
williamr@2: 	KIMAP4MTMConnect,
williamr@2: 	
williamr@2: 	/** Connects to the specified IMAP service, and starts a background synchronisation.
williamr@2: 
williamr@2: 	The call completes when the connection occurs and the synchronisation starts. See
williamr@2: 	CImap4ClientMtm for a description of a background synchronisation.
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
williamr@2: 	to connect to.
williamr@2: 	 
williamr@2: 	@c aParameter: packages a pointer to an implementation of the connection observer 
williamr@2: 	interface, MMsvImapConnectionObserver. Callbacks are made to this interface
williamr@2: 	to notify the client of the stages of connection and synchronisation.
williamr@2: 	
williamr@2: 	Completion: KErrBusy if the device is already connected to the specified server. 
williamr@2: 	
williamr@2: 	Example:
williamr@2: 	@code
williamr@2: 	TPckg<MMsvImapConnectionObserver*> parameter(this);	
williamr@2:   iOperation = iClientMtm->InvokeAsyncFunctionL(KIMAP4MTMConnectAndSynchronise, *iServiceSelection, parameter, iStatus);
williamr@2: 	@endcode
williamr@2: 	*/
williamr@2: 	KIMAP4MTMConnectAndSynchronise,
williamr@2: 	
williamr@2: 	/** Cancels a background synchronisation in progress.
williamr@2: 		
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
williamr@2: 	being synchronised.
williamr@2: 	 
williamr@2: 	@c aParameter: unused.
williamr@2: 	
williamr@2: 	Completion: KErrCancel if a synchronisation was cancelled; KErrNone if no
williamr@2: 	synchronisation was taking place.   
williamr@2: 
williamr@2: 	Example:
williamr@2: 	@code
williamr@2: 	TBuf8<1> parameter;
williamr@2:   iOperation = iClientMtm->InvokeAsyncFunctionL(KIMAP4MTMCancelBackgroundSynchronise, *iServiceSelection, parameter, iStatus);	
williamr@2: 	@endcode			
williamr@2: 	*/
williamr@2: 	KIMAP4MTMCancelBackgroundSynchronise,
williamr@2: 	
williamr@2: 	/** Ensures that the IMAP server will remain loaded ready for more commands. 
williamr@2: 	
williamr@2: 	If this is not set, then the Message Server can unload the IMAP server MTM
williamr@2: 	after a service is disconnected. It is more efficient if it stays loaded
williamr@2: 	if further use of the MTM is expected.
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
williamr@2: 	 
williamr@2: 	@c aParameter: unused.
williamr@2: 	
williamr@2: 	Completion: KErrNone.
williamr@2: 	*/
williamr@2: 	KIMAP4MTMStartBatch,
williamr@2: 	
williamr@2: 	/** Ends the effect of KIMAP4MTMStartBatch. 
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
williamr@2: 	 
williamr@2: 	@c aParameter: unused.
williamr@2: 	
williamr@2: 	Completion: KErrNone.	
williamr@2: 	*/
williamr@2: 	KIMAP4MTMEndBatch,
williamr@2: 	
williamr@2: 	/** Tests if the server is busy.
williamr@2: 
williamr@2: 	It can be used from either CImap4ClientMtm::InvokeAsyncFunctionL() or 
williamr@2: 	CImap4ClientMtm::InvokeSyncFunctionL().
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
williamr@2: 	 
williamr@2: 	@c aParameter: if the command is called from InvokeSyncFunctionL(), then on return a packaged
williamr@2: 	TInt holding the result.
williamr@2: 		
williamr@2: 	Completion: This completes with either KErrNone (neither session is busy) or KErrServerBusy 
williamr@2: 	otherwise. 
williamr@2: 	*/
williamr@2: 	KIMAP4MTMBusy,
williamr@2: 	
williamr@2: 	/** Issues an IMAP SELECT command on the specified mailbox. 
williamr@2: 
williamr@2: 	This is used to select an mailbox for the KIMAP4MTMSynchronise command.	
williamr@2: 	
williamr@2: 	Pre-condition: a connected service.
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the folder 
williamr@2: 	to select.
williamr@2: 	 
williamr@2: 	@c aParameter: Unused.
williamr@2: 		
williamr@2: 	Completion: KErrDisconnected if not connected. 
williamr@2: 	*/
williamr@2: 	KIMAP4MTMSelect,
williamr@2: 	
williamr@2: 	/** Synchronises the current folder that is selected on the remote server.
williamr@2: 
williamr@2: 	Note that after a connection is made, the Inbox folder is selected by default.
williamr@2: 	
williamr@2: 	Pre-condition: a connected service.
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
williamr@2: 	 
williamr@2: 	@c aParameter: unused.
williamr@2: 	
williamr@2: 	Completion: KErrDisconnected if not connected. 	
williamr@2: 	*/
williamr@2: 	KIMAP4MTMSynchronise,
williamr@2: 	
williamr@2: 	/** Synchronises the connected service's folder tree with the folders on the remote IMAP server.
williamr@2: 
williamr@2: 	This creates and deletes folder entries in the message store under the remote service as needed,
williamr@2: 	to match the mailboxes that exist on the remote server. Note that this step is done as part of 
williamr@2: 	the normal service synchronisation operation.
williamr@2: 		
williamr@2: 	Pre-condition: a connected service.
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
williamr@2: 	 
williamr@2: 	@c aParameter: unused.
williamr@2: 
williamr@2: 	Completion: KErrDisconnected if not connected; KErrServerBusy if a 
williamr@2: 	background synchronisation is already in progress. 	
williamr@2: 	*/
williamr@2: 	KIMAP4MTMSyncTree,
williamr@2: 	
williamr@2: 	/** Not supported. */
williamr@2: 	KIMAP4MTMReserved10,						// SyncSubscription
williamr@2: 	
williamr@2: 	/** Synchronises the specified service. 
williamr@2: 
williamr@2: 	This is a foreground synchronisation, and completes when the synchronisation is done.
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
williamr@2: 	to synchronise.
williamr@2: 	
williamr@2: 	@c aParameter: unused.
williamr@2: 	
williamr@2: 	Pre-condition: a connected service.
williamr@2: 	
williamr@2: 	Completion: KErrDisconnected if not connected; KErrServerBusy if a 
williamr@2: 	background synchronisation is already in progress.
williamr@2: 	*/
williamr@2: 	KIMAP4MTMFullSync,
williamr@2: 	
williamr@2: 	/** Cancels any operations in progress and sends logout messages to server.
williamr@2: 
williamr@2: 	If CImImap4Settings::SetDeleteEmailsWhenDisconnecting() is set,
williamr@2: 	any messages marked as deleted while offline are deleted before logout.
williamr@2: 
williamr@2: 	Pre-condition: a connected service.
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
williamr@2: 	 
williamr@2: 	@c aParameter: unused.
williamr@2: 
williamr@2: 	Completion: KErrDisconnected if not connected.
williamr@2: 	*/
williamr@2: 	KIMAP4MTMDisconnect,
williamr@2: 
williamr@2: 	/** Sets the local subscription flag on a specified folder. 
williamr@2: 
williamr@2: 	This sets the local subscription flag on the folder's index entry 
williamr@2: 	(see TMsvEmailEntry::SetLocalSubscription()), and saves the changed entry 
williamr@2: 	to the index.
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the folder 
williamr@2: 	to subscribe to.
williamr@2: 	 
williamr@2: 	@c aParameter: unused.
williamr@2: 	
williamr@2: 	Completion: KErrNotSupported if the entry is not a folder; KErrNone on success.   
williamr@2: 	*/
williamr@2: 	KIMAP4MTMLocalSubscribe,
williamr@2: 
williamr@2: 	/** Clears the local subscription flag on the specified folder.
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the folder 
williamr@2: 	to unsubscribe from.
williamr@2: 	 
williamr@2: 	@c aParameter: unused.
williamr@2: 
williamr@2: 	Completion: KErrNotSupported if the entry is not a folder; KErrNone on success.   
williamr@2: 	*/
williamr@2: 	KIMAP4MTMLocalUnsubscribe,
williamr@2:     
williamr@2: 	/** Not supported. */
williamr@2: 	KIMAP4MTMReserved15,						// MakeRemoteMailboxesInvisible
williamr@2: 	/** Not supported. */
williamr@2: 	KIMAP4MTMReserved16,						// MakeRemoteMailboxesVisible
williamr@2: 	
williamr@2: 	/** Synchronises any messages received by the remote server Inbox since the
williamr@2: 	last synchronisation operation.
williamr@2: 
williamr@2: 	Messages that have been deleted from the remote Inbox are not deleted from
williamr@2: 	the mirror.
williamr@2: 
williamr@2: 	Pre-condition: a connected service.
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
williamr@2: 	 
williamr@2: 	@c aParameter: unused.
williamr@2: 
williamr@2: 	Completion: KErrDisconnected if not connected; KErrServerBusy if a 
williamr@2: 	background synchronisation is already in progress.
williamr@2: 	*/
williamr@2: 	KIMAP4MTMInboxNewSync,
williamr@2: 	
williamr@2: 	/** Selects and synchronises the specified folder. 
williamr@2: 	
williamr@2: 	Pre-condition: a connected service.
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the folder to synchronise.
williamr@2: 	 
williamr@2: 	@c aParameter: unused.
williamr@2: 
williamr@2: 	Completion: KErrDisconnected if not connected.
williamr@2: 	*/
williamr@2: 	KIMAP4MTMFolderFullSync,
williamr@2: 	
williamr@2: 	/** Completes only when a background synchronisation has finished. 
williamr@2: 		
williamr@2: 	This turns a background synchronisation into a foreground synchronisation.
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
williamr@2: 	being synchronised.
williamr@2: 	 
williamr@2: 	@c aParameter: unused.
williamr@2: 	
williamr@2: 	Completion: KErrNone when no background synchronisation is in progress.   
williamr@2: 	
williamr@2: 	Example:
williamr@2: 	@code
williamr@2: 	TBuf8<1> parameter;
williamr@2: 	iOperation = iClientMtm->InvokeAsyncFunctionL(KIMAP4MTMWaitForBackground, *iServiceSelection, parameter, iStatus);	
williamr@2: 	@endcode
williamr@2: 	*/
williamr@2: 	KIMAP4MTMWaitForBackground,
williamr@2: 	
williamr@2: 	/** Renames a specified folder.
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the folder to rename. 
williamr@2: 	 
williamr@2: 	@c aParameter: the new name for the folder. This should be a packaged TImap4RenameFolder object.
williamr@2: 
williamr@2: 	Pre-conditions: a connected service.
williamr@2: 			
williamr@2: 	Completion: KErrDisconnected if there is no connected service. 
williamr@2: 	
williamr@2: 	Example:
williamr@2: 	@code
williamr@2: 	// rename folder, assumed to be identified in *selection[0], to "newname".
williamr@2: 	_LIT(KNewName, "newname");
williamr@2: 	TImap4RenameFolder newName;
williamr@2: 	newName.iNewName = KNewName;	
williamr@2: 	TPckg<TImap4RenameFolder> name(newName);
williamr@2: 	iOperation = iClientMtm->InvokeAsyncFunctionL(KIMAP4MTMRenameFolder, *selection, name, iStatus);	
williamr@2: 	@endcode
williamr@2: 	 */
williamr@2: 	KIMAP4MTMRenameFolder,
williamr@2: 		
williamr@2: 	/** Undoes any offline delete operations pending on the specified entries.
williamr@2: 		
williamr@2: 	@c aSelection: Entries on which to cancel offline delete operations. 
williamr@2: 	 
williamr@2: 	@c aParameter: Unused.
williamr@2: 
williamr@2: 	Completion: KErrNone.
williamr@2: 	*/
williamr@2: 	KIMAP4MTMUndeleteAll,
williamr@2: 	
williamr@2: 	/** Cancels any offline operations pending on the specified entries.
williamr@2: 	
williamr@2: 	If any item is a folder, then it cancels all operations queued on any item 
williamr@2: 	in that folder. If an IMAP4 service ID is given, then it cancels any Copy() 
williamr@2: 	or MoveFromLocal() operations that are queued. A message can not have its 
williamr@2: 	pending operations cancelled individually. 
williamr@2: 	
williamr@2: 	@c aSelection: Entries on which to cancel offline operations. 
williamr@2: 	 
williamr@2: 	@c aParameter: Unused.
williamr@2: 
williamr@2: 	Completion: KErrNone.	
williamr@2: 	*/
williamr@2: 	KIMAP4MTMCancelOffLineOperations,
williamr@2: 
williamr@2: 	/** Fetches the specified messages from the remote server to the mirror. 
williamr@2: 		
williamr@2: 	@c aSelection: Messages to fetch.
williamr@2: 
williamr@2: 	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
williamr@2: 	specifying the message parts to fetch and size limits on what is fetched.
williamr@2: 
williamr@2: 	*/
williamr@2: 	KIMAP4MTMPopulate,
williamr@2: 
williamr@2: 	/** Not supported. */
williamr@2: 	KIMAP4MTMSyncSubscription,
williamr@2: 
williamr@2: 	/** Connect and synchronise the specified service, and complete after connection. 
williamr@2: 	
williamr@2: 	The operation completes when the connection part completes. The synchronisation
williamr@2: 	is done in the background. 
williamr@2: 	
williamr@2: 	The command	has the same functionality as KIMAP4MTMConnectAndSynchronise.  
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
williamr@2: 	to connect to.
williamr@2: 	 
williamr@2: 	@c aParameter: packages a pointer to an implementation of the connection observer 
williamr@2: 	interface, MMsvImapConnectionObserver. Callbacks are made to this interface
williamr@2: 	to notify the client of the stages of connection and synchronisation.
williamr@2: 	
williamr@2: 	Completion: KErrBusy if a connected session already exists. 	
williamr@2: 	*/
williamr@2: 	KIMAP4MTMConnectAndSyncCompleteAfterConnect,
williamr@2: 	
williamr@2: 	/** Connect and synchronise the specified service, and complete after synchronisation. 
williamr@2: 	
williamr@2: 	This is similar to KIMAP4MTMConnectAndSynchronise, except that the operation
williamr@2: 	does not complete until synchronisation is complete.  
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
williamr@2: 	to connect to.
williamr@2: 	 
williamr@2: 	@c aParameter: packages a pointer to an implementation of the connection observer 
williamr@2: 	interface, MMsvImapConnectionObserver. Callbacks are made to this interface
williamr@2: 	to notify the client of the stages of connection and synchronisation.
williamr@2: 	
williamr@2: 	Completion: KErrBusy if a connected session already exists. 	
williamr@2: 	*/
williamr@2: 	KIMAP4MTMConnectAndSyncCompleteAfterFullSync,
williamr@2: 	
williamr@2: 	/** Connect and synchronise the specified service, and complete after disconnection.
williamr@2: 	
williamr@2: 	Unlike the other synchronisation commands, this command does not complete
williamr@2: 	after either connection or synchronisation. Instead, after the initial synchronisation
williamr@2: 	is complete, it periodically resynchronises the Inbox until the service is disconnected.
williamr@2: 	CImImap4Settings::SyncRate() sets the refresh period. 
williamr@2: 	
williamr@2: 	Disconnection can occur because the network connection is closed, either through 
williamr@2: 	user action, or because a networking timeout occurs on the socket. 
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service
williamr@2: 	to connect to.
williamr@2: 
williamr@2: 	@c aParameter: packages a pointer to an implementation of the connection
williamr@2: 	observer interface, MMsvImapConnectionObserver. Callbacks are made to this
williamr@2: 	interface to notify the client of the stages of connection and
williamr@2: 	synchronisation.
williamr@2: 
williamr@2: 	Completion: KErrBusy if a connected session already exists.
williamr@2: 	*/
williamr@2: 	KIMAP4MTMConnectAndSyncCompleteAfterDisconnect,
williamr@2: 	
williamr@2: 	/** Not supported. */
williamr@2: 	KIMAP4MTMCancelSendOnNextConnection,
williamr@2: 	
williamr@2: 	/** Copy any new messages from a specified folder to another folder,
williamr@2: 	assuming a new connection does not need to be made.
williamr@2: 
williamr@2: 	This is used after message headers have been synchronised. Any messages marked
williamr@2: 	as new are populated in the mirror, and then copied to the specified destination folder.
williamr@2: 
williamr@2: 	Pre-condition: a connected service.
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
williamr@2: 	@c aSelection[1] should contain the entry ID of the folder from which
williamr@2: 	to copy the entries.
williamr@2: 
williamr@2: 	@c aParameter: packaged TImImap4GetMailInfo object.
williamr@2: 	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
williamr@2: 	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
williamr@2: 	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
williamr@2: 	the entire message is always fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no new entries, then KErrNone, and progress
williamr@2: 	information is a null descriptor.	
williamr@2: 	*/
williamr@2: 	KIMAP4MTMCopyNewMailWhenAlreadyConnected,
williamr@2: 	
williamr@2: 	/** Connect to a specified service, copy any new messages from 
williamr@2: 	a specified folder into another folder, and stay connected. 
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
williamr@2: 	@c aSelection[1] should contain the entry ID of the folder containing
williamr@2: 	the messages to copy.
williamr@2: 
williamr@2: 	@c aParameter: packaged TImImap4GetMailInfo object.
williamr@2: 	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
williamr@2: 	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
williamr@2: 	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
williamr@2: 	the entire message is always fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no new entries, then KErrNone, and progress
williamr@2: 	information is a null descriptor.			
williamr@2: 	*/
williamr@2: 	KIMAP4MTMConnectAndCopyNewMailAndStayOnline,
williamr@2: 	
williamr@2: 	/** Connect to a specified service, copy any new messages from 
williamr@2: 	a specified folder into another folder, and disconnect afterwards. 
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
williamr@2: 	@c aSelection[1] should contain the entry ID of the folder containing
williamr@2: 	the messages to copy.
williamr@2: 
williamr@2: 	@c aParameter: packaged TImImap4GetMailInfo object.
williamr@2: 	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
williamr@2: 	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
williamr@2: 	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
williamr@2: 	the entire message is always fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no new entries, then KErrNone, and progress
williamr@2: 	information is a null descriptor.			
williamr@2: 	*/
williamr@2: 	KIMAP4MTMConnectAndCopyNewMailAndDisconnect,
williamr@2: 		
williamr@2: 	/** Move any new messages from a specified folder to another folder,
williamr@2: 	assuming a new connection does not need to be made.
williamr@2: 
williamr@2: 	This is used after message headers have been synchronised. Any messages marked
williamr@2: 	as new are populated in the mirror, and then moved to the specified destination folder.
williamr@2: 
williamr@2: 	Pre-condition: a connected service.
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
williamr@2: 	@c aSelection[1] should contain the entry ID of the folder from which
williamr@2: 	to move the entries.
williamr@2: 
williamr@2: 	@c aParameter: packaged TImImap4GetMailInfo object.
williamr@2: 	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
williamr@2: 	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
williamr@2: 	are not moved. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
williamr@2: 	the entire message is always fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no new entries, then KErrNone, and progress
williamr@2: 	information is a null descriptor.	
williamr@2: 	*/
williamr@2: 	KIMAP4MTMMoveNewMailWhenAlreadyConnected,
williamr@2: 
williamr@2: 	/** Connect to a specified service, move any new messages from 
williamr@2: 	a specified folder into another folder, and stay connected. 
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
williamr@2: 	@c aSelection[1] should contain the entry ID of the folder containing
williamr@2: 	the messages to move.
williamr@2: 
williamr@2: 	@c aParameter: packaged TImImap4GetMailInfo object.
williamr@2: 	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
williamr@2: 	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
williamr@2: 	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
williamr@2: 	the entire message is always fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no new entries, then KErrNone, and progress
williamr@2: 	information is a null descriptor.			
williamr@2: 	*/
williamr@2: 	KIMAP4MTMConnectAndMoveNewMailAndStayOnline,
williamr@2: 	
williamr@2: 	/** Connect to a specified service, move any new messages from 
williamr@2: 	a specified folder into another folder, and disconnect afterwards. 
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
williamr@2: 	@c aSelection[1] should contain the entry ID of the folder containing
williamr@2: 	the messages to move.
williamr@2: 
williamr@2: 	@c aParameter: packaged TImImap4GetMailInfo object.
williamr@2: 	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
williamr@2: 	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
williamr@2: 	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
williamr@2: 	the entire message is always fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no new entries, then KErrNone, and progress
williamr@2: 	information is a null descriptor.			
williamr@2: 	*/
williamr@2: 	KIMAP4MTMConnectAndMoveNewMailAndDisconnect,
williamr@2: 
williamr@2: 	/** Copy the specified messages to another folder, assuming a new connection
williamr@2: 	does not need to be made.
williamr@2: 
williamr@2: 	The specified messages are populated in the mirror, and then copied to
williamr@2: 	the specified destination folder.
williamr@2: 
williamr@2: 	Pre-condition: a connected service.
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
williamr@2: 	followed by the IDs of the messages to copy.	
williamr@2: 
williamr@2: 	@c aParameter: packaged TImImap4GetMailInfo object.
williamr@2: 	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
williamr@2: 	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
williamr@2: 	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
williamr@2: 	the entire message is always fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no entries to copy, then KErrNone, and progress
williamr@2: 	information is a null descriptor.
williamr@2: 	*/
williamr@2: 	KIMAP4MTMCopyMailSelectionWhenAlreadyConnected,
williamr@2: 
williamr@2: 	/** Connect to a specified service, copy the specified messages to another 
williamr@2: 	folder, and stay connected.
williamr@2: 
williamr@2: 	The specified messages are populated in the mirror, and then copied to
williamr@2: 	the specified destination folder.
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
williamr@2: 	followed by the IDs of the messages to copy.	
williamr@2: 
williamr@2: 	@c aParameter: packaged TImImap4GetMailInfo object.
williamr@2: 	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
williamr@2: 	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
williamr@2: 	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
williamr@2: 	the entire message is always fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no entries to copy, then KErrNone, and progress
williamr@2: 	information is a null descriptor.
williamr@2: 	*/
williamr@2: 	KIMAP4MTMConnectAndCopyMailSelectionAndStayOnline,
williamr@2: 
williamr@2: 	/** Connect to a specified service, copy the specified messages to another 
williamr@2: 	folder, and disconnect afterwards.
williamr@2: 
williamr@2: 	The specified messages are populated in the mirror, and then copied to
williamr@2: 	the specified destination folder.
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
williamr@2: 	followed by the IDs of the messages to copy.	
williamr@2: 
williamr@2: 	@c aParameter: packaged TImImap4GetMailInfo object.
williamr@2: 	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
williamr@2: 	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
williamr@2: 	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
williamr@2: 	the entire message is always fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no entries to copy, then KErrNone, and progress
williamr@2: 	information is a null descriptor.
williamr@2: 	*/
williamr@2: 	KIMAP4MTMConnectAndCopyMailSelectionAndDisconnect,
williamr@2: 
williamr@2: 	/** Move the specified messages to another folder, assuming a new connection 
williamr@2: 	does not need to be made. 
williamr@2: 
williamr@2: 	Pre-condition: a connected service.
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
williamr@2: 	followed by the IDs of the messages to move.	
williamr@2: 
williamr@2: 	@c aParameter: packaged TImImap4GetMailInfo object.
williamr@2: 	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
williamr@2: 	move the messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
williamr@2: 	are not moved. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
williamr@2: 	the entire message is always fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no entries to move, then KErrNone, and progress
williamr@2: 	information is a null descriptor.	
williamr@2: 	*/
williamr@2: 	KIMAP4MTMMoveMailSelectionWhenAlreadyConnected,
williamr@2: 	
williamr@2: 	/** Connect to a specified service, move the specified messages to another 
williamr@2: 	folder, and stay connected.
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
williamr@2: 	followed by the IDs of the messages to move.	
williamr@2: 
williamr@2: 	@c aParameter: packaged TImImap4GetMailInfo object.
williamr@2: 	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
williamr@2: 	move the messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
williamr@2: 	are not moved. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
williamr@2: 	the entire message is always fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no entries to move, then KErrNone, and progress
williamr@2: 	information is a null descriptor.	
williamr@2: 	*/
williamr@2: 	KIMAP4MTMConnectAndMoveMailSelectionAndStayOnline,
williamr@2: 
williamr@2: 	/** Connect to a specified service, move the specified messages to another 
williamr@2: 	folder, and disconnect afterwards.
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
williamr@2: 	followed by the IDs of the messages to move.	
williamr@2: 
williamr@2: 	@c aParameter: packaged TImImap4GetMailInfo object.
williamr@2: 	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
williamr@2: 	move the messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
williamr@2: 	are not moved. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
williamr@2: 	the entire message is always fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no entries to move, then KErrNone, and progress
williamr@2: 	information is a null descriptor.	
williamr@2: 	*/
williamr@2: 	KIMAP4MTMConnectAndMoveMailSelectionAndDisconnect,
williamr@2: 
williamr@2: 	/** Copy all messages from the current service, assuming a new connection does 
williamr@2: 	not need to be made. 
williamr@2: 
williamr@2: 	Pre-condition: a connected service.
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
williamr@2: 	@c aSelection[1] should contain the entry ID of the folder from which
williamr@2: 	to copy the entries.
williamr@2: 
williamr@2: 	@c aParameter: packaged TImImap4GetMailInfo object.
williamr@2: 	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
williamr@2: 	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
williamr@2: 	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
williamr@2: 	the entire message is always fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no entries to copy, then KErrNone, and progress
williamr@2: 	information is a null descriptor.	
williamr@2: 	*/
williamr@2: 	KIMAP4MTMCopyAllMailWhenAlreadyConnected,
williamr@2: 
williamr@2: 	/** Connect to a specified service, copy all messages from the current service, 
williamr@2: 	and stay connected. 
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
williamr@2: 	@c aSelection[1] should contain the entry ID of the folder from which
williamr@2: 	to copy the entries.
williamr@2: 
williamr@2: 	@c aParameter: packaged TImImap4GetMailInfo object.
williamr@2: 	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
williamr@2: 	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
williamr@2: 	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
williamr@2: 	the entire message is always fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no entries to copy, then KErrNone, and progress
williamr@2: 	information is a null descriptor.	
williamr@2: 	*/
williamr@2: 	KIMAP4MTMConnectAndCopyAllMailAndStayOnline,
williamr@2: 
williamr@2: 	/** Connect to a specified service, copy all messages from the current service, 
williamr@2: 	and disconnect afterwards. 
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
williamr@2: 	@c aSelection[1] should contain the entry ID of the folder from which
williamr@2: 	to copy the entries.
williamr@2: 
williamr@2: 	@c aParameter: packaged TImImap4GetMailInfo object.
williamr@2: 	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
williamr@2: 	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
williamr@2: 	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
williamr@2: 	the entire message is always fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no entries to copy, then KErrNone, and progress
williamr@2: 	information is a null descriptor.	
williamr@2: 	*/
williamr@2: 	KIMAP4MTMConnectAndCopyAllMailAndDisconnect,
williamr@2: 
williamr@2: 	/** Move all messages from the specified folder, assuming a new connection does 
williamr@2: 	not need to be made. 
williamr@2: 
williamr@2: 	Pre-condition: a connected service.
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
williamr@2: 	@c aSelection[1] should contain the entry ID of the folder from which
williamr@2: 	to move the entries.
williamr@2: 
williamr@2: 	@c aParameter: packaged TImImap4GetMailInfo object.
williamr@2: 	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
williamr@2: 	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
williamr@2: 	are not moved. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
williamr@2: 	the entire message is always fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no entries to move, then KErrNone, and progress
williamr@2: 	information is a null descriptor.	
williamr@2: 	*/
williamr@2: 	KIMAP4MTMMoveAllMailWhenAlreadyConnected,
williamr@2: 
williamr@2: 	/** Connect to a specified service, move all messages from 
williamr@2: 	a specified folder into another folder, and stay connected. 
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
williamr@2: 	@c aSelection[1] should contain the entry ID of the folder containing
williamr@2: 	the messages to move.
williamr@2: 
williamr@2: 	@c aParameter: packaged TImImap4GetMailInfo object.
williamr@2: 	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
williamr@2: 	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
williamr@2: 	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
williamr@2: 	the entire message is always fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no new entries, then KErrNone, and progress
williamr@2: 	information is a null descriptor.			
williamr@2: 	*/	
williamr@2: 	KIMAP4MTMConnectAndMoveAllMailAndStayOnline,
williamr@2: 	
williamr@2: 	/** Connect to a specified service, move all messages from 
williamr@2: 	a specified folder into another folder, and disconnect afterwards. 
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
williamr@2: 	@c aSelection[1] should contain the entry ID of the folder containing
williamr@2: 	the messages to move.
williamr@2: 
williamr@2: 	@c aParameter: packaged TImImap4GetMailInfo object.
williamr@2: 	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
williamr@2: 	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
williamr@2: 	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
williamr@2: 	the entire message is always fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no new entries, then KErrNone, and progress
williamr@2: 	information is a null descriptor.			
williamr@2: 	*/	
williamr@2: 	KIMAP4MTMConnectAndMoveAllMailAndDisconnect,
williamr@2: 
williamr@2: 	/** Populate the specified messages, assuming a new connection does not need to be made. 
williamr@2: 
williamr@2: 	Pre-condition: a connected service.
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
williamr@2: 	followed by the IDs of the messages to populate.
williamr@2: 	
williamr@2: 	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
williamr@2: 	specifying the message parts to fetch and size limits on what is fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no entries to populate, then KErrNone, and progress
williamr@2: 	information is a null descriptor.		
williamr@2: 	*/
williamr@2: 	KIMAP4MTMPopulateMailSelectionWhenAlreadyConnected,
williamr@2: 
williamr@2: 	/** Connect to a specified service, populate the specified messages, 
williamr@2: 	and stay connected.
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
williamr@2: 	followed by the IDs of the messages to populate.
williamr@2: 	
williamr@2: 	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
williamr@2: 	specifying the message parts to fetch and size limits on what is fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no entries to populate, then KErrNone, and progress
williamr@2: 	information is a null descriptor.		
williamr@2: 	*/
williamr@2: 	KIMAP4MTMConnectAndPopulateMailSelectionAndStayOnline,
williamr@2: 	
williamr@2: 	/** Connect to a specified service, populate the specified messages, 
williamr@2: 	and disconnect afterwards.
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
williamr@2: 	followed by the IDs of the messages to populate.
williamr@2: 	
williamr@2: 	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
williamr@2: 	specifying the message parts to fetch and size limits on what is fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no entries to populate, then KErrNone, and progress
williamr@2: 	information is a null descriptor.		
williamr@2: 	*/
williamr@2: 	KIMAP4MTMConnectAndPopulateMailSelectionAndDisconnect,
williamr@2: 
williamr@2: 	/** Populate the new messages in a specified folder, assuming a new connection does 
williamr@2: 	not need to be made. 
williamr@2: 	
williamr@2: 	Pre-condition: a connected service.
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
williamr@2: 	@c aSelection[1] should contain the entry ID of the folder containing
williamr@2: 	the messages to populate.
williamr@2: 
williamr@2: 	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
williamr@2: 	specifying the message parts to fetch and size limits on what is fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no entries to populate, then KErrNone, and progress
williamr@2: 	information is a null descriptor.			
williamr@2: 	*/
williamr@2: 	KIMAP4MTMPopulateNewMailWhenAlreadyConnected,
williamr@2: 
williamr@2: 	/** Populate all messages in a specified folder, assuming a new connection does 
williamr@2: 	not need to be made. 
williamr@2: 
williamr@2: 	Pre-condition: a connected service.
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
williamr@2: 	@c aSelection[1] should contain the entry ID of the folder containing
williamr@2: 	the messages to populate.
williamr@2: 	
williamr@2: 	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
williamr@2: 	specifying the message parts to fetch and size limits on what is fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no entries to populate, then KErrNone, and progress
williamr@2: 	information is a null descriptor.		
williamr@2: 	*/
williamr@2: 	KIMAP4MTMPopulateAllMailWhenAlreadyConnected,
williamr@2: 
williamr@2: 	/** Connect to a specified service, populate the new messages in a specified 
williamr@2: 	folder, and stay connected. 
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
williamr@2: 	@c aSelection[1] should contain the entry ID of the folder containing
williamr@2: 	the messages to populate.
williamr@2: 
williamr@2: 	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
williamr@2: 	specifying the message parts to fetch and size limits on what is fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no entries to populate, then KErrNone, and progress
williamr@2: 	information is a null descriptor.			
williamr@2: 	*/
williamr@2: 	KIMAP4MTMConnectAndPopulateNewMailAndStayOnline,
williamr@2: 	
williamr@2: 	/** Connect to a specified service, populate the new messages in a specified 
williamr@2: 	folder, and disconnect afterwards. 
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
williamr@2: 	@c aSelection[1] should contain the entry ID of the folder containing
williamr@2: 	the messages to populate.
williamr@2: 
williamr@2: 	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
williamr@2: 	specifying the message parts to fetch and size limits on what is fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no entries to populate, then KErrNone, and progress
williamr@2: 	information is a null descriptor.			
williamr@2: 	*/
williamr@2: 	KIMAP4MTMConnectAndPopulateNewMailAndDisconnect,
williamr@2: 
williamr@2: 	/** Connect to a specified service, populate all messages in a specified 
williamr@2: 	folder, and stay connected. 
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
williamr@2: 	@c aSelection[1] should contain the entry ID of the folder containing
williamr@2: 	the messages to populate.
williamr@2: 	
williamr@2: 	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
williamr@2: 	specifying the message parts to fetch and size limits on what is fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no entries to populate, then KErrNone, and progress
williamr@2: 	information is a null descriptor.	
williamr@2: 	*/
williamr@2: 	KIMAP4MTMConnectAndPopulateAllMailAndStayOnline,
williamr@2: 	
williamr@2: 	/** Connect to a specified service, populate all messages in a specified 
williamr@2: 	folder, and disconnect afterwards. 
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
williamr@2: 	@c aSelection[1] should contain the entry ID of the folder containing
williamr@2: 	the messages to populate.
williamr@2: 	
williamr@2: 	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
williamr@2: 	specifying the message parts to fetch and size limits on what is fetched.
williamr@2: 
williamr@2: 	Completion: note if there are no entries to populate, then KErrNone, and progress
williamr@2: 	information is a null descriptor.	
williamr@2: 	*/
williamr@2: 	KIMAP4MTMConnectAndPopulateAllMailAndDisconnect,
williamr@2: 
williamr@2: 	/** Creates a new email message. 
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the folder in 
williamr@2: 	which to create the message.
williamr@2: 	 
williamr@2: 	@c aParameter: a packaged TImCreateMessageOptions (see miutmsg.h) object, specifying
williamr@2: 	message creation flags and message type.
williamr@2: 	
williamr@2: 	The operation object returned is a CImEmailOperation. Final progress information 
williamr@2: 	from this contains the ID of the newly created message.
williamr@2: 	*/
williamr@2: 	KIMAP4MTMCreateNewEmailMessage,
williamr@2: 	
williamr@2: 	/** Creates a new reply message. 
williamr@2: 
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the folder in 
williamr@2: 	which to create the message; @c aSelection[1] should contain the entry ID 
williamr@2: 	of the message to which to create a reply.
williamr@2: 	 
williamr@2: 	@c aParameter: a packaged TImCreateMessageOptions (see miutmsg.h) object, specifying
williamr@2: 	message creation flags and message type.
williamr@2: 	
williamr@2: 	The operation object returned is a CImEmailOperation. Final progress information 
williamr@2: 	from this contains the ID of the newly created message.
williamr@2: 	*/
williamr@2: 	KIMAP4MTMCreateReplyEmailMessage,
williamr@2: 		
williamr@2: 	/** Creates a new forwarded message.
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the folder in 
williamr@2: 	which to create the message; @c aSelection[1] should contain the entry ID 
williamr@2: 	of the message to forward.
williamr@2: 	 
williamr@2: 	@c aParameter: a packaged TImCreateMessageOptions (see miutmsg.h) object, specifying
williamr@2: 	message creation flags and message type.
williamr@2: 	
williamr@2: 	The operation object returned is a CImEmailOperation. Final progress information 
williamr@2: 	from this contains the ID of the newly created message.
williamr@2: 	*/
williamr@2: 	KIMAP4MTMCreateForwardEmailMessage,
williamr@2: 
williamr@2: 	/** Creates a new forwarded message, with the original message as an attachment.
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the folder in 
williamr@2: 	which to create the message; @c aSelection[1] should contain the entry ID 
williamr@2: 	of the message to forward.
williamr@2: 	 
williamr@2: 	@c aParameter: a packaged TImCreateMessageOptions (see miutmsg.h) object, specifying
williamr@2: 	message creation flags and message type.
williamr@2: 	
williamr@2: 	The operation object returned is a CImEmailOperation. Final progress information 
williamr@2: 	from this contains the ID of the newly created message.
williamr@2: 	*/
williamr@2: 	KIMAP4MTMCreateForwardAsAttachmentEmailMessage,
williamr@2: 
williamr@2: 	/** Creates a new message-receipt message.
williamr@2: 	
williamr@2: 	@c aSelection: @c aSelection[0] should contain the entry ID of the folder in 
williamr@2: 	which to create the message; @c aSelection[1] should contain the entry ID 
williamr@2: 	of the original message for which the receipt is required.
williamr@2: 	 
williamr@2: 	@c aParameter: a packaged TImCreateMessageOptions (see miutmsg.h) object, specifying
williamr@2: 	message creation flags and message type.
williamr@2: 	
williamr@2: 	The operation object returned is a CImEmailOperation. Final progress information 
williamr@2: 	from this contains the ID of the newly created message.
williamr@2: 	*/
williamr@2: 	KIMAP4MTMCreateReceiptEmailMessage
williamr@2: };
williamr@2: 
williamr@2: #endif