Symbian
Symbian Developer Library

SYMBIAN OS V9.4

Feedback

[Index] [Previous] [Next]

#include <MTCLBASE.H>
Link against: msgs.lib
Link against: msgs_autoshutdown.lib

Class CBaseMtm

class CBaseMtm : public CBase, public MMsvEntryObserver;

Description

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 CBaseMtm::SetCurrentEntryL(CMsvEntry *) and CBaseMtm::SwitchCurrentEntryL(TMsvId) 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 CBaseMtm::SaveMessageL(); no message data for the new context is retrieved from the Message Server, to retrieve entry data, call CBaseMtm::LoadMessageL() after setting the context; calling CBaseMtm::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 CBaseMtm::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 CBaseMtm::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 CBaseMtm::Body(). CBaseMtm::StoreBodyL(CMsvStore &) and CBaseMtm::RestoreBodyL(CMsvStore &) 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. CBaseMtm::AddresseeList()const, CBaseMtm::AddAddresseeL(const TDesC &), and CBaseMtm::RemoveAddressee(TInt) 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 CBaseMtm::InvokeSyncFunctionL(TInt,const CMsvEntrySelection &,TDes8 &) and CBaseMtm::InvokeAsyncFunctionL(TInt,const CMsvEntrySelection &,TDes8 &,TRequestStatus &) 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()const. MTM developers should document the IDs if they wish to make the operations available to clients.

Derivation

Members

Defined in CBaseMtm:

Inherited from CBase:

Inherited from MMsvEntryObserver:

Related Topics


Construction and destruction


~CBaseMtm()

IMPORT_C ~CBaseMtm();

Description

Cleans up the base class.

CBaseMtm -derived objects must be deleted by client applications when they are no longer required.

Derived classes can implement a destructor to do any additional clean up tasks that they require.


CBaseMtm(CRegisteredMtmDll &,CMsvSession &)

protected: IMPORT_C CBaseMtm(CRegisteredMtmDll &aRegisteredMtmDll, CMsvSession &aSession);

Description

Creates a CBaseMtm with member variables initialised from the passed arguments.

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

The value of aSession can be accessed through CBaseMtm::Session().

Derived classes can implement a constructor to perform any additional MTM-specific setup that can be safely carried out in a constructor. Such constructors must call the base class constructor function.

Derived classes also implement two-phase construction functions (NewL(), ConstructL()) to create a new instance of the object, in which any dynamic allocation should be performed. Client-side MTMs also implement a factory function by which a MTM registry can request an instance of the class.

Parameters

CRegisteredMtmDll &aRegisteredMtmDll

Registration data for the MTM DLL.

CMsvSession &aSession

The CMsvSession of the client requesting the object

[Top]


Member functions


Type()const

IMPORT_C TUid Type() const;

Description

Gets the Type UID of the message type associated with the Client-side MTM.

Return value

TUid

UID of the message type associated with the MTM


SetCurrentEntryL(CMsvEntry *)

IMPORT_C void SetCurrentEntryL(CMsvEntry *aEntry);

Description

Sets the entry on which later actions are performed to the specified CMsvEntry.

Parameters

CMsvEntry *aEntry

The entry on which all following actions will be performed

Leave codes

KErrNoMemory

Insufficient memory


SwitchCurrentEntryL(TMsvId)

IMPORT_C void SwitchCurrentEntryL(TMsvId aId);

Description

Changes the entry on which later actions are performed to the entry with the specified TMsvId.

Parameters

TMsvId aId

The ID of the entry upon which all following actions will be performed

Leave codes

KErrNoMemory

Insufficient memory

KErrNotFound

The requested entry does not exist


Entry()const

IMPORT_C CMsvEntry& Entry() const;

Description

Gets a CMsvEntry for the current context. The message client application can then use this to manipulate the entry.

Implementers should note that this function returns the value of the protected data member iMsvEntry.

Return value

CMsvEntry &

CMsvEntry for the current context


HasContext()const

IMPORT_C TBool HasContext() const;

Description

Tests if an MTM context has been set.

A Client-side MTM has no context until one is set through CBaseMtm::SwitchCurrentEntryL(TMsvId) or CBaseMtm::SetCurrentEntryL(CMsvEntry *) .

Return value

TBool

ETrue: context has been set EFalse: context has not been set


SaveMessageL()

virtual void SaveMessageL()=0;

Description

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 CBaseMtm::StoreBodyL(CMsvStore &) 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 CBaseMtm::SetSubjectL(const TDesC &)

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(const TMsvEntry &).

The function should panic for non-message contexts.


LoadMessageL()

virtual void LoadMessageL()=0;

Description

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 CBaseMtm::SetCurrentEntryL(CMsvEntry *) or CBaseMtm::SwitchCurrentEntryL(TMsvId). 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 CBaseMtm::RestoreBodyL(CMsvStore &) 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 CBaseMtm::SetSubjectL(const TDesC &)

The function should panic for non-message contexts.


ValidateMessage(TMsvPartList)

virtual TMsvPartList ValidateMessage(TMsvPartList aPartList)=0;

Description

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.

Parameters

TMsvPartList aPartList

Indicates the message parts for which validation is requested

Return value

TMsvPartList

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


Find(const TDesC &,TMsvPartList)

virtual TMsvPartList Find(const TDesC &aTextToFind, TMsvPartList aPartList)=0;

Description

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.

Parameters

const TDesC16 &aTextToFind

The plain-text version of the text to be found.

TMsvPartList aPartList

Indicates the message parts which should be searched.

Return value

TMsvPartList

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.


ReplyL(TMsvId,TMsvPartList,TRequestStatus &)

virtual CMsvOperation* ReplyL(TMsvId aDestination, TMsvPartList aPartlist, TRequestStatus &aCompletionStatus)=0;

Description

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(const TMsvEntry &,TRequestStatus &)

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 CBaseMtm::ForwardL(TMsvId,TMsvPartList,TRequestStatus &), allowing opportunities for code sharing.

Parameters

TMsvId aDestination

The entry to which to assign the reply

TMsvPartList aPartlist

Defines the parts that are to be copied from the original message into the reply

TRequestStatus &aCompletionStatus

The request status to be completed when the operation has finished

Return value

CMsvOperation *

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

Leave codes

KErrNotSupported

The Client-side MTM does not support reply operations

Other

leave codes Dependent on implementation


ForwardL(TMsvId,TMsvPartList,TRequestStatus &)

virtual CMsvOperation* ForwardL(TMsvId aDestination, TMsvPartList aPartList, TRequestStatus &aCompletionStatus)=0;

Description

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(const TMsvEntry &,TRequestStatus &)

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 CBaseMtm::ReplyL(TMsvId,TMsvPartList,TRequestStatus &), allowing opportunities for code sharing.

Parameters

TMsvId aDestination

The entry to which to assign the forwarded message

TMsvPartList aPartList

Defines the parts that are to be copied from the original message into the forwarded message

TRequestStatus &aCompletionStatus

The request status to be completed when the operation has finished

Return value

CMsvOperation *

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.

Leave codes

KErrNotSupported

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

Other

leave codes Dependent on implementation


AddresseeList()const

IMPORT_C const CMsvRecipientList& AddresseeList() const;

Description

Gets the list of intended recipients for the current context, which must be a message.

In the case of protocols that allow different classes of recipient (such as To, Cc and Bcc), the list returned is whatever the protocol defines as the default recipient list.

Requirements:

The default implementation simply returns the value of the protected data member iAddresseeList. As a consequence, Client-side MTM implementations should update this member whenever the address list is modified.

Return value

const CMsvRecipientList &

Array of recipients


AddAddresseeL(const TDesC &)

virtual void AddAddresseeL(const TDesC &aRealAddress)=0;

Description

Adds an addressee for the current context.

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

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.

Parameters

const TDesC16 &aRealAddress

String representing an address to be added to the list for the current message

Leave codes

KErrNotSupported

The message already has the maximum number of addressees

Other

leave codes Dependent on implementation


AddAddresseeL(const TDesC &,const TDesC &)

virtual void AddAddresseeL(const TDesC &aRealAddress, const TDesC &aAlias)=0;

Description

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 CBaseMtm::ValidateMessage(TMsvPartList).

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.

Parameters

const TDesC16 &aRealAddress

String representing an address to be added to the list for the current message

const TDesC16 &aAlias

Alias information

Leave codes

KErrNotSupported

The message already has the maximum number of addressees

Other

leave codes Dependent on implementation


AddAddresseeL(TMsvRecipientType,const TDesC &)

IMPORT_C virtual void AddAddresseeL(TMsvRecipientType aType, const TDesC &aRealAddress);

Description

Adds addressee to list.

The default implementation treats To: and Cc: type addressees as if the addressee had no type.

The default implementation does not support Bcc type addressees.

Parameters

TMsvRecipientType aType

The addressee type.

const TDesC16 &aRealAddress

The addressee address.

Leave codes

KErrNotSupprted

The addressee type was Bcc which is not supported in the default implementation.


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

IMPORT_C virtual void AddAddresseeL(TMsvRecipientType aType, const TDesC &aRealAddress, const TDesC &aAlias);

Description

Adds addressee to list.

The default implementation treats To: and Cc: type addressees as if the addressee had no type.

The default implementation does not support Bcc type addressees.

Parameters

TMsvRecipientType aType

The addressee type.

const TDesC16 &aRealAddress

The addressee address.

const TDesC16 &aAlias

The alias for the addressee.

Leave codes

KErrNotSupprted

The addressee type was Bcc which is not supported in the default implementation.


RemoveAddressee(TInt)

virtual void RemoveAddressee(TInt aIndex)=0;

Description

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 CBaseMtm::AddresseeList()const 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 aIndex

Index of address to be removed


Body()

IMPORT_C CRichText& Body();

Description

Gets the body text of the context, that must be a message. For non-message contexts, an empty CRichText is returned.

Return value

CRichText &

Body text of the context

See also:


Body()const

IMPORT_C const CRichText& Body() const;

Description

Gets the read-only body text of the context, that must be a message. For non-message contexts, an empty CRichText is returned.

Return value

const CRichText &

Read-only body text of the context

See also:


SetSubjectL(const TDesC &)

IMPORT_C virtual void SetSubjectL(const TDesC &aSubject);

Description

Sets the subject text of the context, which must be a message.

Some Client-side MTMs may not support subject text, in which case the function leaves with KErrNotSupported.

Requirements:

If the message protocol supports subject text, implementations should maintain a private buffer to store this information, settable through this function.

Implementations should save the subject text to the appropriate place in the message store when the message is stored.

The default implementation leaves with KErrNotSupported.

Parameters

const TDesC16 &aSubject

Message subject text

Leave codes

KErrNotSupported

The Client-side MTMs does not support subject text

See also:


SubjectL()const

IMPORT_C virtual const TPtrC SubjectL() const;

Description

Gets the subject text of the context, which must be a message.

Some Client-side MTMs may not support subject text, in which case the function leaves with KErrNotSupported.

Requirements:

If the message protocol supports subject text, implementations should maintain a private buffer to store this information, gettable through this function.

The default implementation leaves with KErrNotSupported.

Return value

const TPtrC16

Message subject text

Leave codes

KErrNotSupported

The Client-side MTMs does not support subject text


QueryCapability(TUid,TInt &)

IMPORT_C virtual TInt QueryCapability(TUid aCapability, TInt &aResponse);

Description

Queries if the MTM supports a particular capability, specified by a UID.

For MTM-specific UIDs, see the documentation for the relevant MTM.

Requirements:

Implementations should check aCapability for the standard capability values, plus any MTM-specific capabilities, and if recognised, return a suitable response in aResponse. If aCapability is unknown, return KErrNotSupported.

The default implementation returns KErrNotSupported.

Parameters

TUid aCapability

UID of capability to be queried

TInt &aResponse

Response value. The format of the response varies according to the capability.

Return value

TInt

KErrNone: aCapability is a recognised value and a response is returned KErrNotSupported: aCapability is not a recognised value


InvokeSyncFunctionL(TInt,const CMsvEntrySelection &,TDes8 &)

virtual void InvokeSyncFunctionL(TInt aFunctionId, const CMsvEntrySelection &aSelection, TDes8 &aParameter)=0;

Description

Invokes synchronous protocol-specific operations. For asynchronous operations, a similar function, CBaseMtm::InvokeAsyncFunctionL(TInt,const CMsvEntrySelection &,TDes8 &,TRequestStatus &), 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(const CMsvEntrySelection &,TInt,const TDesC8 &,TRequestStatus &). Implementations may also provide protocol-specific functions themselves if this is useful.

Parameters

TInt aFunctionId

ID of the requested operation

const CMsvEntrySelection &aSelection

Selection of message entries. This is used if the operation requires message entries to work on.

TDes8 &aParameter

Buffer containing input and output parameters. The format of this is specific to the operation.

Leave codes

KErrNotSupported

aFunctionId is not a recognised operation ID

Other

leave codes Dependent on implementation


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

virtual CMsvOperation* InvokeAsyncFunctionL(TInt aFunctionId, const CMsvEntrySelection &aSelection, TDes8 &aParameter, TRequestStatus &aCompletionStatus)=0;

Description

Invokes asynchronous protocol-specific operations. For synchronous operations, a similar function, CBaseMtm::InvokeSyncFunctionL(TInt,const CMsvEntrySelection &,TDes8 &), 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(const CMsvEntrySelection &,TInt,const TDesC8 &,TRequestStatus &). Implementations may also provide protocol-specific functions themselves if this is useful.

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

Parameters

TInt aFunctionId

ID of the requested operation

const CMsvEntrySelection &aSelection

Selection of message entries. This is used if the operation requires message entries to work on.

TDes8 &aParameter

Buffer containing input and output parameters. The format of this is specific to the operation.

TRequestStatus &aCompletionStatus

The request status to be completed when the operation has finished

Return value

CMsvOperation *

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

Leave codes

KErrNotSupported

aFunctionId is not a recognised operation ID

Other

leave codes Dependent on implementation


Session()

IMPORT_C CMsvSession& Session();

Description

Gets a reference to the session object passed by the creator of the Client-side MTM.

Return value

CMsvSession &

Session object used by the Client-side MTM


Filler1()

inline virtual void Filler1();

Description


Filler2()

inline virtual void Filler2();

Description


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

IMPORT_C virtual void AddAttachmentL(const TDesC &aFilePath, const TDesC8 &aMimeType, TUint aCharset, TRequestStatus &aStatus);

Description

Adds a file attachment to the current message entry.

The attachment is referenced by its file path and is copied into the message store. Only one asynchronous operation can be run at any one time.

Parameters

const TDesC16 &aFilePath

The full path specification of the attachment file.

const TDesC8 &aMimeType

The mime type of the attachment file.

TUint aCharset

The mime charset. The value is a standard IANA value. The value 0 indicates that no charset is provided.

TRequestStatus &aStatus

The request status to complete when request has completed.

Leave codes

System-wide

error codes.


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

IMPORT_C virtual void AddAttachmentL(RFile &aFile, const TDesC8 &aMimeType, TUint aCharset, TRequestStatus &aStatus);

Description

Adds a file attachment to the current message entry.

The attachment is referenced by an open file handle and is copied into the message store. Only one asynchronous operation can be run at any one time.

Parameters

RFile &aFile

An open file handle for the file attachment.

const TDesC8 &aMimeType

The mime type of the attachment file.

TUint aCharset

The mime charset. The value is a standard IANA value. The value 0 indicates that no charset is provided.

TRequestStatus &aStatus

The request status to complete when request has completed.

Leave codes

System-wide

error codes.


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

IMPORT_C virtual void AddLinkedAttachmentL(const TDesC &aFilePath, const TDesC8 &aMimeType, TUint aCharset, TRequestStatus &aStatus);

Description

Adds a file attachment to the current message entry as a linked file.

The attachment is referenced by its file path and is not copied into the message store. The attachment file is always used from its original location on disk indicated by the aFilePath parameter. Only one asynchronous operation can be run at any one time.

Parameters

const TDesC16 &aFilePath

The full path specification of the attachment file.

const TDesC8 &aMimeType

The mime type of the attachment file.

TUint aCharset

The mime charset. The value is a standard IANA value. The value 0 indicates that no charset is provided.

TRequestStatus &aStatus

The request status to complete when request has completed.

Leave codes

System-wide

error codes.


AddEntryAsAttachmentL(TMsvId,TRequestStatus &)

IMPORT_C virtual void AddEntryAsAttachmentL(TMsvId aAttachmentId, TRequestStatus &aStatus);

Description

Adds a message entry as an attachment to the current message entry.

This method simply registers an existing message entry as an attachment to the current entry. Only one asynchronous operation can be run at any one time.

Parameters

TMsvId aAttachmentId

The message Id of the message entry to add as an attachment.

TRequestStatus &aStatus

The request status to complete when request has completed.

Leave codes

System-wide

error codes.


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

IMPORT_C virtual void CreateAttachmentL(const TDesC &aFileName, RFile &aAttachmentFile, const TDesC8 &aMimeType, TUint aCharset, TRequestStatus &aStatus);

Description

Creates a new empty file attachment to the current message entry.

An empty file attachment is created with the suggested given name and if completed successfully, the aAttachmentFile will be open on the new file. Only one asynchronous operation can be run at any one time.

Parameters

const TDesC16 &aFileName

The suggested file name for the new attachment file.

RFile &aAttachmentFile

If successful, this will be set to the open new file.

const TDesC8 &aMimeType

The mime type of the attachment file.

TUint aCharset

The mime charset. The value is a standard IANA value. The value 0 indicates that no charset is provided.

TRequestStatus &aStatus

The request status to complete when request has completed.

Leave codes

System-wide

error codes.


CancelAttachmentOperation()

IMPORT_C virtual void CancelAttachmentOperation();

Description

Cancels the current attachment operation.


CreateMessageL(TMsvId)

IMPORT_C virtual void CreateMessageL(TMsvId aServiceId);

Description

Creates a new message entry as a child of the current context.

The default implementation creates an empty entry with its visible flag set to false and its in-preparation flag set to true.

Parameters

TMsvId aServiceId

ID of the service to own the entry.


BioTypeChangedL(TUid)

IMPORT_C virtual void BioTypeChangedL(TUid aBioTypeUid);

Description

Informs client-side MTM that the context's BIO field is being changed as a result of a call to CSendAs::SetBioTypeL().

CSendAs::SetBioTypeL() calls this function before setting the BIO field in the context's index entry. This allows a client-side MTM to perform MTM specific actions when the BIO type changes.

CSendAs will not change the BIO type if this function leaves.

The default implementation is to do nothing.

Parameters

TUid aBioTypeUid

New value for the BIO field


DefaultServiceL()const

IMPORT_C virtual TMsvId DefaultServiceL() const;

Description

Gets the default MTM service.

The default implementation is to assume the MTM only supports one service so finds the first service associated with this MTM and returns that.

KErrNotFound If no service has been created.

Return value

TMsvId

The default service

Leave codes


RemoveDefaultServiceL()

IMPORT_C virtual void RemoveDefaultServiceL();

Description

Removes the default service setting. The default implementation of this function assumes that the MTM only supports one service and therefore this does nothing.


ChangeDefaultServiceL(const TMsvId &)

IMPORT_C virtual void ChangeDefaultServiceL(const TMsvId &aService);

Description

Sets the default MTM service. The default implementation of this function assumes that the MTM only supports one service and therefore this does nothing.

Parameters

const TMsvId &aService

The default service


SetMessageCharacterSet(TUint)

IMPORT_C TInt SetMessageCharacterSet(TUint aCharSet);

Description

Sets the character encoding value. The character encoding value options are 7-bit, 8-bit and 16-Bit Unicode. By default the character set encoding is 7 bit encoding.

Parameters

TUint aCharSet

Character encoding value may be 7-bit/8-bit/16-bit Unicode.

Return value

TInt

KErrNone If charset is changed successfully in SMS settings.


StoreBodyL(CMsvStore &)

protected: IMPORT_C void StoreBodyL(CMsvStore &aStore);

Description

Stores and commits the current cached CRichText body text to the appropriate stream in the specified message store. Client applications do not use this function. It is relevant only to implementers of derived classes.

The function overwrites any existing data in that stream. The implementation must have write access to aStore.

A typical use of this function is from CBaseMtm::SaveMessageL().

Parameters

CMsvStore &aStore

Message store in which to store the body text

Leave codes

KErrAccessDenied

The store was opened for read only

Other

Standard stream-related leave codes


RestoreBodyL(CMsvStore &)

protected: IMPORT_C void RestoreBodyL(CMsvStore &aStore);

Description

Gets the current cached CRichText from the appropriate stream in the specified message store. Client applications do not use this function. It is relevant only to implementers of derived classes.

A typical use of this function is from CBaseMtm::LoadMessageL().

Parameters

CMsvStore &aStore

Message store from which to read the body text


ContextEntrySwitched()

protected: virtual void ContextEntrySwitched()=0;

Description

Called by the base class functions CBaseMtm::SwitchCurrentEntryL(TMsvId) and CBaseMtm::SetCurrentEntryL(CMsvEntry *) 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.


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

protected: IMPORT_C virtual void HandleEntryEventL(TMsvEntryEvent aEvent, TAny *aArg1, TAny *aArg2, TAny *aArg3);

Description

Indicates that an event has occurred.

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

The Client-side MTM object is automatically set as an observer, through CMsvEntry::AddObserverL(MMsvEntryObserver &), for the context whenever the context changes (by CBaseMtm::SetCurrentEntryL(CMsvEntry *) or CBaseMtm::SwitchCurrentEntryL(TMsvId)).

The default implementation is defined to do nothing.

Requirements:

Implementations can override this function to handle events concerning the current context.

Parameters

MMsvEntryObserver::TMsvEntryEvent aEvent

Indicates the event type

TAny *aArg1

Event specific argument value

TAny *aArg2

Event specific argument value

TAny *aArg3

Event specific argument value


GetInterface(TUid)

protected: IMPORT_C virtual TAny* GetInterface(TUid aUid);

Description

Returns a pointer to the interface with the specified Uid.

This method is the first part of an extension pattern to allow for more functionality to be supported without adding virtual methods to this base class.

The default implementation returns a NULL pointer.

Parameters

TUid aUid

Uid of the extension interface

Return value

TAny *

Pointer to the extension interface


Extension_(TUint,TAny *&,TAny *)

protected: IMPORT_C virtual TInt Extension_(TUint aExtensionId, TAny *&a0, TAny *a1);

Description

The default Extension service. The default implementation of this function assumes that the new service for setting the charset encoding value for a SMS message is not supported. TAny* is equivalent to void*.

Parameters

TUint aExtensionId

Uid of the extension interface

TAny *&a0

The collective parameters of TAny*

TAny *a1

The collective parameters of TAny*,Charset encoding value is actually extracted from a1.

Return value

TInt

KErrExtensionNotSupported If the message is other than SMS. Other Standard system-wide error codes.

[Top]


Member data


iMsvEntry

protected: CMsvEntry * iMsvEntry;

Description

The current context.


iAddresseeList

protected: CMsvRecipientList * iAddresseeList;

Description

The address list for the current context.


iParaFormatLayer

protected: CParaFormatLayer * iParaFormatLayer;

Description

Paragraph formatting applied to the CRichText object for the body text, as returned by CBaseMtm::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.


iCharFormatLayer

protected: CCharFormatLayer * iCharFormatLayer;

Description

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

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