The messaging framework allows you to retrieve and modify attachments to messages.
Attachments may be retrieved and modified after they have been added to a message.
Get the details of the message to which you want to add an attachment using CMsvEntry::EditStoreL().
This function returns CMsvStore in writable mode.Get an MMsvAttachmentManager attachment manager for the message
entry, using CMsvStore::AttachmentManagerL().
MMsvAttachmentManager::AttachmentCount() function.
CMsvAttachment functions. .
MMsvAttachmentManager::GetattachmentL() function.
The following code uses the MMsvAttachmentManager::AttachmentCount() and GetattachmentL() functions to get attachment information. It then calls the various CMsvAttachment accessor functions to get the attachment
attributes, and to access the attachment file itself:
void CFoo::GetAttachmentInfoL(MMsvAttachmentManager& attManager)
{
// get number of attachments
TInt numAttach = attManager.AttachmentCount();
if ( numAttach == 0 )
{ // no attachments
return;
}
// Get attachment attributes for the first attachment (index 0)
CMsvAttachment* attachInfo = attManager.GetAttachmentInfoL(0);
// Ownership of attachInfo is transferred to the caller - so push it onto the CleanupStack
CleanupStack::PushL(attachInfo);
// Get attachment's name
const TDesC& attachName = attachInfo->AttachmentName();
// Get attachment's size
TInt attachSize = attachInfo->Size();
// Get attachment's type
CMsvAttachment::TMsvAttachmentType attachType = attachInfo->Type();
// Get MIME type
const TDesC8& attachMType = attachInfo->MimeType();
// Get completeness flag
TBool complete = attachInfo->Complete();
...
// Destroy attachInfo when finished.
CleanupStack::PopAndDestroy(attachInfo);
} You can modify attachment information for an existing attachment using the ModifyattachmentL() function. The attachment information object passed in replaces the existing attachment information object.
void CFoo::ModifyAttachmentInfoL(CMsvEntry& aEntry)
{
// Get the store
CMsvStore* store = aEntry.EditStoreL();
CleanupStack::PushL(store);
MMsvAttachmentManager& attManager = store->AttachmentManagerL();
// Get number of attachments
TInt numAttach = attManager.AttachmentCount();
if ( numAttach == 0 )
{ // no attachments
CleanupStack::PopAndDestroy() ; // store
return;
}
// Get attachment attributes for the first attachment (index 0)
CMsvAttachment* attachment = attManager.GetAttachmentInfoL(0);
CleanupStack::PushL( attachment ) ;
// Rename the file
TRequestStatus status;
_LIT(KFileName, "hello.txt");
attachment->SetAttachmentNameL(KFileName);
attachment->SetComplete(EFalse);
// Modify attachment info
attManager.ModifyAttachmentInfoL(attachment, status);
// Wait for request to complete
User::WaitForRequest(status);
attachment->SetComplete(ETrue);
store->CommitL();
CleanupStack::PopAndDestroy(2, store); // attachment, store
}