epoc32/include/mtmuibas.h
branchSymbian2
changeset 3 e1b950c65cb4
parent 2 2fe1408b6811
child 4 837f303aceeb
     1.1 --- a/epoc32/include/mtmuibas.h	Tue Mar 16 16:12:26 2010 +0000
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,527 +0,0 @@
     1.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
     1.5 -// All rights reserved.
     1.6 -// This component and the accompanying materials are made available
     1.7 -// 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
     1.8 -// which accompanies this distribution, and is available
     1.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
    1.10 -//
    1.11 -// Initial Contributors:
    1.12 -// Nokia Corporation - initial contribution.
    1.13 -//
    1.14 -// Contributors:
    1.15 -//
    1.16 -// Description:
    1.17 -//
    1.18 -
    1.19 -#if !defined(__MTMUIBAS_H__)
    1.20 -#define __MTMUIBAS_H__
    1.21 -
    1.22 -#if !defined(__MSVSTD_H__)
    1.23 -#include <msvstd.h>
    1.24 -#endif
    1.25 -#if !defined(__MTCLBASE_H__)
    1.26 -#include <mtclbase.h>
    1.27 -#endif
    1.28 -
    1.29 -// Forward references
    1.30 -class CMsvSession;
    1.31 -class CMsvOperation;
    1.32 -class CCoeEnv;
    1.33 -
    1.34 -///////////////////////////////////
    1.35 -// CBaseMtmUi - MTMUi base API   //
    1.36 -///////////////////////////////////
    1.37 -class CBaseMtmUi : public CBase
    1.38 -/** Provides MTM-specific user interaction, such as editing, viewing, deleting, 
    1.39 -and copying of message entries. 
    1.40 -
    1.41 -Message client applications use the class to access such functionality polymorphically. 
    1.42 -MTM implementers implement a derived class to provide such functionality for 
    1.43 -their message protocol.
    1.44 -
    1.45 -The base class is largely an interface definition: it implements little important 
    1.46 -functionality itself. For implementers, this documentation defines conditions 
    1.47 -that any implementation must fulfil, plus suggested semantics for behaviour. 
    1.48 -This still leaves many decisions in the hands of the implementer. A key design 
    1.49 -time activity is to define how the particular characteristics of the implemented 
    1.50 -protocol are best mapped to the interface. As this class is concerned with 
    1.51 -user interfaces, implementers should be sensitive to the look and feel of 
    1.52 -the target phone.
    1.53 -
    1.54 -Many functions are required to return an instance of a CMsvOperation-derived 
    1.55 -class to provide asynchronous control and monitoring to the caller of the 
    1.56 -operation being performed. 
    1.57 -
    1.58 -The following are some significant groups of functions:
    1.59 -
    1.60 -Entry manipulation functions: OpenL(), CloseL(), EditL(), and ViewL() are 
    1.61 -all available in two overloaded versions. The first version operates on the 
    1.62 -current context. The second version operates upon groups of entries specified 
    1.63 -by a CMsvEntrySelection argument. All entries must be in same folder and all 
    1.64 -of the correct MTM type. The context may change after calling these functions. 
    1.65 -Concrete User Interface MTMs can legally ignore any of the entries within 
    1.66 -the selection - many may, for example, simply open the first entry.
    1.67 -
    1.68 -Copying and moving functions: the CopyToL(), CopyFromL(), MoveToL(), and MoveFromL() 
    1.69 -functions are concerned with copying and moving entries to and from remote 
    1.70 -servers. MTMs can implement these functions to provide any user interaction 
    1.71 -needed before copying or moving can proceed, such as dialogs to confirm settings; 
    1.72 -and, any protocol-specific setup steps that can be done at this stage: for 
    1.73 -example, a fax MTM could render messages into the required image format.
    1.74 -
    1.75 -Progress information functions: DisplayProgressSummary() and GetProgress() 
    1.76 -convert MTM-specific progress information about some asynchronous operation, 
    1.77 -such as message sending, to a human-readable form. The progress information 
    1.78 -to pass into these functions is, in general, obtained from an on-going CMsvOperation 
    1.79 -by calling CMsvOperation::Progress(). The nature of any information provided 
    1.80 -is MTM-specific. 
    1.81 -
    1.82 -MTM-specific UI functions: MTM components can offer protocol-specific functionality 
    1.83 -not provided by base class interface functions. MTM components define IDs 
    1.84 -that correspond to each protocol-specific operation offered, and implement 
    1.85 -the InvokeSyncFunctionL() and InvokeAsyncFunctionL() functions to allow clients 
    1.86 -to access these operations by passing in the appropriate ID. Two functions 
    1.87 -are provided to allow the MTM component to offer both synchronous and asynchronous 
    1.88 -functionality. Message client applications can dynamically add user-interface 
    1.89 -features for these operations using CBaseMtmUiData::MtmSpecificFunctions(). 
    1.90 -MTM developers should document the IDs if they wish to make the operations 
    1.91 -available to clients. 
    1.92 -@publishedAll
    1.93 -@released
    1.94 -*/
    1.95 -	{
    1.96 -public:
    1.97 -	//  --- enums ---
    1.98 -	/** Progress information buffer length. */
    1.99 -	enum {
   1.100 -	/** Defines the maximum buffer length used in GetProgress() to hold progress information. */
   1.101 -	EProgressStringMaxLen=255};
   1.102 -	//
   1.103 -	// --- Set up functionality ---
   1.104 -	IMPORT_C void SetPreferences(TUint aFlags);
   1.105 -	IMPORT_C TUint Preferences() const;
   1.106 -	//
   1.107 -	// --- Destruction ---
   1.108 -	IMPORT_C virtual ~CBaseMtmUi();
   1.109 -	//
   1.110 -	// --- Accessor functions ---
   1.111 -	IMPORT_C TUid Type() const;
   1.112 -	IMPORT_C CBaseMtm& BaseMtm() const;
   1.113 -	//
   1.114 -	// --- Functions NOT dependent on the current context ---
   1.115 -	IMPORT_C virtual CMsvOperation* CreateL(const TMsvEntry& aEntry, CMsvEntry& aParent, TRequestStatus& aStatus);
   1.116 -	//
   1.117 -	// --- Functions dependent on the current context ---
   1.118 -	/** Opens an entry. 
   1.119 -	
   1.120 -	The behaviour that this implies is dependent on the current context:
   1.121 -	
   1.122 -	1. for message contexts, OpenL() is the equivalent of EditL(), or for read-only 
   1.123 -	messages, ViewL(). Whether opening of remote messages is allowed is MTM-specific.
   1.124 -	
   1.125 -	2. for service contexts, the function may initiate a connection to obtain the 
   1.126 -	service contents from the server, completing asynchronously
   1.127 -	
   1.128 -	3. for remote folder contexts, dependent on implementation, the function may 
   1.129 -	initiate a connection to obtain the folder contents from the server, completing 
   1.130 -	asynchronously
   1.131 -	
   1.132 -	The returned CMsvOperation object completes when opening is complete.
   1.133 -	
   1.134 -	Requirements:
   1.135 -	
   1.136 -	If opening entries is not supported, implementations should leave with KErrNotSupported. 
   1.137 -	Otherwise, implementations should:
   1.138 -	
   1.139 -	1. check aEntry.iType.iUid to ensure that they can open the requested type of 
   1.140 -	entry and leave with code KErrNotSupported if they cannot
   1.141 -	
   1.142 -	2. return a CMsvOperation-derived object to provide asynchronous control and 
   1.143 -	monitoring of the operation
   1.144 -	
   1.145 -	3. for remote messages, typically, copy the messages to the Inbox
   1.146 -	
   1.147 -	@param aStatus The request status to be completed when the operation has finished 
   1.148 -	
   1.149 -	@leave KErrNotSupported The User Interface MTM does not support open operations, 
   1.150 -	or opening is inappropriate to the current context 
   1.151 -	@leave Other Dependent on implementation 
   1.152 -	@return If successful, this is an asynchronously completing open operation. 
   1.153 -	If failed, this is a completed operation, with status set to the relevant 
   1.154 -	error code. */
   1.155 -	virtual CMsvOperation* OpenL(TRequestStatus& aStatus) = 0; 
   1.156 -	/** Closes an entry. The behaviour that this implies is dependent on the current 
   1.157 -	context:
   1.158 -	
   1.159 -	1. for message contexts, this usually closes any launched editors or viewers
   1.160 -	
   1.161 -	2. for folder contexts, leaves with KErrNotSupported
   1.162 -	
   1.163 -	3. for service contexts, causes closure of a connection to a server
   1.164 -	
   1.165 -	The returned CMsvOperation object completes when closing is complete.
   1.166 -	
   1.167 -	Requirements:
   1.168 -	
   1.169 -	Implementations should:
   1.170 -	
   1.171 -	1. check aEntry.iType.iUid to ensure that they can close the requested type of 
   1.172 -	entry and leave with code KErrNotSupported if they cannot
   1.173 -	
   1.174 -	2. return a CMsvOperation-derived object to provide asynchronous control and 
   1.175 -	monitoring of the operation
   1.176 -	
   1.177 -	@param aStatus The request status to be completed when the operation has finished 
   1.178 -	
   1.179 -	@leave KErrNotSupported The User Interface MTM does not support close operations, 
   1.180 -	or closing is inappropriate to the current context 
   1.181 -	@leave Other Dependent on implementation 
   1.182 -	@return If successful, this is an asynchronously completing close operation. 
   1.183 -	If failed, this is a completed operation, with status set to the relevant 
   1.184 -	error code. */
   1.185 -	virtual CMsvOperation* CloseL(TRequestStatus& aStatus) = 0;
   1.186 -	/** Edits an entry. 
   1.187 -	
   1.188 -	The behaviour that this implies is dependent on the current 
   1.189 -	context:
   1.190 -	
   1.191 -	1. for message contexts, this usually launches the appropriate message editor, 
   1.192 -	or returns status KErrReadOnly if the message is not editable
   1.193 -	
   1.194 -	2. for remote folder contexts, launches a settings dialog, for example to rename 
   1.195 -	the folder, completing asynchronously
   1.196 -	
   1.197 -	3. for service contexts, launches a service settings dialog, completing asynchronously
   1.198 -	
   1.199 -	The returned CMsvOperation object completes when editing is complete.
   1.200 -	
   1.201 -	Requirements:
   1.202 -	
   1.203 -	Implementations should:
   1.204 -	
   1.205 -	1. check aEntry.iType.iUid to ensure that they can edit the requested type of 
   1.206 -	entry and leave with code KErrNotSupported if they cannot
   1.207 -	
   1.208 -	2. return a CMsvOperation-derived object to provide asynchronous control and 
   1.209 -	monitoring of the operation
   1.210 -	
   1.211 -	3. for remote messages, typically, copy the messages to the Inbox
   1.212 -	
   1.213 -	4. follow the leave protocols described in Leave considerations below
   1.214 -	
   1.215 -	@param aStatus The request status to be completed when the operation has finished 
   1.216 -	@leave KErrNotSupported The User Interface MTM does not support edit operations, 
   1.217 -	or editing is inappropriate to the current context 
   1.218 -	@leave KErrReadOnly Context is read-only 
   1.219 -	@leave Other Dependent on implementation 
   1.220 -	@return If successful, this is an asynchronously completing edit operation. 
   1.221 -	If failed, this is a completed operation, with status set to the relevant 
   1.222 -	error code. */
   1.223 -	virtual CMsvOperation* EditL(TRequestStatus& aStatus) = 0;// Launches editor/settings dialog as appropriate  
   1.224 -	/** Views an entry. 
   1.225 -	
   1.226 -	For message contexts, this usually launches the appropriate 
   1.227 -	message viewer. Other context types leave with KErrNotSupported. The returned 
   1.228 -	CMsvOperation object completes when viewing is complete.
   1.229 -	
   1.230 -	Requirements:
   1.231 -	
   1.232 -	Implementations should:
   1.233 -	
   1.234 -	1. check aEntry.iType.iUid to ensure that they can view the requested type of 
   1.235 -	entry and leave with code KErrNotSupported if they cannot
   1.236 -	
   1.237 -	2. return a CMsvOperation-derived object to provide asynchronous control and 
   1.238 -	monitoring of the operation
   1.239 -	
   1.240 -	@param aStatus The request status to be completed when the operation has finished 
   1.241 -	@leave KErrNotSupported The User Interface MTM does not support view operations, 
   1.242 -	or viewing is inappropriate to the current context 
   1.243 -	@leave Other Dependent on implementation 
   1.244 -	@return If successful, this is an asynchronously completing view operation. 
   1.245 -	If failed, this is a completed operation, with status set to the relevant 
   1.246 -	error code. */
   1.247 -	virtual CMsvOperation* ViewL(TRequestStatus& aStatus) = 0;// Launches viewer/settings dialog as appropriate  
   1.248 -	//
   1.249 -	// --- Actions upon message selections ---
   1.250 -	// --- Selections must be in same folder and all of the correct MTM type ---
   1.251 -	// --- Context may change after calling these functions ---
   1.252 -	/** Opens a selection of entries. 
   1.253 -	
   1.254 -	The behaviour that this implies is dependent on the current context:
   1.255 -	
   1.256 -	1. for message contexts, OpenL() is the equivalent of EditL(), or for read-only 
   1.257 -	messages, ViewL(). Whether opening of remote messages is allowed is MTM-specific.
   1.258 -	
   1.259 -	2. for service contexts, the function may initiate a connection to obtain the 
   1.260 -	service contents from the server, completing asynchronously
   1.261 -	
   1.262 -	3. for remote folder contexts, dependent on implementation, the function may 
   1.263 -	initiate a connection to obtain the folder contents from the server, completing 
   1.264 -	asynchronously
   1.265 -	
   1.266 -	The returned CMsvOperation object completes when opening is complete.
   1.267 -	
   1.268 -	Requirements:
   1.269 -	
   1.270 -	If opening entries is not supported, implementations should leave with KErrNotSupported. 
   1.271 -	Otherwise, implementations should:
   1.272 -	
   1.273 -	1. check aEntry.iType.iUid to ensure that they can open the requested type of 
   1.274 -	entry and leave with code KErrNotSupported if they cannot
   1.275 -	
   1.276 -	2. return a CMsvOperation-derived object to provide asynchronous control and 
   1.277 -	monitoring of the operation
   1.278 -	
   1.279 -	3. for remote messages, typically, copy the messages to the Inbox
   1.280 -	
   1.281 -	@param aStatus The request status to be completed when the operation has finished 
   1.282 -	@param aSelection Selection of message entries 
   1.283 -	@leave KErrNotSupported The User Interface MTM does not support open operations, 
   1.284 -	or opening is inappropriate to the current context 
   1.285 -	@leave Other Dependent on implementation 
   1.286 -	@return If successful, this is an asynchronously completing open operation. 
   1.287 -	If failed, this is a completed operation, with status set to the relevant 
   1.288 -	error code. */
   1.289 -	virtual CMsvOperation* OpenL(TRequestStatus& aStatus, const CMsvEntrySelection& aSelection) = 0; 
   1.290 -	/** Closes a selection of entries. 
   1.291 -	
   1.292 -	The behaviour that this implies is dependent on the current context:
   1.293 -	
   1.294 -	1. for message contexts, this usually closes any launched editors or viewers
   1.295 -	
   1.296 -	2. for folder contexts, leaves with KErrNotSupported
   1.297 -	
   1.298 -	3. for service contexts, causes closure of a connection to a server
   1.299 -	
   1.300 -	The returned CMsvOperation object completes when closing is complete.
   1.301 -	
   1.302 -	Requirements:
   1.303 -	
   1.304 -	Implementations should:
   1.305 -	
   1.306 -	1. check aEntry.iType.iUid to ensure that they can close the requested type of 
   1.307 -	entry and leave with code KErrNotSupported if they cannot
   1.308 -	
   1.309 -	2. return a CMsvOperation-derived object to provide asynchronous control and 
   1.310 -	monitoring of the operation
   1.311 -	
   1.312 -	@param aStatus The request status to be completed when the operation has finished 
   1.313 -	@param aSelection Selection of message entries 
   1.314 -	@leave KErrNotSupported The User Interface MTM does not support close operations, 
   1.315 -	or closing is inappropriate to the current context 
   1.316 -	@leave Other Dependent on implementation 
   1.317 -	@return If successful, this is an asynchronously completing close operation. 
   1.318 -	If failed, this is a completed operation, with status set to the relevant 
   1.319 -	error code. */
   1.320 -	virtual CMsvOperation* CloseL(TRequestStatus& aStatus, const CMsvEntrySelection& aSelection) = 0;
   1.321 -	/** Edits a selection of entries. 
   1.322 -	
   1.323 -	The behaviour that this implies is dependent on the current context:
   1.324 -	
   1.325 -	1. for message contexts, this usually launches the appropriate message editor, 
   1.326 -	or returns status KErrReadOnly if the message is not editable
   1.327 -	
   1.328 -	2. for remote folder contexts, launches a settings dialog, for example to rename 
   1.329 -	the folder, completing asynchronously
   1.330 -	
   1.331 -	3. for service contexts, launches a service settings dialog, completing asynchronously
   1.332 -	
   1.333 -	The returned CMsvOperation object completes when editing is complete.
   1.334 -	
   1.335 -	Requirements:
   1.336 -	
   1.337 -	Implementations should:
   1.338 -	
   1.339 -	1. check aEntry.iType.iUid to ensure that they can edit the requested type of 
   1.340 -	entry and leave with code KErrNotSupported if they cannot
   1.341 -	
   1.342 -	2. return a CMsvOperation-derived object to provide asynchronous control and 
   1.343 -	monitoring of the operation
   1.344 -	
   1.345 -	3. for remote messages, typically, copy the messages to the Inbox
   1.346 -	
   1.347 -	4. follow the leave protocols described in Leave considerations below
   1.348 -	
   1.349 -	@param aStatus The request status to be completed when the operation has finished 
   1.350 -	@param aSelection Selection of message entries 
   1.351 -	@leave KErrNotSupported The User Interface MTM does not support edit operations, 
   1.352 -	or editing is inappropriate to the current context 
   1.353 -	@leave KErrReadOnly Context is read-only 
   1.354 -	@leave Other Dependent on implementation 
   1.355 -	@return If successful, this is an asynchronously completing edit operation. 
   1.356 -	If failed, this is a completed operation, with status set to the relevant 
   1.357 -	error code. */
   1.358 -	virtual CMsvOperation* EditL(TRequestStatus& aStatus, const CMsvEntrySelection& aSelection) = 0;// Launches editor/settings dialog as appropriate  
   1.359 -	/** Views a selection of entries. 
   1.360 -	
   1.361 -	For message contexts, this usually launches the appropriate 
   1.362 -	message viewer. Other context types leave with KErrNotSupported. The returned 
   1.363 -	CMsvOperation object completes when viewing is complete.
   1.364 -	
   1.365 -	Requirements:
   1.366 -	
   1.367 -	Implementations should:
   1.368 -	
   1.369 -	1. check aEntry.iType.iUid to ensure that they can view the requested type of 
   1.370 -	entry and leave with code KErrNotSupported if they cannot
   1.371 -	
   1.372 -	2. return a CMsvOperation-derived object to provide asynchronous control and 
   1.373 -	monitoring of the operation
   1.374 -	
   1.375 -	@param aStatus The request status to be completed when the operation has finished 
   1.376 -	@param aSelection Selection of message entries 
   1.377 -	@leave KErrNotSupported The User Interface MTM does not support view operations, 
   1.378 -	or viewing is inappropriate to the current context 
   1.379 -	@leave Other Dependent on implementation 
   1.380 -	@return If successful, this is an asynchronously completing view operation. 
   1.381 -	If failed, this is a completed operation, with status set to the relevant 
   1.382 -	error code. */
   1.383 -	virtual CMsvOperation* ViewL(TRequestStatus& aStatus, const CMsvEntrySelection& aSelection) = 0;// Launches viewer/settings dialog as appropriate  
   1.384 -	/** Cancels the sending of specified messages.
   1.385 -	
   1.386 -	@param aStatus The request status to be completed when the operation has finished 	
   1.387 -	@param aSelection Selection of message entries 
   1.388 -	@leave KErrNotSupported The User Interface MTM does not support cancel operations, 
   1.389 -	or cancelling is inappropriate to the current context 
   1.390 -	@leave Other Dependent on implementation 
   1.391 -	@return If successful, this is an asynchronously completing cancel operation. 
   1.392 -	If failed, this is a completed operation, with status set to the relevant 
   1.393 -	error code. */
   1.394 -	virtual CMsvOperation* CancelL(TRequestStatus& aStatus, const CMsvEntrySelection& aSelection) = 0;
   1.395 -	//
   1.396 -	// --- Deletion ---
   1.397 -	// --- Deletes entries from the current context, which must be a folder or service of the relevant MTM ---
   1.398 -	IMPORT_C virtual CMsvOperation* DeleteFromL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus);//Deletes selection from current context
   1.399 -	// --- Un-deletes entries from the current context, which must be a folder or service of the relevant MTM ---
   1.400 -	IMPORT_C virtual CMsvOperation* UnDeleteFromL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus);//Un-deletes selection from current context
   1.401 -	// --- Deletes service, which need not be the current context ---
   1.402 -	IMPORT_C virtual CMsvOperation* DeleteServiceL(const TMsvEntry& aService, TRequestStatus& aStatus); // default implementation simply delegates to the server
   1.403 -	//
   1.404 -	// --- Message responding ---
   1.405 -	/** Creates a reply message to the current message context, and allows the user 
   1.406 -	to edit it through a message-type specific editor. 
   1.407 -	
   1.408 -	Some MTMs may support inclusion of elements, specified by aPartlist, from the original message in the reply. 
   1.409 -	The parent for the new entry is specified in aDestination. The returned CMsvOperation 
   1.410 -	object completes when editing the reply is complete. On completion, the context 
   1.411 -	is set to the reply message.
   1.412 -	
   1.413 -	Requirements:
   1.414 -	
   1.415 -	A typical implementation for this function would include the following steps: 
   1.416 -	
   1.417 -	1. create a new reply entry by calling CBaseMtm::ReplyL()
   1.418 -	
   1.419 -	2. call EditL() allow the user to edit the reply
   1.420 -	
   1.421 -	3. return a CMsvOperation-derived object to provide asynchronous control and 
   1.422 -	monitoring of the operation
   1.423 -	
   1.424 -	If message replies are not supported, implementations should leave with KErrNotSupported.
   1.425 -	
   1.426 -	@param aDestination The entry to which to assign the reply 
   1.427 -	@param aPartlist Defines the parts which are to be copied from the original 
   1.428 -	message into the reply. See CBaseMtm::ReplyL() for details. 
   1.429 -	@param aCompletionStatus The request status to be completed when the operation 
   1.430 -	has finished 
   1.431 -	@leave KErrNotSupported The User Interface MTM does not support reply operations 
   1.432 -	@leave Other Dependent on implementation 
   1.433 -	@return If successful, this is an asynchronously completing reply operation. 
   1.434 -	If failed, this is a completed operation, with status set to the relevant 
   1.435 -	error code. */
   1.436 -	virtual CMsvOperation* ReplyL(TMsvId aDestination, TMsvPartList aPartlist, TRequestStatus& aCompletionStatus) = 0;
   1.437 -	/**
   1.438 -	Creates a forwarded message from the current message context, and allows the user to edit it through a message-type 
   1.439 -	specific editor. 
   1.440 -	
   1.441 -	Some MTMs may support inclusion of elements, specified by aPartlist, from the original message in the 
   1.442 -	forwarded message. The parent for the new entry is specified in aDestination. The returned CMsvOperation 
   1.443 -	object completes when editing the forwarded message is complete. On completion, the context is set to the forwarded message.
   1.444 -
   1.445 -	Requirements:
   1.446 -
   1.447 -	A typical implementation for this function would include the following steps:
   1.448 -
   1.449 -	1. create a new forwarded message entry by calling CBaseMtm::ForwardL()
   1.450 -
   1.451 -	2. call EditL() allow the user to edit the forwarded message
   1.452 -
   1.453 -	3. return a CMsvOperation-derived object to provide asynchronous control and monitoring of the operation
   1.454 -
   1.455 -	If forwarded messages are not supported, implementations should leave with KErrNotSupported.
   1.456 -
   1.457 -	@return	If successful, this is an asynchronously completing forward message operation. If failed, 
   1.458 -	this is a completed operation, with status set to the relevant error code. 	
   1.459 -	@param aDestination The entry to which to assign the forwarded message 
   1.460 -	@param aPartList Defines the parts which are to be copied from the original message into the forwarded message 
   1.461 -	@param aCompletionStatus The request status to be completed when the operation has finished 
   1.462 -	@leave KErrNotSupported The User Interface MTM does not support message forwarding operations 
   1.463 -	@leave Other Dependent on implementation 
   1.464 -	*/
   1.465 -	virtual CMsvOperation* ForwardL(TMsvId aDestination, TMsvPartList aPartList, TRequestStatus& aCompletionStatus) = 0;
   1.466 -
   1.467 -	//
   1.468 -	// --- Copy and move functions ---
   1.469 -	// --- Context should be set to folder or entry of this MTM ---
   1.470 -	// --- Default implementations imply call the relevant CMsvEntry functions ---
   1.471 -	IMPORT_C virtual CMsvOperation* CopyToL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus);// Context should be MTM folder/service to copy to
   1.472 -	IMPORT_C virtual CMsvOperation* MoveToL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus);// Context should be MTM folder/service to move to
   1.473 -	IMPORT_C virtual CMsvOperation* CopyFromL(const CMsvEntrySelection& aSelection, TMsvId aTargetId, TRequestStatus& aStatus);// Context should be MTM folder/service to copy from
   1.474 -	IMPORT_C virtual CMsvOperation* MoveFromL(const CMsvEntrySelection& aSelection, TMsvId aTargetId, TRequestStatus& aStatus);// Context should be MTM folder/service to move from
   1.475 -	//
   1.476 -	// --- Interpret transfer progress ---
   1.477 -	IMPORT_C virtual TInt DisplayProgressSummary(const TDesC8& aProgress) const;// Used for display operation summary (usually completed operations). Default implementation returns KErrNotSupported. 
   1.478 -	IMPORT_C virtual TInt GetProgress(const TDesC8& aProgress, TBuf<EProgressStringMaxLen>& aReturnString, TInt& aTotalEntryCount, TInt& aEntriesDone,
   1.479 -		TInt& aCurrentEntrySize, TInt& aCurrentBytesTrans) const;// Default implementation returns KErrNotSupported
   1.480 -	//	
   1.481 -	// --- RTTI functions ---
   1.482 -	IMPORT_C virtual TInt QueryCapability(TUid aCapability, TInt& aResponse);
   1.483 -	IMPORT_C virtual void InvokeSyncFunctionL(TInt aFunctionId, const CMsvEntrySelection& aSelection, TDes8& aParameter);
   1.484 -	IMPORT_C virtual CMsvOperation* InvokeAsyncFunctionL(TInt aFunctionId, const CMsvEntrySelection& aSelection, TRequestStatus& aCompletionStatus, 
   1.485 -		TDes8& aParameter);
   1.486 -
   1.487 -protected:
   1.488 -	// --- Construction ---
   1.489 -	IMPORT_C CBaseMtmUi(CBaseMtm& aBaseMtm, CRegisteredMtmDll& aRegisteredMtmDll);
   1.490 -	IMPORT_C virtual void ConstructL();
   1.491 -	/** Sets the full path and name of the resource file associated with the User Interface MTM. 
   1.492 -	
   1.493 -	Client applications do not use this function. It is relevant only to implementers of derived classes.
   1.494 -	
   1.495 -	Requirements:
   1.496 -	
   1.497 -	The function is called by CBaseMtmUi::ConstructL(), which then loads the resource 
   1.498 -	file.
   1.499 -	
   1.500 -	@param aFileName Filename buffer to be filled with the resource file path 
   1.501 -	and name */
   1.502 -	virtual void GetResourceFileName(TFileName& aFileName) const = 0;
   1.503 -	//
   1.504 -	// --- Utility functions ---
   1.505 -	IMPORT_C CMsvSession& Session() const;
   1.506 -
   1.507 -	// Method used for extension: called by non virtual methods that need 
   1.508 -	// to have a polymorphic behaviour.
   1.509 -	IMPORT_C virtual TAny* GetInterface(TUid aUid);
   1.510 -
   1.511 -protected:
   1.512 -	// --- Data ---
   1.513 -	/** The CBaseMtm-derived object (Client-side MTM) that requested the User Interface 
   1.514 -	MTM. It is set by the constructor. */
   1.515 -	CBaseMtm&			iBaseMtm;
   1.516 -	/** Control environment object. It is set by the constructor. */
   1.517 -	CCoeEnv*			iCoeEnv;
   1.518 -	/** This flag records the preferences as set by SetPreferences(). */
   1.519 -	TUint				iFlags;
   1.520 -
   1.521 -private:
   1.522 -	// --- Data ---
   1.523 -	CRegisteredMtmDll&	iRegisteredMtmDll;
   1.524 -	TInt				iResourceFileOffset;
   1.525 -	// Extra data member to allow for future extensions
   1.526 -	TAny* iExtensionData;
   1.527 -	};
   1.528 -
   1.529 -
   1.530 -#endif // __MTMUIBAS_H__