1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/epoc32/include/mw/mtmuibas.h Wed Mar 31 12:27:01 2010 +0100
1.3 @@ -0,0 +1,527 @@
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__