diff -r 578830873419 -r ecc8def7944a emailservices/emailcommon/src/CFSMailMessagePart.cpp --- a/emailservices/emailcommon/src/CFSMailMessagePart.cpp Fri Apr 16 14:51:52 2010 +0300 +++ b/emailservices/emailcommon/src/CFSMailMessagePart.cpp Mon May 03 12:23:15 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -15,7 +15,10 @@ * */ +// #include +// + #include "emailtrace.h" #include #include @@ -38,29 +41,29 @@ // ----------------------------------------------------------------------------- // CFSMailMessagePart::NewLC // ----------------------------------------------------------------------------- -EXPORT_C CFSMailMessagePart* CFSMailMessagePart::NewLC( - TFSMailMsgId aMessageId, TFSMailMsgId aMessagePartId ) +EXPORT_C CFSMailMessagePart* CFSMailMessagePart::NewLC( TFSMailMsgId aMessageId, + TFSMailMsgId aMessagePartId ) { FUNC_LOG; - CFSMailMessagePart* self = new (ELeave) CFSMailMessagePart(); - CleanupStack::PushL(self); - self->ConstructL( aMessageId, aMessagePartId ); - return self; + CFSMailMessagePart* adr = new (ELeave) CFSMailMessagePart(); + CleanupStack::PushL(adr); + adr->ConstructL( aMessageId, aMessagePartId ); + return adr; } // ----------------------------------------------------------------------------- // CFSMailMessagePart::NewL // ----------------------------------------------------------------------------- -EXPORT_C CFSMailMessagePart* CFSMailMessagePart::NewL( - TFSMailMsgId aMessageId, TFSMailMsgId aMessagePartId ) +EXPORT_C CFSMailMessagePart* CFSMailMessagePart::NewL( TFSMailMsgId aMessageId, + TFSMailMsgId aMessagePartId ) { FUNC_LOG; - CFSMailMessagePart* self = - CFSMailMessagePart::NewLC( aMessageId, aMessagePartId ); - CleanupStack::Pop(self); - return self; + CFSMailMessagePart* adr = CFSMailMessagePart::NewLC( aMessageId, aMessagePartId ); + CleanupStack::Pop(adr); + return adr; } +// // ----------------------------------------------------------------------------- // CFSMailMessagePart::NewLC // ----------------------------------------------------------------------------- @@ -68,11 +71,12 @@ const NmMessagePart& aNmMessage ) { FUNC_LOG; - CFSMailMessagePart* self = new (ELeave) CFSMailMessagePart(); - CleanupStack::PushL(self); - self->ConstructL( aNmMessageId,aNmMessage ); - return self; + CFSMailMessagePart* self = new (ELeave) CFSMailMessagePart(); + CleanupStack::PushL(self); + self->ConstructL( aNmMessageId,aNmMessage ); + return self; } +// // ----------------------------------------------------------------------------- // CFSMailMessagePart::ConstructL @@ -81,7 +85,8 @@ TFSMailMsgId aMessagePartId ) { FUNC_LOG; - // Base class initialization +// + // Base class initialization CFSMailMessageBase::ConstructL(aMessageId); iNmPrivateMessagePart = new NmMessagePartPrivate(); @@ -91,13 +96,12 @@ iMessagePartsStatus = EFSDefault; - // set request handler pointer - iRequestHandler = static_cast(Dll::Tls()); - iContentTypeParams = new (ELeave)CDesCArrayFlat( KArrayGranularity ); iContentDispositionParams = new (ELeave)CDesCArrayFlat( KArrayGranularity ); +// } +// // ----------------------------------------------------------------------------- // CFSMailMessagePart::ConstructL // ----------------------------------------------------------------------------- @@ -111,14 +115,13 @@ iMessagePartsStatus = EFSDefault; - // set request handler pointer - iRequestHandler = static_cast(Dll::Tls()); - iContentTypeParams = new (ELeave)CDesCArrayFlat( KArrayGranularity ); iContentDispositionParams = new (ELeave)CDesCArrayFlat( KArrayGranularity ); } +// +// // ----------------------------------------------------------------------------- // CFSMailMessagePart::ConstructL // ----------------------------------------------------------------------------- @@ -134,13 +137,11 @@ iMessagePartsStatus = EFSDefault; - // set request handler pointer - iRequestHandler = static_cast(Dll::Tls()); - iContentTypeParams = new (ELeave)CDesCArrayFlat( KArrayGranularity ); iContentDispositionParams = new (ELeave)CDesCArrayFlat( KArrayGranularity ); } +// // ----------------------------------------------------------------------------- // CFSMailMessagePart::~CFSMailMessagePart @@ -148,7 +149,7 @@ EXPORT_C CFSMailMessagePart::~CFSMailMessagePart() { FUNC_LOG; - +// iContentType, iContentDescription, iContentDisposition, iContentID removed if(iAttachmentName) { delete iAttachmentName; @@ -184,12 +185,13 @@ // ----------------------------------------------------------------------------- // CFSMailMessagePart::CFSMailMessagePart // ----------------------------------------------------------------------------- -CFSMailMessagePart::CFSMailMessagePart() +CFSMailMessagePart::CFSMailMessagePart() : CFSMailMessageBase() { - FUNC_LOG; - - iContentClass = HBufC::New(1); - iContentClass->Des().Copy(KNullDesC()); + FUNC_LOG; + +// iContentType, iContentDescription, iContentDisposition, iContentID removed + iContentClass = HBufC::New(1); + iContentClass->Des().Copy(KNullDesC()); iAttachmentName = HBufC::New(1); iAttachmentName->Des().Copy(KNullDesC()); @@ -203,19 +205,23 @@ EXPORT_C const TDesC& CFSMailMessagePart::GetContentType() const { FUNC_LOG; +// iContentTypePtr.Set(reinterpret_cast (iNmPrivateMessagePart->mContentType.utf16()), iNmPrivateMessagePart->mContentType.length()); return iContentTypePtr; +// } // ----------------------------------------------------------------------------- // CFSMailMessagePart::SetContentType // ----------------------------------------------------------------------------- -EXPORT_C void CFSMailMessagePart::SetContentType( const TDesC& aContentType ) +EXPORT_C void CFSMailMessagePart::SetContentType(const TDesC& aContentType) { FUNC_LOG; +// QString qtContentType = QString::fromUtf16(aContentType.Ptr(), aContentType.Length()); iNmPrivateMessagePart->mContentType = qtContentType; +// } // ----------------------------------------------------------------------------- @@ -224,15 +230,18 @@ EXPORT_C TFSMailMsgId CFSMailMessagePart::GetPartId() const { FUNC_LOG; +// return TFSMailMsgId(iNmPrivateMessagePart->mOwnId); +// } +// // ----------------------------------------------------------------------------- // CFSMailMessagePart::ChildPartsL // ----------------------------------------------------------------------------- EXPORT_C void CFSMailMessagePart::ChildPartsL( RPointerArray& aParts, TFSMailMessagePartDataSource aDataSource) -{ + { FUNC_LOG; if (aDataSource == EDataSourceMessageStore) @@ -254,72 +263,102 @@ aParts.AppendL(part); CleanupStack::Pop(part); } - } - } + } + } +// // ----------------------------------------------------------------------------- // CFSMailMessagePart::ChildPartL // ----------------------------------------------------------------------------- -EXPORT_C CFSMailMessagePart* CFSMailMessagePart::ChildPartL( TFSMailMsgId aPartId ) -{ +EXPORT_C CFSMailMessagePart* CFSMailMessagePart::ChildPartL(TFSMailMsgId aPartId) + { FUNC_LOG; - - CFSMailMessagePart* part = NULL; - if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetMessageId())) - { - part = plugin->MessagePartL(GetMailBoxId(), - GetFolderId(), - GetMessageId(), - aPartId); - } - return part; -} + + CFSMailMessagePart* part = NULL; + if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetMessageId())) + { + part = plugin->MessagePartL(GetMailBoxId(), + GetFolderId(), + GetMessageId(), + aPartId); + } + return part; + } // ----------------------------------------------------------------------------- // CFSMailMessagePart::IsMessageL // ----------------------------------------------------------------------------- EXPORT_C TBool CFSMailMessagePart::IsMessageL() const -{ + { FUNC_LOG; - TBuf ptr; - if ( !iNmPrivateMessagePart->mContentType.isNull() ) { + TBuf ptr; +// + if ( !iNmPrivateMessagePart->mContentType.isNull() ) + { ptr.Copy(GetContentType()); - TInt length = ptr.Locate(';'); - if(length >= 0) { +// + TInt length = ptr.Locate(';'); + if(length >= 0) + { ptr.SetLength(length); + } + + if( !ptr.CompareF(KFSMailContentTypeMessage) ) + { + return ETrue; } - if( !ptr.Compare(KFSMailContentTypeMessage) ) { - return ETrue; - } } - return EFalse; -} + return EFalse; + } // ----------------------------------------------------------------------------- // CFSMailMessagePart::NewChildPartL // ----------------------------------------------------------------------------- EXPORT_C CFSMailMessagePart* CFSMailMessagePart::NewChildPartL( const TFSMailMsgId aInsertBefore, - const TDesC& aContentType ) -{ + const TDesC& aContentType ) + { FUNC_LOG; - CFSMailMessagePart* part = NULL; - - if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetMessageId())) - { - part = plugin->NewChildPartL( GetMailBoxId(), GetFolderId(), GetMessageId(), - GetPartId(), aInsertBefore, aContentType ); - } - return part; -} + CFSMailMessagePart* part = NULL; + + if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetMessageId())) + { + part = plugin->NewChildPartL( GetMailBoxId(), GetFolderId(), GetMessageId(), + GetPartId(), aInsertBefore, aContentType ); + } + return part; + } // ----------------------------------------------------------------------------- // CFSMailMessagePart::RemoveChildPartL // ----------------------------------------------------------------------------- -EXPORT_C void CFSMailMessagePart::RemoveChildPartL( TFSMailMsgId aPartId ) +EXPORT_C void CFSMailMessagePart::RemoveChildPartL(TFSMailMsgId aPartId) { FUNC_LOG; + // get plugin pointer + TFSMailMsgId id = GetPartId(); + if(id.IsNullId()) + { + id = GetMessageId(); + } + CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(id); + + if(plugin) + { + plugin->RemoveChildPartL( GetMailBoxId(), GetFolderId(), GetMessageId(), GetPartId(), aPartId ); + } + } + +// +// ----------------------------------------------------------------------------- +// CFSMailMessagePart::RemoveChildPartL +// ----------------------------------------------------------------------------- +EXPORT_C TInt CFSMailMessagePart::RemoveChildPartL( TFSMailMsgId aPartId, + MFSMailRequestObserver& aOperationObserver) +{ + FUNC_LOG; + TFSPendingRequest request; // get plugin pointer TFSMailMsgId id = GetPartId(); if(id.IsNullId()) @@ -327,52 +366,79 @@ id = GetMessageId(); } CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(id); - + if(plugin) { - plugin->RemoveChildPartL( GetMailBoxId(), GetFolderId(), GetMessageId(), GetPartId(), aPartId ); + request = iRequestHandler->InitAsyncRequestL( id.PluginId(), + aOperationObserver ); + + MFSMailRequestObserver* observer = request.iObserver; + + TRAPD(err, plugin->RemoveChildPartL( GetMailBoxId(), + GetFolderId(), + GetMessageId(), + GetPartId(), + aPartId, + *observer, + request.iRequestId)); + + if( err != KErrNone ) + { + iRequestHandler->CompleteRequest( request.iRequestId ); + User::Leave( err ); + } } + else + { + User::Leave( KErrNotFound ); + } + + return request.iRequestId; } +// // ----------------------------------------------------------------------------- // CFSMailMessagePart::GetContentClass // ----------------------------------------------------------------------------- EXPORT_C const TDesC& CFSMailMessagePart::GetContentClass() -{ + { FUNC_LOG; - return *iContentClass; -} + return *iContentClass; + } // ----------------------------------------------------------------------------- // CFSMailMessagePart::SetContentClass // ----------------------------------------------------------------------------- EXPORT_C void CFSMailMessagePart::SetContentClass( const TDesC& aContentClass ) -{ + { FUNC_LOG; - HBufC* contentClass = HBufC::New(aContentClass.Length()); - - // store new mailbox name - if(contentClass) - { - delete iContentClass; - iContentClass = contentClass; - iContentClass->Des().Copy(aContentClass); - } - iContentClass->ReAlloc(aContentClass.Length()); - if(iContentClass) - { - iContentClass->Des().Copy(aContentClass); - } -} + // + HBufC* contentClass = HBufC::New(aContentClass.Length()); + + // store new mailbox name + if(contentClass) + { + delete iContentClass; + iContentClass = contentClass; + iContentClass->Des().Copy(aContentClass); + } + iContentClass->ReAlloc(aContentClass.Length()); + if(iContentClass) + { + iContentClass->Des().Copy(aContentClass); + } + } // ----------------------------------------------------------------------------- // CFSMailMessagePart::ContentSize // ----------------------------------------------------------------------------- EXPORT_C TUint CFSMailMessagePart::ContentSize() const -{ + { FUNC_LOG; +// return (TUint)iNmPrivateMessagePart->mSize; +// } // ----------------------------------------------------------------------------- @@ -381,101 +447,97 @@ EXPORT_C void CFSMailMessagePart::SetContentSize( TUint aContentSize ) { FUNC_LOG; +// iNmPrivateMessagePart->mSize = quint32(aContentSize); +// } // ----------------------------------------------------------------------------- // CFSMailMessagePart::ContentID // ----------------------------------------------------------------------------- EXPORT_C const TDesC& CFSMailMessagePart::ContentID() -{ + { FUNC_LOG; - +// iContentIDPtr.Set(reinterpret_cast (iNmPrivateMessagePart->mContentId.utf16()), iNmPrivateMessagePart->mContentId.length()); return iContentIDPtr; - +// } // ----------------------------------------------------------------------------- // CFSMailMessagePart::SetContentIDL // ----------------------------------------------------------------------------- -EXPORT_C void CFSMailMessagePart::SetContentIDL( const TDesC& aContentID ) -{ +EXPORT_C void CFSMailMessagePart::SetContentIDL(const TDesC& aContentID) + { FUNC_LOG; - +// QString qtContentID = QString::fromUtf16(aContentID.Ptr(), aContentID.Length()); iNmPrivateMessagePart->mContentId = qtContentID; - +// } // ----------------------------------------------------------------------------- // CFSMailMessagePart::CopyMessageAsChildPartL // ----------------------------------------------------------------------------- EXPORT_C CFSMailMessagePart* CFSMailMessagePart::CopyMessageAsChildPartL( - TFSMailMsgId aInsertBefore, - CFSMailMessage* aMessage ) -{ + TFSMailMsgId aInsertBefore, + CFSMailMessage* aMessage) + { FUNC_LOG; - - CFSMailMessagePart* part = NULL; - if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId())) - { - part = plugin->CopyMessageAsChildPartL(GetMailBoxId(),GetFolderId(),GetMessageId(),GetPartId(), - aInsertBefore, *aMessage); - } - return part; -} + + CFSMailMessagePart* part = NULL; + if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId())) + { + part = plugin->CopyMessageAsChildPartL(GetMailBoxId(),GetFolderId(),GetMessageId(),GetPartId(), + aInsertBefore, *aMessage); + } + return part; + } // ----------------------------------------------------------------------------- // CFSMailMessagePart::RemoveContentL // ----------------------------------------------------------------------------- EXPORT_C void CFSMailMessagePart::RemoveContentL() -{ + { FUNC_LOG; - - CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId()); - // - if(!plugin) - // - { - plugin = iRequestHandler->GetPluginByUid(GetMessageId()); - } - // - if(plugin) - // - { - RPointerArray parts; - RArray partIds; - plugin->ChildPartsL(GetMailBoxId(),GetFolderId(),GetMessageId(),GetPartId(),parts); - for(TInt i=0;iGetMessageId()); - } + + CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId()); + if(plugin == NULL) + { + plugin = iRequestHandler->GetPluginByUid(GetMessageId()); + } + + if(plugin != NULL) + { + RPointerArray parts; + RArray partIds; + plugin->ChildPartsL(GetMailBoxId(),GetFolderId(),GetMessageId(),GetPartId(),parts); + for(TInt i=0;iGetMessageId()); + } partIds.Append(GetPartId()); - plugin->RemovePartContentL(GetMailBoxId(), GetFolderId(), GetMessageId(), partIds); + plugin->RemovePartContentL(GetMailBoxId(), GetFolderId(), GetMessageId(), partIds); parts.ResetAndDestroy(); - partIds.Reset(); - } -} + partIds.Reset(); + } + } // ----------------------------------------------------------------------------- // CFSMailMessagePart::RemoveDownLoadedAttachmentsL // ----------------------------------------------------------------------------- EXPORT_C void CFSMailMessagePart::RemoveDownLoadedAttachmentsL() -{ + { FUNC_LOG; CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId()); - // - if(!plugin) - // + if(plugin == NULL) { plugin = iRequestHandler->GetPluginByUid(GetMessageId()); } - // - if(plugin) - // + + if(plugin != NULL) { // get attachment list RPointerArray attachments; @@ -500,141 +562,150 @@ attachments.ResetAndDestroy(); ids.Reset(); } -} + } // ----------------------------------------------------------------------------- // CFSMailMessagePart::GetContentFileL // ----------------------------------------------------------------------------- EXPORT_C RFile CFSMailMessagePart::GetContentFileL() -{ + { FUNC_LOG; - - if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId())) - { - TInt rcode = plugin->GetMessagePartFileL( GetMailBoxId(), GetFolderId(), - GetMessageId(), GetPartId(), - iFile ); - // if content is encrypted, use temp dir files - if(rcode == KErrNotSupported) - { - // temp directory C:\Private\ - TFileName fileName; - iFile = iRequestHandler->GetTempFileL(GetPartId(),fileName); - plugin->CopyMessagePartFileL(GetMailBoxId(), GetFolderId(), - GetMessageId(), GetPartId(), - fileName); - } - } - return iFile; -} - + + if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId())) + { + TInt rcode = plugin->GetMessagePartFileL( GetMailBoxId(), GetFolderId(), + GetMessageId(), GetPartId(), + iFile ); + // if content is encrypted, use temp dir files + if(rcode == KErrNotSupported) + { + // temp directory C:\Private\ + TFileName fileName; + iFile = iRequestHandler->GetTempFileL(GetPartId(),fileName); + plugin->CopyMessagePartFileL(GetMailBoxId(), GetFolderId(), + GetMessageId(), GetPartId(), + fileName); + } + } + + return iFile; + } + // ----------------------------------------------------------------------------- // CFSMailMessagePart::SetContentFromFileL // ----------------------------------------------------------------------------- -EXPORT_C void CFSMailMessagePart::SetContentFromFileL( const TDesC& aFilePath ) -{ +EXPORT_C void CFSMailMessagePart::SetContentFromFileL(const TDesC& aFilePath) + { FUNC_LOG; - if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId())) - { - plugin->SetPartContentFromFileL(GetMailBoxId(), GetFolderId(), - GetMessageId(), GetPartId(), aFilePath ); - } -} + if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId())) + { + plugin->SetPartContentFromFileL(GetMailBoxId(), GetFolderId(), + GetMessageId(), GetPartId(), aFilePath ); + } + } // ----------------------------------------------------------------------------- // CFSMailMessagePart::CopyContentFileL // ----------------------------------------------------------------------------- EXPORT_C void CFSMailMessagePart::CopyContentFileL( const TDesC& aFilePath ) -{ + { FUNC_LOG; - if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId())) - { - plugin->CopyMessagePartFileL( GetMailBoxId(), GetFolderId(), - GetMessageId(), GetPartId(), aFilePath); - } -} + if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId())) + { + plugin->CopyMessagePartFileL( GetMailBoxId(), GetFolderId(), + GetMessageId(), GetPartId(), aFilePath); + } + } // ----------------------------------------------------------------------------- // CFSMailMessagePart::GetContentToBufferL // ----------------------------------------------------------------------------- -EXPORT_C void CFSMailMessagePart::GetContentToBufferL( TDes16& aBuffer, TUint aStartOffset ) -{ +EXPORT_C void CFSMailMessagePart::GetContentToBufferL(TDes16& aBuffer, TUint aStartOffset) + { FUNC_LOG; - if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId())) - { - plugin->GetContentToBufferL( GetMailBoxId(), GetFolderId(), GetMessageId(), - GetPartId(), aBuffer, aStartOffset ); - } -} - + if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId())) + { + plugin->GetContentToBufferL( GetMailBoxId(), GetFolderId(), GetMessageId(), + GetPartId(), aBuffer, aStartOffset ); + } + } + // ----------------------------------------------------------------------------- // CFSMailMessagePart::SetContent // ----------------------------------------------------------------------------- EXPORT_C void CFSMailMessagePart::SetContent( TDes16& aBuffer ) -{ + { FUNC_LOG; - if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId())) - { - // + if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId())) + { +// TRAP_IGNORE(plugin->SetContentL( aBuffer, GetMailBoxId(), GetFolderId(), GetMessageId(), GetPartId() )); - // +// } -} + } // ----------------------------------------------------------------------------- // CFSMailMessagePart::ContentDescription // ----------------------------------------------------------------------------- EXPORT_C const TDesC& CFSMailMessagePart::ContentDescription() -{ + { FUNC_LOG; +// iContentDescriptionPtr.Set(reinterpret_cast ( iNmPrivateMessagePart->mContentDescription.utf16()), iNmPrivateMessagePart->mContentDescription.length()); return iContentDescriptionPtr; +// } // ----------------------------------------------------------------------------- // CFSMailMessagePart::SetContentDescription // ----------------------------------------------------------------------------- EXPORT_C void CFSMailMessagePart::SetContentDescription( const TDesC& aContentDescription ) -{ + { FUNC_LOG; +// QString qtContentDescription = QString::fromUtf16( aContentDescription.Ptr(), aContentDescription.Length()); iNmPrivateMessagePart->mContentDescription = qtContentDescription; +// } // ----------------------------------------------------------------------------- // CFSMailMessagePart::ContentDisposition // ----------------------------------------------------------------------------- EXPORT_C const TDesC& CFSMailMessagePart::ContentDisposition() -{ + { FUNC_LOG; +// iContentDispositionPtr.Set(reinterpret_cast ( iNmPrivateMessagePart->mContentDisposition.utf16()), iNmPrivateMessagePart->mContentDisposition.length()); return iContentDispositionPtr; +// } // ----------------------------------------------------------------------------- // CFSMailMessagePart::SetContentDisposition // ----------------------------------------------------------------------------- EXPORT_C void CFSMailMessagePart::SetContentDisposition( const TDesC& aContentDisposition ) -{ + { FUNC_LOG; +// QString qtContentDisposition = QString::fromUtf16( aContentDisposition.Ptr(), aContentDisposition.Length()); iNmPrivateMessagePart->mContentDisposition = qtContentDisposition; +// } // ----------------------------------------------------------------------------- // CFSMailMessagePart::ContentTypeParameters // ----------------------------------------------------------------------------- EXPORT_C CDesCArray& CFSMailMessagePart::ContentTypeParameters() -{ + { FUNC_LOG; - +// if (iNmPrivateMessagePart->mContentType.isNull()) { return *iContentTypeParams; @@ -646,6 +717,7 @@ // check content type parameters existence TInt index = GetContentType().Locate(';'); +// if(index >= 0) { TInt attLength(0); @@ -657,7 +729,9 @@ HBufC* buf; // set pointer to first parameter +// TPtrC parameter = GetContentType().Mid(index+1); +// attLength = parameter.Locate('='); if(attLength >= 0) { @@ -726,22 +800,26 @@ // CFSMailMessagePart::ContentDispositionParameters // ----------------------------------------------------------------------------- EXPORT_C CDesCArray& CFSMailMessagePart::ContentDispositionParameters() -{ + { FUNC_LOG; +// const TDesC& contentDisposition = ContentDisposition(); if(!contentDisposition.Ptr()) { return *iContentDispositionParams; } +// // clear parameter array iContentDispositionParams->Reset(); TInt ret = KErrNone; // check content disposition parameters existence +// TInt index = contentDisposition.Locate(';'); +// if( index >= 0 ) { TInt attLength(0); @@ -752,7 +830,9 @@ TPtrC value; // set pointer to first parameter +// TPtrC parameter = contentDisposition.Mid(index+1); +// attLength = parameter.Locate('='); if( attLength >= 0 ) { @@ -856,7 +936,7 @@ EXPORT_C MMRInfoObject& CFSMailMessagePart::GetMRInfo() { FUNC_LOG; - return *iMeetingRequest; + return *iMeetingRequest; } // ----------------------------------------------------------------------------- @@ -865,55 +945,47 @@ EXPORT_C TBool CFSMailMessagePart::IsMRInfoSet() { FUNC_LOG; - if(iMeetingRequest) - { - return ETrue; - } - else - { - return EFalse; - } + if(iMeetingRequest) + { + return ETrue; + } + else + { + return EFalse; + } } // ----------------------------------------------------------------------------- // CFSMailMessagePart::SetMRInfo -// ----------------------------------------------------------------------------- -EXPORT_C void CFSMailMessagePart::SetMRInfo( MMRInfoObject* aMeetingRequest ) +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessagePart::SetMRInfo(MMRInfoObject* aMeetingRequest) { FUNC_LOG; - if(iMeetingRequest) - { - delete iMeetingRequest; - } - iMeetingRequest = aMeetingRequest; -} - -// ----------------------------------------------------------------------------- -// CFSMailMessagePart::RequestHandler -// ----------------------------------------------------------------------------- -EXPORT_C CFSMailRequestHandler& CFSMailMessagePart::RequestHandler( ) -{ - return *iRequestHandler; + if(iMeetingRequest) + { + delete iMeetingRequest; + } + iMeetingRequest = aMeetingRequest; } // ----------------------------------------------------------------------------- // CFSMailMessagePart::SaveL // ----------------------------------------------------------------------------- EXPORT_C void CFSMailMessagePart::SaveL() -{ + { FUNC_LOG; - if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId())) - { - plugin->StoreMessagePartL( GetMailBoxId(), GetFolderId(), GetMessageId(), *this ); - } -} + if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId())) + { + plugin->StoreMessagePartL( GetMailBoxId(), GetFolderId(), GetMessageId(), *this ); + } + } // ----------------------------------------------------------------------------- // CFSMailMessagePart::SetAttachmentNameL // ----------------------------------------------------------------------------- -EXPORT_C void CFSMailMessagePart::SetAttachmentNameL( const TDesC& aFilePath ) -{ +EXPORT_C void CFSMailMessagePart::SetAttachmentNameL(const TDesC& aFilePath) + { FUNC_LOG; // Parse file name in case full path is given TPtrC name; @@ -927,28 +999,36 @@ // Set Content-Type param "name" = filename TUint length = KFSMailContentTypeParamName.iTypeLength + name.Length() + 5; - if (!iNmPrivateMessagePart->mContentType.isNull()) { +// + if (!iNmPrivateMessagePart->mContentType.isNull()) + { length += GetContentType().Length(); - } + } HBufC* buffer = HBufC::NewL(length); - if (!iNmPrivateMessagePart->mContentType.isNull()) { + if (!iNmPrivateMessagePart->mContentType.isNull()) + { buffer->Des().Append(GetContentType()); - } + } +// + buffer->Des().Append(_L("; ")); buffer->Des().Append(KFSMailContentTypeParamName); buffer->Des().Append('"'); buffer->Des().Append(name); buffer->Des().Append('"'); +// SetContentType(*buffer); delete buffer; +// // Set Content-Disposition as "attachment" and // Content-Disposition param "filename" = filename and length = KFSMailContentDispAttachment.iTypeLength + KFSMailContentDispParamFilename.iTypeLength + name.Length() + 4; +// buffer = HBufC::NewL(length); buffer->Des().Append(KFSMailContentDispAttachment); buffer->Des().Append(_L("; ")); @@ -956,63 +1036,64 @@ buffer->Des().Append('"'); buffer->Des().Append(name); buffer->Des().Append('"'); - SetContentDisposition(*buffer); delete buffer; // set content description SetContentDescription(name); - +// } // ----------------------------------------------------------------------------- // CFSMailMessagePart::AttachmentNameL // ----------------------------------------------------------------------------- EXPORT_C TDesC& CFSMailMessagePart::AttachmentNameL() -{ + { FUNC_LOG; - // Look first from Content-Type param "name" - TInt ptr = GetContentType().Find(KFSMailContentTypeParamName); - if(ptr >= 0) - { - ptr = GetContentType().Locate('='); - TInt length = GetContentType().Length()-ptr-3; - TPtrC name = GetContentType().Mid((ptr+2),length); - if(iAttachmentName) - { - delete iAttachmentName; - iAttachmentName = NULL; - } +// + // Look first from Content-Type param "name" + TInt ptr = GetContentType().Find(KFSMailContentTypeParamName); + if(ptr >= 0) + { + ptr = GetContentType().Locate('='); + TInt length = GetContentType().Length()-ptr-3; + TPtrC name = GetContentType().Mid((ptr+2),length); + if(iAttachmentName) + { + delete iAttachmentName; + iAttachmentName = NULL; + } + iAttachmentName = HBufC::New(name.Length()); + iAttachmentName->Des().Copy(name); + return *iAttachmentName; + } + // then if Content-Disposition is "attachment" look from Content-Disposition param "filename" and + TDesC contentDisposition = ContentDisposition(); + ptr = contentDisposition.Find(KFSMailContentDispAttachment); + if(ptr >= 0) + { + ptr = contentDisposition.Find(KFSMailContentDispParamFilename); + if(ptr > 0) + { + ptr = contentDisposition.Locate('='); + TInt length = contentDisposition.Length()-ptr-3; + TPtrC name = contentDisposition.Mid(ptr+2,length); + if(iAttachmentName) + { + delete iAttachmentName; + iAttachmentName = NULL; + } iAttachmentName = HBufC::New(name.Length()); iAttachmentName->Des().Copy(name); - return *iAttachmentName; - } - // then if Content-Disposition is "attachment" look from Content-Disposition param "filename" and - TDesC contentDisposition = ContentDisposition(); - ptr = contentDisposition.Find(KFSMailContentDispAttachment); - if(ptr >= 0) - { - ptr = contentDisposition.Find(KFSMailContentDispParamFilename); - if(ptr > 0) - { - ptr = contentDisposition.Locate('='); - TInt length = contentDisposition.Length()-ptr-3; - TPtrC name = contentDisposition.Mid(ptr+2,length); - if(iAttachmentName) - { - delete iAttachmentName; - iAttachmentName = NULL; - } - iAttachmentName = HBufC::New(name.Length()); - iAttachmentName->Des().Copy(name); - return *iAttachmentName; - } + return *iAttachmentName; } - // finally look if there is Content-Description. - return iContentDescriptionPtr; - + } + // finally look if there is Content-Description. + return iContentDescriptionPtr; +// } +// // ----------------------------------------------------------------------------- // CFSMailMessagePart::FindBodyPartL // ----------------------------------------------------------------------------- @@ -1032,7 +1113,7 @@ ptr.SetLength(length); } - if (!ptr.Compare(aContentType)) + if (!ptr.CompareF(aContentType)) { return this; } @@ -1051,7 +1132,7 @@ } if (iMessageParts.Count()) { - if (!ptr.Compare(KFSMailContentTypeMultipartAlternative)) + if (!ptr.CompareF(KFSMailContentTypeMultipartAlternative)) { // multipart / alternative for (TInt i = 0; i < iMessageParts.Count(); i++) @@ -1062,31 +1143,24 @@ { ptr.SetLength(length); } - if (!ptr.Compare(aContentType)) + if (!ptr.CompareF(aContentType)) { messagePart = iMessageParts[i]; // remove part from table iMessageParts.Remove(i); break; } - else if (!ptr.Compare( - KFSMailContentTypeMultipartRelated) - || !ptr.Compare( - KFSMailContentTypeMultipartMixed) - || !ptr.Compare( - KFSMailContentTypeMultipartAlternative) - || !ptr.Compare( - KFSMailContentTypeMultipartDigest) - || !ptr.Compare( - KFSMailContentTypeMultipartParallel)) + else if(!ptr.CompareF(KFSMailContentTypeMultipartRelated) || + !ptr.CompareF(KFSMailContentTypeMultipartMixed) || + !ptr.CompareF(KFSMailContentTypeMultipartAlternative) || + !ptr.CompareF(KFSMailContentTypeMultipartDigest) || + !ptr.CompareF(KFSMailContentTypeMultipartParallel)) { // multipart, check child parts messagePart = iMessageParts[i]; // remove part from table - messagePart = messagePart->FindBodyPartL( - aContentType); - if (messagePart && messagePart->GetPartId() - == iMessageParts[0]->GetPartId()) + messagePart = messagePart->FindBodyPartL(aContentType); + if (messagePart && messagePart->GetPartId() == iMessageParts[0]->GetPartId()) { iMessageParts.Remove(i); } @@ -1100,8 +1174,7 @@ messagePart = iMessageParts[0]; // remove part from table messagePart = messagePart->FindBodyPartL(aContentType); - if (messagePart && messagePart->GetPartId() - == iMessageParts[0]->GetPartId()) + if (messagePart && messagePart->GetPartId() == iMessageParts[0]->GetPartId()) { iMessageParts.Remove(0); } @@ -1128,13 +1201,43 @@ } return messagePart; } +// + +// ----------------------------------------------------------------------------- +// CFSMailMessagePart::ContentTypeMatches +// ----------------------------------------------------------------------------- +EXPORT_C TBool CFSMailMessagePart::ContentTypeMatches( const TDesC& aContentType ) +{ + FUNC_LOG; + + TBuf ptr; + TBool result(EFalse); +// + if ( !iNmPrivateMessagePart->mContentType.isNull() ) + { + ptr.Copy(GetContentType()); +// + TInt length = ptr.Locate(';'); + if(length >= 0) + { + ptr.SetLength(length); + } + + if( !ptr.CompareF(aContentType) ) // case-insensitive comparision + { + result = ETrue; + } + } + + return result; +} // ----------------------------------------------------------------------------- // CFSMailMessagePart::AppendAttachmentsL // ----------------------------------------------------------------------------- EXPORT_C void CFSMailMessagePart::AppendAttachmentsL( - RPointerArray& aParts ) -{ + RPointerArray& aParts) + { FUNC_LOG; CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetMessageId() ); if ( plugin ) @@ -1142,17 +1245,17 @@ RPointerArray messageParts; CleanupResetAndDestroyPushL( messageParts ); plugin->ChildPartsL( GetMailBoxId(), GetFolderId(), - GetMessageId(), GetPartId(), messageParts ); + GetMessageId(), GetPartId(), messageParts ); const TInt messagePartCount = messageParts.Count(); for ( TInt i = 0; i < messagePartCount; i++ ) { const TDesC& contentType = messageParts[i]->GetContentType(); - if (!contentType.Compare(KFSMailContentTypeMultipartMixed) || - !contentType.Compare(KFSMailContentTypeMultipartAlternative) || - !contentType.Compare(KFSMailContentTypeMultipartDigest) || - !contentType.Compare(KFSMailContentTypeMultipartRelated) || - !contentType.Compare(KFSMailContentTypeMultipartParallel)) + if (!contentType.CompareF(KFSMailContentTypeMultipartMixed) || + !contentType.CompareF(KFSMailContentTypeMultipartAlternative) || + !contentType.CompareF(KFSMailContentTypeMultipartDigest) || + !contentType.CompareF(KFSMailContentTypeMultipartRelated) || + !contentType.CompareF(KFSMailContentTypeMultipartParallel)) { // get multipart message subparts messageParts[i]->AppendAttachmentsL( aParts ); @@ -1165,33 +1268,37 @@ } CleanupStack::PopAndDestroy( &messageParts ); } -} + } // ----------------------------------------------------------------------------- // CFSMailMessagePart::FetchedContentSize // ----------------------------------------------------------------------------- EXPORT_C TUint CFSMailMessagePart::FetchedContentSize() const -{ + { FUNC_LOG; +// return (TUint)iNmPrivateMessagePart->mFetchedSize; +// } // ----------------------------------------------------------------------------- // CFSMailMessagePart::SetFetchedContentSize // ----------------------------------------------------------------------------- -EXPORT_C void CFSMailMessagePart::SetFetchedContentSize( TUint aContentSize ) -{ +EXPORT_C void CFSMailMessagePart::SetFetchedContentSize(TUint aContentSize) + { FUNC_LOG; +// iNmPrivateMessagePart->mFetchedSize = quint32(aContentSize); +// } // ----------------------------------------------------------------------------- // CFSMailMessagePart::FetchLoadState // ----------------------------------------------------------------------------- EXPORT_C TFSPartFetchState CFSMailMessagePart::FetchLoadState() const -{ + { FUNC_LOG; - +// if(iMessagePartsStatus != EFSDefault) { return iMessagePartsStatus; @@ -1212,108 +1319,111 @@ { return EFSFull; } +// } // ----------------------------------------------------------------------------- // CFSMailMessagePart::FetchMessagePartL // ----------------------------------------------------------------------------- -EXPORT_C TInt CFSMailMessagePart::FetchMessagePartL( const TFSMailMsgId /*aMessagePartId*/, - MFSMailRequestObserver& aOperationObserver, - const TUint aPreferredByteCount ) -{ +EXPORT_C TInt CFSMailMessagePart::FetchMessagePartL( const TFSMailMsgId /*aMessagePartId*/, + MFSMailRequestObserver& aOperationObserver, + const TUint aPreferredByteCount) + { FUNC_LOG; - TInt requestId(0); - if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId())) - { - RArray messageList; - messageList.Append(GetPartId()); - - // init async request - TFSPendingRequest request = iRequestHandler->InitAsyncRequestL( GetPartId().PluginId(), - aOperationObserver); + TInt requestId(0); + if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId())) + { + + RArray messageList; + messageList.Append(GetPartId()); + + // init async request + TFSPendingRequest request = iRequestHandler->InitAsyncRequestL( GetPartId().PluginId(), + aOperationObserver); - requestId = request.iRequestId; - MFSMailRequestObserver* observer = request.iObserver; + requestId = request.iRequestId; + MFSMailRequestObserver* observer = request.iObserver; - // fetch message parts - TRAPD(err,plugin->FetchMessagePartsL( GetMailBoxId(), - GetFolderId(), - GetMessageId(), - messageList, - *observer, - requestId, - aPreferredByteCount )); - messageList.Reset(); - if(err != KErrNone) - { - iRequestHandler->CompleteRequest(requestId); - User::Leave(err); - } - } - return requestId; -} + // fetch message parts + TRAPD(err,plugin->FetchMessagePartsL( GetMailBoxId(), + GetFolderId(), + GetMessageId(), + messageList, + *observer, + requestId, + aPreferredByteCount )); + messageList.Reset(); + if(err != KErrNone) + { + iRequestHandler->CompleteRequest(requestId); + User::Leave(err); + } + } + return requestId; + } // ----------------------------------------------------------------------------- // CFSMailMessagePart::FetchMessagesPartsL // ----------------------------------------------------------------------------- EXPORT_C TInt CFSMailMessagePart::FetchMessagesPartsL( - const RArray& aMessagePartIds, - MFSMailRequestObserver& aOperationObserver, - const TUint aPreferredByteCount ) -{ + const RArray& aMessagePartIds, + MFSMailRequestObserver& aOperationObserver, + const TUint aPreferredByteCount) + { FUNC_LOG; - TInt requestId(0); + TInt requestId(0); - if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId())) - { - // get async request id - TFSPendingRequest request = - iRequestHandler->InitAsyncRequestL( GetPartId().PluginId(), - aOperationObserver); - - requestId = request.iRequestId; - MFSMailRequestObserver* observer = request.iObserver; - - // fetch message parts - TRAPD(err,plugin->FetchMessagePartsL( GetMailBoxId(), - GetFolderId(), - GetMessageId(), - aMessagePartIds, - *observer, - requestId, - aPreferredByteCount )); - - if(err != KErrNone) - { - iRequestHandler->CompleteRequest(requestId); - User::Leave(err); - } - } - else - { + if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId())) + { + + // get async request id + TFSPendingRequest request = + iRequestHandler->InitAsyncRequestL( GetPartId().PluginId(), + aOperationObserver); + + requestId = request.iRequestId; + MFSMailRequestObserver* observer = request.iObserver; + + // fetch message parts + TRAPD(err,plugin->FetchMessagePartsL( GetMailBoxId(), + GetFolderId(), + GetMessageId(), + aMessagePartIds, + *observer, + requestId, + aPreferredByteCount )); + + if(err != KErrNone) + { + iRequestHandler->CompleteRequest(requestId); + User::Leave(err); + } + } + else + { User::Leave(KErrArgument); - } + } return requestId; -} + } // ----------------------------------------------------------------------------- // CFSMailMessagePart::SetMessagePartsStatus // ----------------------------------------------------------------------------- -EXPORT_C void CFSMailMessagePart::SetMessagePartsStatus( TFSPartFetchState aMessagePartStatus ) -{ +EXPORT_C void CFSMailMessagePart::SetMessagePartsStatus(TFSPartFetchState aMessagePartStatus) + { FUNC_LOG; - iMessagePartsStatus = aMessagePartStatus; -} + iMessagePartsStatus = aMessagePartStatus; + } // ----------------------------------------------------------------------------- // CFSMailMessagePart::AddNewAttachmentL // ----------------------------------------------------------------------------- -EXPORT_C CFSMailMessagePart* CFSMailMessagePart::AddNewAttachmentL( const TDesC& aFilePath, - const TFSMailMsgId /*aInsertBefore*/, - const TDesC& aContentType ) -{ +EXPORT_C CFSMailMessagePart* CFSMailMessagePart::AddNewAttachmentL( const TDesC& aFilePath, + const TFSMailMsgId /*aInsertBefore*/, + const TDesC& aContentType ) + { FUNC_LOG; CFSMailMessagePart* newPart = NULL; @@ -1339,7 +1449,7 @@ } return newPart; -} + } // ----------------------------------------------------------------------------- // CFSMailMessagePart::ReadOnlyPartSize @@ -1353,7 +1463,7 @@ // ----------------------------------------------------------------------------- // CFSMailMessagePart::SetReadOnlyPartSize // ----------------------------------------------------------------------------- -EXPORT_C void CFSMailMessagePart::SetReadOnlyPartSize( const TUint aReadOnlyPartSize ) +EXPORT_C void CFSMailMessagePart::SetReadOnlyPartSize(const TUint aReadOnlyPartSize) { FUNC_LOG; iReadOnlyPartSize = aReadOnlyPartSize;