CBaseMtm Class Reference

class CBaseMtm : public CBase

Provides a high-level interface for accessing and manipulating a Message Server entry.

Message client applications use the class to access such functionality polymorphically. MTM implementers implement a derived class to provide such functionality for their message protocol.

The following are some significant groups of functions:

Context functions: the SetCurrentEntryL() and SwitchCurrentEntryL() functions change the context - the entry on which later actions are performed. After creating a new Client-side MTM object, a message client application should set an initial context before using other functions. Note that: any changes made to an existing context are not automatically saved: the message client application should ensure this itself by calling SaveMessageL(); no message data for the new context is retrieved from the Message Server, to retrieve entry data, call LoadMessageL() after setting the context; calling Body() immediately after setting the context returns an empty CRichText object: this is because the private cache of context body text that the base class maintains is re-initialised to an empty value. MTM implementers should note that the virtual ContextEntrySwitched() is called from these functions to allow derived classes to also clear any caches of MTM-specific entry data.

Store and restore entry data functions: the changes that a message client application makes to a message context through Client-side MTM functions, such as altering the body text obtained through Body(), are, for efficiency, cached in memory by a Client-side MTM. The message store and restore functions are concerned with transferring data between that cache and committed storage. Note that, unlike message contexts, message client applications are not expected to manipulate directly service contexts. Instead, the corresponding User Interface MTM will provide dialogs to allow the user to alter service settings, and call Client-side MTM functions to handle their retrieval and storage. Symbian OS v5 expects the base class functions to handle storage and retrieval for both message and service contexts, and their implementations must detect what the context is, and act accordingly. Post-v5, the API is clarified by restricting the base class functions to handle message contexts only. To handle service contexts, a Client-side MTM must define its own functions for the User Interface MTM to call.

Store and restore body text functions: the base class maintains a private CRichText object cache to store the body text for the current context. This can be accessed for reading and writing by message client applications through Body(). StoreBodyL() and RestoreBodyL() encapsulate for implementers of derived classes the retrieval and storage of this CRichText object to a CMsvStore.

Address list functions: the format and storage of message addresses is MTM-specific. AddresseeList(), AddAddresseeL(), and RemoveAddressee() are designed to allow clients with no MTM-specific knowledge to access address information in a generic way. The base class has a protected data member iAddresseeList, an array of descriptors, which these functions manipulate. Implementations should save the address information to the appropriate place in the message store when the message is stored.

MTM-specific functionality: MTM components can offer protocol-specific functionality not provided by base class interface functions. MTM components define IDs that correspond to each protocol-specific operation offered, and implement the InvokeSyncFunctionL() and InvokeAsyncFunctionL() functions to allow clients to access these operations by passing in the appropriate ID. Two functions are provided to allow the MTM component to offer both synchronous and asynchronous functionality. Message client applications can dynamically add user-interface features for these operations using CBaseMtmUiData::MtmSpecificFunctions(). MTM developers should document the IDs if they wish to make the operations available to clients.

Inherits from

Public Member Functions
~CBaseMtm()
voidAddAddresseeL(const TDesC &)
voidAddAddresseeL(const TDesC &, const TDesC &)
IMPORT_C voidAddAddresseeL(TMsvRecipientType, const TDesC &)
IMPORT_C voidAddAddresseeL(TMsvRecipientType, const TDesC &, const TDesC &)
IMPORT_C voidAddAttachmentL(const TDesC &, const TDesC8 &, TUint, TRequestStatus &)
IMPORT_C voidAddAttachmentL(RFile &, const TDesC8 &, TUint, TRequestStatus &)
IMPORT_C voidAddEntryAsAttachmentL(TMsvId, TRequestStatus &)
IMPORT_C voidAddLinkedAttachmentL(const TDesC &, const TDesC8 &, TUint, TRequestStatus &)
IMPORT_C const CMsvRecipientList &AddresseeList()
IMPORT_C voidBioTypeChangedL(TUid)
IMPORT_C CRichText &Body()
IMPORT_C const CRichText &Body()
IMPORT_C voidCancelAttachmentOperation()
IMPORT_C voidChangeDefaultServiceL(const TMsvId &)
IMPORT_C voidCreateAttachmentL(const TDesC &, RFile &, const TDesC8 &, TUint, TRequestStatus &)
IMPORT_C voidCreateMessageL(TMsvId)
IMPORT_C TMsvIdDefaultServiceL()
IMPORT_C CMsvEntry &Entry()
voidFiller1()
voidFiller2()
TMsvPartList Find(const TDesC &, TMsvPartList)
CMsvOperation *ForwardL(TMsvId, TMsvPartList, TRequestStatus &)
IMPORT_C TAny *GetExtensionData()
IMPORT_C TBoolHasContext()
CMsvOperation *InvokeAsyncFunctionL(TInt, const CMsvEntrySelection &, TDes8 &, TRequestStatus &)
voidInvokeSyncFunctionL(TInt, const CMsvEntrySelection &, TDes8 &)
voidLoadMessageL()
IMPORT_C TIntQueryCapability(TUid, TInt &)
voidRemoveAddressee(TInt)
IMPORT_C voidRemoveDefaultServiceL()
CMsvOperation *ReplyL(TMsvId, TMsvPartList, TRequestStatus &)
voidSaveMessageL()
IMPORT_C CMsvSession &Session()
IMPORT_C voidSetCurrentEntryL(CMsvEntry *)
IMPORT_C voidSetExtensionData(TAny *)
IMPORT_C TIntSetMessageCharacterSet(TUint)
IMPORT_C voidSetSubjectL(const TDesC &)
IMPORT_C const TPtrCSubjectL()
IMPORT_C voidSwitchCurrentEntryL(TMsvId)
IMPORT_C TUidType()
TMsvPartList ValidateMessage(TMsvPartList)
Protected Member Functions
CBaseMtm(CRegisteredMtmDll &, CMsvSession &)
voidContextEntrySwitched()
IMPORT_C TIntExtension_(TUint, TAny *&, TAny *)
IMPORT_C TAny *GetInterface(TUid)
IMPORT_C voidHandleEntryEventL(TMsvEntryEvent, TAny *, TAny *, TAny *)
IMPORT_C voidRestoreBodyL(CMsvStore &)
IMPORT_C voidStoreBodyL(CMsvStore &)
Private Member Functions
voidAddFilePathAttachmentL(const TDesC &, const TDesC8 &, TUint, CMsvAttachment::TMsvAttachmentType, TRequestStatus &)
voidDeleteEntry()
Inherited Functions
CBase::CBase()
CBase::Delete(CBase *)
CBase::operator new(TUint)
CBase::operator new(TUint,TAny *)
CBase::operator new(TUint,TLeave)
CBase::operator new(TUint,TLeave,TUint)
CBase::operator new(TUint,TUint)
CBase::~CBase()
Protected Attributes
CMsvRecipientList *iAddresseeList
CCharFormatLayer *iCharFormatLayer
CMsvEntry *iMsvEntry
CParaFormatLayer *iParaFormatLayer
Private Attributes
CMsvAttachmentWaiter *iAttachmentWaiter
TMsvId iEntryId
TAny *iExtensionData
CRegisteredMtmDll &iRegisteredMtmDll
CRichText *iRichTextBody
CMsvSession &iSession

Constructor & Destructor Documentation

CBaseMtm(CRegisteredMtmDll &, CMsvSession &)

IMPORT_CCBaseMtm(CRegisteredMtmDll &aRegisteredMtmDll,
CMsvSession &aSession
)[protected]

Parameters

CRegisteredMtmDll & aRegisteredMtmDll
CMsvSession & aSession

~CBaseMtm()

IMPORT_C~CBaseMtm()

Member Functions Documentation

AddAddresseeL(const TDesC &)

voidAddAddresseeL(const TDesC &aRealAddress)[pure virtual]

Adds an addressee for the current context.

Addresses are not validated by checking their format by this function. Usually that is performed by calling ValidateMessage().

Requirements:

Implementations should append the address to the object's address cache in the protected iAddresseeList data member. Some implementations may also wish to store addresses in an internal data structure appropriate for the protocol, for example, a class holding message header information.

leave

KErrNotSupported The message already has the maximum number of addressees

leave

Other leave codes Dependent on implementation

Parameters

const TDesC & aRealAddressString representing an address to be added to the list for the current message

AddAddresseeL(const TDesC &, const TDesC &)

voidAddAddresseeL(const TDesC &aRealAddress,
const TDesC &aAlias
)[pure virtual]

Adds an addressee for the current context, and enables the client to specify an alias, which may be useful for some protocols. For example, for fax, if the address is the fax number, the alias could supply the recipient's name.

Addresses are not validated by checking their format by this function. Usually that is performed by calling ValidateMessage().

Requirements:

Implementations should append the address to the object's address cache in the protected iAddresseeList data member. Some implementations may also wish to store addresses in an internal data structure appropriate for the protocol, for example, a class holding message header information.

leave

KErrNotSupported The message already has the maximum number of addressees

leave

Other leave codes Dependent on implementation

Parameters

const TDesC & aRealAddressString representing an address to be added to the list for the current message
const TDesC & aAliasAlias information

AddAddresseeL(TMsvRecipientType, const TDesC &)

IMPORT_C voidAddAddresseeL(TMsvRecipientTypeaType,
const TDesC &aRealAddress
)[virtual]

Parameters

TMsvRecipientType aType
const TDesC & aRealAddress

AddAddresseeL(TMsvRecipientType, const TDesC &, const TDesC &)

IMPORT_C voidAddAddresseeL(TMsvRecipientTypeaType,
const TDesC &aRealAddress,
const TDesC &aAlias
)[virtual]

Parameters

TMsvRecipientType aType
const TDesC & aRealAddress
const TDesC & aAlias

AddAttachmentL(const TDesC &, const TDesC8 &, TUint, TRequestStatus &)

IMPORT_C voidAddAttachmentL(const TDesC &aFilePath,
const TDesC8 &aMimeType,
TUintaCharset,
TRequestStatus &aStatus
)[virtual]

Parameters

const TDesC & aFilePath
const TDesC8 & aMimeType
TUint aCharset
TRequestStatus & aStatus

AddAttachmentL(RFile &, const TDesC8 &, TUint, TRequestStatus &)

IMPORT_C voidAddAttachmentL(RFile &aFile,
const TDesC8 &aMimeType,
TUintaCharset,
TRequestStatus &aStatus
)[virtual]

Parameters

RFile & aFile
const TDesC8 & aMimeType
TUint aCharset
TRequestStatus & aStatus

AddEntryAsAttachmentL(TMsvId, TRequestStatus &)

IMPORT_C voidAddEntryAsAttachmentL(TMsvIdaAttachmentId,
TRequestStatus &aStatus
)[virtual]

Parameters

TMsvId aAttachmentId
TRequestStatus & aStatus

AddFilePathAttachmentL(const TDesC &, const TDesC8 &, TUint, CMsvAttachment::TMsvAttachmentType, TRequestStatus &)

voidAddFilePathAttachmentL(const TDesC &aFilePath,
const TDesC8 &aMimeType,
TUintaCharset,
CMsvAttachment::TMsvAttachmentTypeaType,
TRequestStatus &aStatus
)[private]

Parameters

const TDesC & aFilePath
const TDesC8 & aMimeType
TUint aCharset
CMsvAttachment::TMsvAttachmentType aType
TRequestStatus & aStatus

AddLinkedAttachmentL(const TDesC &, const TDesC8 &, TUint, TRequestStatus &)

IMPORT_C voidAddLinkedAttachmentL(const TDesC &aFilePath,
const TDesC8 &aMimeType,
TUintaCharset,
TRequestStatus &aStatus
)[virtual]

Parameters

const TDesC & aFilePath
const TDesC8 & aMimeType
TUint aCharset
TRequestStatus & aStatus

AddresseeList()

IMPORT_C const CMsvRecipientList &AddresseeList()const

BioTypeChangedL(TUid)

IMPORT_C voidBioTypeChangedL(TUidaBioTypeUid)[virtual]

Parameters

TUid aBioTypeUid

Body()

IMPORT_C CRichText &Body()

Body()

IMPORT_C const CRichText &Body()const

CancelAttachmentOperation()

IMPORT_C voidCancelAttachmentOperation()[virtual]

ChangeDefaultServiceL(const TMsvId &)

IMPORT_C voidChangeDefaultServiceL(const TMsvId &aService)[virtual]

Parameters

const TMsvId & aService

ContextEntrySwitched()

voidContextEntrySwitched()[protected, pure virtual]

Called by the base class functions SwitchCurrentEntryL() and SetCurrentEntryL() when the context is changed to another entry.

Client applications do not use this function. It is relevant only to implementers of derived classes.

Requirements:

An implementation should clear:

1. address data stored in iAddresseeList

2. any caches of MTM-specific entry data relating to a previous context. For example, if the implementation has a private buffer storing a message subject, for access through Subject(), this buffer should be cleared.

CreateAttachmentL(const TDesC &, RFile &, const TDesC8 &, TUint, TRequestStatus &)

IMPORT_C voidCreateAttachmentL(const TDesC &aFileName,
RFile &aAttachmentFile,
const TDesC8 &aMimeType,
TUintaCharset,
TRequestStatus &aStatus
)[virtual]

Parameters

const TDesC & aFileName
RFile & aAttachmentFile
const TDesC8 & aMimeType
TUint aCharset
TRequestStatus & aStatus

CreateMessageL(TMsvId)

IMPORT_C voidCreateMessageL(TMsvIdaServiceId)[virtual]

Parameters

TMsvId aServiceId

DefaultServiceL()

IMPORT_C TMsvIdDefaultServiceL()const [virtual]

DeleteEntry()

voidDeleteEntry()[private]

Entry()

IMPORT_C CMsvEntry &Entry()const

Extension_(TUint, TAny *&, TAny *)

IMPORT_C TIntExtension_(TUintaExtensionId,
TAny *&a0,
TAny *a1
)[protected, virtual]

Parameters

TUint aExtensionId
TAny *& a0
TAny * a1

Filler1()

voidFiller1()[inline, virtual]

Filler2()

voidFiller2()[inline, virtual]

Find(const TDesC &, TMsvPartList)

TMsvPartList Find(const TDesC &aTextToFind,
TMsvPartListaPartList
)[pure virtual]

Searches the specified message part(s) for the plain-text version of the text to be found.

If the specified part list indicates a part that is not supported, or is not present in the current message, the function behaves as if the specified part exists but does not contain the required text.

Requirements:

The parts of the entry for which searching is allowed is implementation specific. If no searching is supported, always return 0.

If the text was not found, or searching is unsupported, 0. If the text was found, a bitmask of the TMsvPartList IDs for each part in which the text was present.

Parameters

const TDesC & aTextToFindThe plain-text version of the text to be found.
TMsvPartList aPartListIndicates the message parts which should be searched.

ForwardL(TMsvId, TMsvPartList, TRequestStatus &)

CMsvOperation *ForwardL(TMsvIdaDestination,
TMsvPartListaPartList,
TRequestStatus &aCompletionStatus
)[pure virtual]

Creates a forwarded message from the current message context.

Some MTMs may support inclusion of elements, specified by aPartlist, from the original message in the forwarded message. The parent for the new entry is specified in aDestination. The returned CMsvOperation object completes when editing the forwarded message is complete. On completion, the context is set to the forwarded message.

Requirements:

A typical implementation for this function would include the following steps:

1. create a new message in the specified destination by calling CMsvEntry::CreateL()

2. set the entry index values as appropriate

3. set message content as required. The normal minimum is to include the text of the original message. An implementation may also follow the options specified in aPartlist to include other properties of the original message.

4. set the context to the reply

5. return a CMsvOperation-derived object to provide asynchronous control and monitoring of the operation

If forwarded messages are not supported, implementations should leave with KErrNotSupported.

The implementation of this function may be similar to that of ReplyL(), allowing opportunities for code sharing.

leave

KErrNotSupported The Client-side MTM does not support creation of forwarded messages

leave

Other leave codes Dependent on implementation

If successful, this is an asynchronously completing forward message operation. If failed, this is a completed operation, with status set to the relevant error code.

Parameters

TMsvId aDestinationThe entry to which to assign the forwarded message
TMsvPartList aPartListDefines the parts that are to be copied from the original message into the forwarded message
TRequestStatus & aCompletionStatusThe request status to be completed when the operation has finished

GetExtensionData()

IMPORT_C TAny *GetExtensionData()

GetInterface(TUid)

IMPORT_C TAny *GetInterface(TUidaUid)[protected, virtual]

Parameters

TUid aUid

HandleEntryEventL(TMsvEntryEvent, TAny *, TAny *, TAny *)

IMPORT_C voidHandleEntryEventL(TMsvEntryEventaEvent,
TAny *aArg1,
TAny *aArg2,
TAny *aArg3
)[protected]

Parameters

TMsvEntryEvent aEvent
TAny * aArg1
TAny * aArg2
TAny * aArg3

HasContext()

IMPORT_C TBoolHasContext()const

InvokeAsyncFunctionL(TInt, const CMsvEntrySelection &, TDes8 &, TRequestStatus &)

CMsvOperation *InvokeAsyncFunctionL(TIntaFunctionId,
const CMsvEntrySelection &aSelection,
TDes8 &aParameter,
TRequestStatus &aCompletionStatus
)[pure virtual]

Invokes asynchronous protocol-specific operations. For synchronous operations, a similar function, InvokeSyncFunctionL(), is available.

aSelection and aParameter allow data to be passed to the operation. The TRequestStatus and CMsvOperation objects are used as normal to control and monitor the operation.

Requirements:

For functionality that requires message transport access, such as making a connection, the implementation should pass the request onto the corresponding Server-side MTM. This is done through calling CMsvSession::TransferCommandL(). Implementations may also provide protocol-specific functions themselves if this is useful.

InvokeAsyncFunctionL() should return a CMsvOperation-derived object to provide asynchronous control and monitoring of the operation. If CMsvSession::TransferCommandL() is called, this should be the CMsvOperation object returned by that function.

leave

KErrNotSupported aFunctionId is not a recognised operation ID

leave

Other leave codes Dependent on implementation

If successful, this is an asynchronously completing operation. If failed, this is a completed operation, with status set to the relevant error code.

Parameters

TInt aFunctionIdID of the requested operation
const CMsvEntrySelection & aSelectionSelection of message entries. This is used if the operation requires message entries to work on.
TDes8 & aParameterBuffer containing input and output parameters. The format of this is specific to the operation.
TRequestStatus & aCompletionStatusThe request status to be completed when the operation has finished

InvokeSyncFunctionL(TInt, const CMsvEntrySelection &, TDes8 &)

voidInvokeSyncFunctionL(TIntaFunctionId,
const CMsvEntrySelection &aSelection,
TDes8 &aParameter
)[pure virtual]

Invokes synchronous protocol-specific operations. For asynchronous operations, a similar function, InvokeAsyncFunctionL(), is available.

aSelection and aParameter allow data to be passed to the operation.

Requirements:

For functionality that requires message transport access, such as making a connection, the implementation should pass the request onto the corresponding Server-side MTM. This is done through calling CMsvSession::TransferCommandL(). Implementations may also provide protocol-specific functions themselves if this is useful.

leave

KErrNotSupported aFunctionId is not a recognised operation ID

leave

Other leave codes Dependent on implementation

Parameters

TInt aFunctionIdID of the requested operation
const CMsvEntrySelection & aSelectionSelection of message entries. This is used if the operation requires message entries to work on.
TDes8 & aParameterBuffer containing input and output parameters. The format of this is specific to the operation.

LoadMessageL()

voidLoadMessageL()[pure virtual]

Loads the cache with the message data for the current context.

It can only be called on message contexts.

It is typically used after the context has been set with SetCurrentEntryL() or SwitchCurrentEntryL(). CBaseMtm functions to manipulate the entry can only be called after this function has been called.

Requirements:

An implementation must restore the store and index entry relating to the message context. Typically, the message store should be opened for reading with CMsvEntry::ReadStoreL(). It should be then be read to set the following:

1. body text: call RestoreBodyL() to update the cached body text

2. address list: read the appropriate MTM-specific area of the store to update iAddresseeList

3. subject: if supported, read the appropriate MTM-specific area of the store and update the cache with SetSubjectL()

The function should panic for non-message contexts.

QueryCapability(TUid, TInt &)

IMPORT_C TIntQueryCapability(TUidaCapability,
TInt &aResponse
)[virtual]

Parameters

TUid aCapability
TInt & aResponse

RemoveAddressee(TInt)

voidRemoveAddressee(TIntaIndex)[pure virtual]

Removes an address from the current address list. The address is specified by a zero-based index into the address list. If the index is not known, applications can use AddresseeList() to retrieve the entire list to find the item.

Requirements:

Implementations should call iAddresseeList->Delete(aIndex) to remove the address from in the address list protected data member.

Parameters

TInt aIndexIndex of address to be removed

RemoveDefaultServiceL()

IMPORT_C voidRemoveDefaultServiceL()[virtual]

ReplyL(TMsvId, TMsvPartList, TRequestStatus &)

CMsvOperation *ReplyL(TMsvIdaDestination,
TMsvPartListaPartlist,
TRequestStatus &aCompletionStatus
)[pure virtual]

Creates a reply message to the current message context.

Some MTMs may support inclusion of elements, specified by aPartlist, from the original message in the reply. The parent for the new entry is specified in aDestination.

The returned CMsvOperation object completes when creating the reply is complete. On completion, the context is set to the reply message.

Requirements:

A typical implementation for this function would include the following steps:

1. create a new message in the specified destination by calling CMsvEntry::CreateL()

2. set the entry index values as appropriate

3. set the properties of the message as required. The normal minimum is to set the address to the sender of the original message. An implementation may also follow the options specified in aPartlist to set other properties, for example, to include the original message text.

4. set the context to the reply

5. return a CMsvOperation-derived object to provide asynchronous control and monitoring of the operation

If message replies are not supported, implementations should leave with KErrNotSupported.

The implementation of this function may be similar to that of ForwardL(), allowing opportunities for code sharing.

leave

KErrNotSupported The Client-side MTM does not support reply operations

leave

Other leave codes Dependent on implementation

If successful, this is an asynchronously completing reply operation. If failed, this is a completed operation, with status set to the relevant error code.

Parameters

TMsvId aDestinationThe entry to which to assign the reply
TMsvPartList aPartlistDefines the parts that are to be copied from the original message into the reply
TRequestStatus & aCompletionStatusThe request status to be completed when the operation has finished

RestoreBodyL(CMsvStore &)

IMPORT_C voidRestoreBodyL(CMsvStore &aStore)[protected]

Parameters

CMsvStore & aStore

SaveMessageL()

voidSaveMessageL()[pure virtual]

Commits cached changes to the storage controlled by the Message Server.

It can only be called on message contexts. It should be called in the following circumstances:

1. to preserve changes when the context is changed, or when the Client-side MTM object is deleted

2. to enable other parts of the Messaging to access the updated entry, as required, for example, before sending a message

Requirements:

An implementation must update the store and index entry relating to the message context. Typically, the message store should be opened for editing with CMsvEntry::EditStoreL(). It should be updated as follows:

1. body text: call StoreBodyL() to update the store's body text stream

2. address list: update the appropriate MTM-specific area of the store from the data in iAddresseeList

3. subject: if supported, update the appropriate MTM-specific area of the store from the private cache set by SetSubjectL()

Changes can then be committed to the store with CMsvStore::CommitL().

The index entry should also be updated to reflect changes. Possible fields that may need updating include: Description (for subject changes); Details and Multiple Recipients (for recipient changes); and Size. Index entry changes are committed using CMsvEntry::ChangeL().

The function should panic for non-message contexts.

Session()

IMPORT_C CMsvSession &Session()

SetCurrentEntryL(CMsvEntry *)

IMPORT_C voidSetCurrentEntryL(CMsvEntry *aEntry)

Parameters

CMsvEntry * aEntry

SetExtensionData(TAny *)

IMPORT_C voidSetExtensionData(TAny *aSortData)

Parameters

TAny * aSortData

SetMessageCharacterSet(TUint)

IMPORT_C TIntSetMessageCharacterSet(TUintaCharSet)

Parameters

TUint aCharSet

SetSubjectL(const TDesC &)

IMPORT_C voidSetSubjectL(const TDesC &aSubject)[virtual]

Parameters

const TDesC & aSubject

StoreBodyL(CMsvStore &)

IMPORT_C voidStoreBodyL(CMsvStore &aStore)[protected]

Parameters

CMsvStore & aStore

SubjectL()

IMPORT_C const TPtrCSubjectL()const [virtual]

SwitchCurrentEntryL(TMsvId)

IMPORT_C voidSwitchCurrentEntryL(TMsvIdaId)

Parameters

TMsvId aId

Type()

IMPORT_C TUidType()const

ValidateMessage(TMsvPartList)

TMsvPartList ValidateMessage(TMsvPartListaPartList)[pure virtual]

Validates the current message context.

The precise validation performed is specific to the MTM, but, typically, checks that the specified message parts are well-formed.

Requirements:

Implementation of this function is highly protocol-specific. A minimum step is to check that the current context is a message.

If valid, KErrNone If invalid, identifies the invalid part(s). The error value is the bitmask of the TMsvPartList IDs for each invalid part

Parameters

TMsvPartList aPartListIndicates the message parts for which validation is requested

Member Data Documentation

CMsvRecipientList * iAddresseeList

CMsvRecipientList *iAddresseeList[protected]

The address list for the current context.

CMsvAttachmentWaiter * iAttachmentWaiter

CMsvAttachmentWaiter *iAttachmentWaiter[private]

CCharFormatLayer * iCharFormatLayer

CCharFormatLayer *iCharFormatLayer[protected]

Character formatting applied to the CRichText object for the body text, as returned by Body().

Implementations can modify this if they wish to apply particular formatting to body text.

TMsvId iEntryId

TMsvId iEntryId[private]

TAny * iExtensionData

TAny *iExtensionData[private]

CMsvEntry * iMsvEntry

CMsvEntry *iMsvEntry[protected]

The current context.

CParaFormatLayer * iParaFormatLayer

CParaFormatLayer *iParaFormatLayer[protected]

Paragraph formatting applied to the CRichText object for the body text, as returned by Body(). This is set to an empty CParaFormatLayer instance whenever the context is set.

Implementations can modify this if they wish to apply particular formatting to body text.

CRegisteredMtmDll & iRegisteredMtmDll

CRegisteredMtmDll &iRegisteredMtmDll[private]

CRichText * iRichTextBody

CRichText *iRichTextBody[private]

CMsvSession & iSession

CMsvSession &iSession[private]