MMsvAttachmentManager Class Reference

#include <mw/mmsvattachmentmanager.h>

class MMsvAttachmentManager
Public Member Functions
pure virtual voidAddAttachmentL(const TDesC &, CMsvAttachment *, TRequestStatus &)
pure virtual voidAddAttachmentL(RFile &, CMsvAttachment *, TRequestStatus &)
pure virtual voidAddEntryAsAttachmentL(TMsvId, CMsvAttachment *, TRequestStatus &)
pure virtual voidAddLinkedAttachmentL(const TDesC &, CMsvAttachment *, TRequestStatus &)
pure virtual TInt AttachmentCount()
pure virtual voidCancelRequest()
pure virtual voidCreateAttachmentL(const TDesC &, RFile &, CMsvAttachment *, TRequestStatus &)
pure virtual RFile GetAttachmentFileForWriteL(TInt)
pure virtual RFile GetAttachmentFileForWriteL(TMsvAttachmentId)
pure virtual RFile GetAttachmentFileL(TInt)
pure virtual RFile GetAttachmentFileL(TMsvAttachmentId)
pure virtual CMsvAttachment *GetAttachmentInfoL(TInt)
pure virtual CMsvAttachment *GetAttachmentInfoL(TMsvAttachmentId)
pure virtual voidModifyAttachmentInfoL(CMsvAttachment *, TRequestStatus &)
pure virtual voidRemoveAttachmentL(TInt, TRequestStatus &)
pure virtual voidRemoveAttachmentL(TMsvAttachmentId, TRequestStatus &)
pure virtual voidRenameAttachmentL(TInt, const TDesC &, TRequestStatus &)

Detailed Description

Defines the attachment management interface.

This class is a pure virtual interface class that defines the APIs to be used for attachment management in the Messaging Framework. It is expected that the clients of this interface will be MTMs implementations that require attachment management.

The API allows is based around the use of the CMsvAttachment object that represents any type of attachment that is supported by the Messaging Framework. The CMsvAttachment object provides users with various attributes about the attachment without having to actually load or retrieve the attachment.

This attachment manager API supports the following different types of attachments: 1 - File attachments, file based attachments that are copied or created in the message store. 2 - Linked file attachments, file based attachments that are not copied and are simply linked to the file location on disk. 3 - Message entry attachments, existing message entries that can be registered as attachments of another message entry.

For file based attachments, this API also supports the retrieval of the files as open read-only file handles.

All functionality that requires the attachment manager to be in edit mode have been defined as asynchronous. The attachment manager does not allow multiple asynchronous requests to be made at the same time.

See also: CMsvAttachment

Member Function Documentation

AddAttachmentL ( const TDesC &, CMsvAttachment *, TRequestStatus & )

voidAddAttachmentL(const TDesC &aFilePath,
CMsvAttachment *aAttachmentInfo,
TRequestStatus &aStatus
)[pure virtual]

Adds an attachment to the message store by file path.

The attachment file must be located in a public area. The file path must also be a full path specification. The file is copied into the message store.

Parameters
aFilePathThe absolute file path of the attachment file.
aAttachmentInfoThe attachment info associated with the file. If the routine does not leave, then ownership will be transferred to the attachment manager. If the routine does leave then ownership will not have been transfered and the caller is responsible for cleanup.
aStatusThe client's request status to complete when the operation has completed.
Leave Codes
KErrAccessDeniedIf attachment manager is in read-only mode.

AddAttachmentL ( RFile &, CMsvAttachment *, TRequestStatus & )

voidAddAttachmentL(RFile &aFileHandle,
CMsvAttachment *aAttachmentInfo,
TRequestStatus &aStatus
)[pure virtual]

Adds an attachment to the message store by file handle.

This is used to add an attachment from an open file handle such as when adding a file from the caller's private area. The file is copied into the message store. The message server is responsible for closing the file handle once copied.

Parameters
aFileHandleAn open file handle for the attachment file. Ownership is transferred. The caller must close the file handle.
aAttachmentInfoThe attachment info associated with the file. If the routine does not leave, then ownership will be transferred to the attachment manager. If the routine does leave then ownership will not have been transfered and the caller is responsible for cleanup.
aStatusThe client's request status to complete.
Leave Codes
KErrAccessDeniedIf attachment manager is in read-only mode.

AddEntryAsAttachmentL ( TMsvId, CMsvAttachment *, TRequestStatus & )

voidAddEntryAsAttachmentL(TMsvIdaEntryId,
CMsvAttachment *aAttachmentInfo,
TRequestStatus &aStatus
)[pure virtual]

Adds a message entry as an attachment.

The message entry is registered as an attachment of the current message entry. The attachment message entry is not copied.

Parameters
aEntryIdThe message Id of the entry to register as an attachment.
aAttachmentInfoThe attachment info associated with the file. If the routine does not leave, then ownership will be transferred to the attachment manager. If the routine does leave then ownership will not have been transfered and the caller is responsible for cleanup.
aStatusThe client's request status to complete.
Leave Codes
KErrAccessDeniedIf attachment manager is in read-only mode.

AddLinkedAttachmentL ( const TDesC &, CMsvAttachment *, TRequestStatus & )

voidAddLinkedAttachmentL(const TDesC &aFilePath,
CMsvAttachment *aAttachmentInfo,
TRequestStatus &aStatus
)[pure virtual]

Adds an attachment as a linked file attachment.

The attachment is added as a link by its file path. The attachment is not copied to the message store. The attachment is linked and therefore must be in a public location.

It is possible to change a linked attachment file after it has been attached to a message entry. No integrity checking is carried out. This is left to individual MTMs or implementors of this interface to decide if any checking is required such as checking if the size has changed.

Parameters
aFilePathThe absolute file path of the linked attachment file.
aAttachmentInfoThe attachment info associated with the file. If the routine does not leave, then ownership will be transferred to the attachment manager. If the routine does leave then ownership will not have been transfered and the caller is responsible for cleanup.
aStatusThe client's request status to complete.
Leave Codes
KErrAccessDeniedIf attachment manager is in read-only mode.

AttachmentCount ( )

TInt AttachmentCount()const [pure virtual]

Counts the number of attachments.

Returns the number of attachments associated with the message entry. This includes all the attachments that have not been commited yet.

Return Value
The number of attachments.

CancelRequest ( )

voidCancelRequest()[pure virtual]

Cancels the last asynchronous operation that was requested.

Allows callers to cancel the last asynchronous operation. This will have no effect if an asynchronous is not waiting to complete.

CreateAttachmentL ( const TDesC &, RFile &, CMsvAttachment *, TRequestStatus & )

voidCreateAttachmentL(const TDesC &aFileName,
RFile &aAttachmentFile,
CMsvAttachment *aAttachmentInfo,
TRequestStatus &aStatus
)[pure virtual]

Creates a new empty attachment file.

The caller is returned an open writable file handle to an empty attachment file in the message store. The caller must pass in an uninitialised file handle. The file handle cannot be used until the asynchronous request completes successfully. If the request is sucessful the file handle is open and must close by the caller once the data has been written to it.

Parameters
aFileNameThe filename to assign to the newly create attachment file.
aAttachmentFileAn uninitialised file handle. This is opened and can be written to if the request is successful. Ownership is transferred . The caller must close the file handle.
aAttachmentInfoThe attachment info associated with the file. If the routine does not leave, then ownership will be transferred to the attachment manager. If the routine does leave then ownership will not have been transfered and the caller is responsible for cleanup.
Leave Codes
KErrAccessDeniedIf attachment manager is in read-only mode.

GetAttachmentFileForWriteL ( TInt )

RFile GetAttachmentFileForWriteL(TIntaIndex)[pure virtual]

Returns an open writable file handle for the attachment file.

Returns a writable open file handle for the attachment file. This only applies to file based attachments ie. file attachment and linked file attachments. The caller is responsible for closing the returned file handle.

Parameters
aIndexThe array index position of the attachment.
Return Value
A writable open file handle for the attachment file. Caller must close the handle.
Leave Codes
KErrNotSupportedIf the attachment is not a file attachment in the message store.
KErrAccessDeniedIf attachment manager is in read-only mode.

GetAttachmentFileForWriteL ( TMsvAttachmentId )

RFile GetAttachmentFileForWriteL(TMsvAttachmentIdaId)[pure virtual]

Returns an open writable file handle for the attachment file.

Returns a writable open file handle for the attachment file. This only applies to file based attachments ie. file attachment and linked file attachments. The caller is responsible for closing the returned file handle.

Return Value
A writable open file handle for the attachment file. Caller must close the handle.
Leave Codes
KErrNotSupportedIf the attachment is not a file attachment in the message store.
KErrNotFoundIf an attachment with the specified attachment Id is not found.
KErrAccessDeniedIf attachment manager is in read-only mode.

GetAttachmentFileL ( TInt )

RFile GetAttachmentFileL(TIntaIndex)[pure virtual]

Returns an open file handle for the attachment file.

Returns a read-only open file handle for the attachment file. This only applies to file based attachments ie. file attachment and linked file attachments. The caller is responsible for closing the returned file handle.

Parameters
aIndexThe array index position of the attachment.
Return Value
A read-only open file handle for the attachment file. Caller must close the handle.
Leave Codes
KErrNotSupportedIf the attachment is not a file attachment in the message store.

GetAttachmentFileL ( TMsvAttachmentId )

RFile GetAttachmentFileL(TMsvAttachmentIdaId)[pure virtual]

Returns an open file handle for the attachment file.

Returns a read-only open file handle for the attachment file. This only applies to file based attachments ie. file attachment and linked file attachments. The caller is responsible for closing the returned file handle.

Return Value
A read-only open file handle for the attachment file. Caller must close the handle.
Leave Codes
KErrNotSupportedIf the attachment is not a file attachment in the message store.
KErrNotFoundIf an attachment with the specified attachment Id is not found.

GetAttachmentInfoL ( TInt )

CMsvAttachment *GetAttachmentInfoL(TIntaIndex)[pure virtual]

Returns an attachment info object.

This object contains attributes and information about the attachment without having actually retrieving the actual attachment. The caller assumes ownership of the returned object.

Parameters
aIndexThe array index position of the attachment.
Return Value
The attachment info for the attachment. Ownership is passed to caller,

GetAttachmentInfoL ( TMsvAttachmentId )

CMsvAttachment *GetAttachmentInfoL(TMsvAttachmentIdaId)[pure virtual]

Returns an attachment info object.

This object contains attributes and information about the attachment without having actually retrieving the actual attachment. The caller assumes ownership of the returned object.

Parameters
aIdThe attachment Id of the attachment.
Return Value
The attachment info for the attachment. Ownership is passed to caller,
Leave Codes
KErrNotFoundIf an attachment with the specified attachment Id is not found.

ModifyAttachmentInfoL ( CMsvAttachment *, TRequestStatus & )

voidModifyAttachmentInfoL(CMsvAttachment *aAttachmentInfo,
TRequestStatus &aStatus
)[pure virtual]

Modifies the attachment info for a particular attachment.

This allows callers to modify an existing attachment info object for a particular attachment. The attachment info object passed in replaces the existing attachment info object and takes ownership for the object passed in. It is expected that callers will use GetAttachmentInfoL to get the object, make some changes and pass it back into this method.

Parameters
aAttachmentInfoThe attachment info associated with the file. If the routine does not leave, then ownership will be transferred to the attachment manager. If the routine does leave then ownership will not have been transfered and the caller is responsible for cleanup.
aStatusThe client's request status to complete.
Leave Codes
KErrNotFoundIf the attachment that is trying to be modified cannot be found.
KErrAccessDeniedIf attachment manager is in read-only mode.

RemoveAttachmentL ( TInt, TRequestStatus & )

voidRemoveAttachmentL(TIntaIndex,
TRequestStatus &aStatus
)[pure virtual]

Removes the attachment from the message entry.

This changes the array index values of all the attachments after the removed one. Attachment files stored in the message store are deleted. Linked files and message entry attachments are not deleted, this is left to the caller to do if required.

Leave Codes
KErrAccessDeniedIf attachment manager is in read-only mode.

RemoveAttachmentL ( TMsvAttachmentId, TRequestStatus & )

voidRemoveAttachmentL(TMsvAttachmentIdaId,
TRequestStatus &aStatus
)[pure virtual]

Removes the attachment from the message entry.

This changes the array index values of all the attachments after the removed one. Attachment files stored in the message store are deleted. Linked files and message entry attachments are not deleted, this is left to the caller to do if required.

Leave Codes
KErrAccessDeniedIf attachment manager is in read-only mode.
KErrNotFoundIf an attachment with the specified attachment Id is not found.

RenameAttachmentL ( TInt, const TDesC &, TRequestStatus & )

voidRenameAttachmentL(TIntaIndex,
const TDesC &aNewName,
TRequestStatus &aStatus
)[pure virtual]

Renames the physical filename of an attachment.

Parameters
aIndexThe array index position of the attachment to be renamed.
aNewNameThe new name of the attachment.
aStatusThe client's request status to complete.
Leave Codes
KErrAccessDeniedIf attachment manager is in read-only mode.
KErrAlreadyExistsIf the supplied attachment filename already exists.