--- a/emailservices/emailstore/base_plugin/src/baseplugindelayedops.cpp Fri Jun 11 16:42:02 2010 +0300
+++ b/emailservices/emailstore/base_plugin/src/baseplugindelayedops.cpp Thu Jun 24 14:32:18 2010 +0300
@@ -613,10 +613,12 @@
MFSMailRequestObserver& aOperationObserver,
const TInt aRequestId)
: iMailBox( aMailBox ),
- iOperationObserver( aOperationObserver ),
- iRequestId( aRequestId ),
iType(EHeaders)
{
+
+ CDelayedOp::iOperationObserver = &aOperationObserver ;
+ CDelayedOp::iRequestId = aRequestId ;
+
for(TInt i=0; i < messages.Count(); i++)
{
iMessages.Append(messages[i]);
@@ -630,10 +632,12 @@
RPointerArray<CFSMailMessagePart>& aMessageParts,
MFSMailRequestObserver& aOperationObserver,
const TInt aRequestId)
- :iOperationObserver( aOperationObserver ),
- iRequestId( aRequestId ),
- iType(EParts)
+ :iType(EParts)
{
+
+ CDelayedOp::iOperationObserver = &aOperationObserver ;
+ CDelayedOp::iRequestId = aRequestId ;
+
for(TInt i=0; i < aMessageParts.Count(); i++)
{
iMessageParts.Append(aMessageParts[i]);
@@ -704,8 +708,12 @@
progress.iError = KErrNone;
progress.iProgressStatus = TFSProgress::EFSStatus_RequestComplete;
}
-
- iOperationObserver.RequestResponseL( progress, iRequestId );
+
+ if(iOperationObserver)
+ {
+ iOperationObserver->RequestResponseL( progress, iRequestId );
+ }
+
__LOG_EXIT;
}
@@ -714,35 +722,39 @@
/**
*
*/
-void CDelayedMessageStorerOp::StorePartL(
- CFSMailMessagePart* aPart)
+void CDelayedMessageStorerOp::StorePartL(CFSMailMessagePart* aPart)
{
User::LeaveIfNull(aPart);
-
+
// Text buffer for html text content
HBufC* data16 = aPart->GetLocalTextContentLC();
- TPtrC8 ptr8(reinterpret_cast<const TUint8*>( data16->Ptr() ),
- data16->Size() );
-
+ // Convert from 16 to 8 bit data -
+ HBufC8* dataBuffer = HBufC8::NewLC((data16->Length() * 2) + 1);
+ TPtr8 ptr8(dataBuffer->Des());
+ CnvUtfConverter::ConvertFromUnicodeToUtf8(ptr8, *data16);
+
//get msgstore part
- CMailboxInfo& mailBox = GetPlugin().GetMailboxInfoL( aPart->GetMailBoxId().Id() );
-
+ CMailboxInfo& mailBox = GetPlugin().GetMailboxInfoL(
+ aPart->GetMailBoxId().Id());
+
CMsgStoreMessage* msg = mailBox().FetchMessageL(
- aPart->GetMessageId().Id(), KMsgStoreInvalidId );
- CleanupStack::PushL( msg );
-
- CMsgStoreMessagePart* part= msg->ChildPartL( aPart->GetPartId().Id(), ETrue );
-
- CleanupStack::PopAndDestroy( msg );
- CleanupStack::PushL( part );
+ aPart->GetMessageId().Id(), KMsgStoreInvalidId);
+ CleanupStack::PushL(msg);
+
+ CMsgStoreMessagePart* part = msg->ChildPartL(aPart->GetPartId().Id(),
+ ETrue);
+
+ CleanupStack::PopAndDestroy(msg);
+ CleanupStack::PushL(part);
//replace content
part->ReplaceContentL(ptr8);
-
- CleanupStack::PopAndDestroy( part );
- CleanupStack::PopAndDestroy( data16 );
-
+
+ CleanupStack::PopAndDestroy(part);
+ CleanupStack::PopAndDestroy(dataBuffer);
+ CleanupStack::PopAndDestroy(data16);
+
}
@@ -794,10 +806,11 @@
MFSMailRequestObserver& aOperationObserver,
const TInt aRequestId)
: iBasePlugin(aPlugin),
- iMailBox( aMailBox ),
- iOperationObserver( aOperationObserver ),
- iRequestId( aRequestId )
+ iMailBox( aMailBox )
{
+
+ CDelayedOp::iOperationObserver = &aOperationObserver ;
+ CDelayedOp::iRequestId = aRequestId ;
}
@@ -821,7 +834,10 @@
progress.iProgressStatus = TFSProgress::EFSStatus_RequestComplete;
}
- iOperationObserver.RequestResponseL( progress, iRequestId );
+ if(iOperationObserver)
+ {
+ iOperationObserver->RequestResponseL( progress, iRequestId );
+ }
__LOG_EXIT;
}
@@ -885,10 +901,10 @@
iParentFolderId( aParentFolderId ),
iMessageId( aMessageId ),
iParentPartId( aParentPartId ),
- iOperationObserver( aOperationObserver ),
- iRequestId( aRequestId ),
iActionType( AddNewChild)
{
+ CDelayedOp::iOperationObserver = &aOperationObserver ;
+ CDelayedOp::iRequestId = aRequestId ;
}
/**
@@ -907,10 +923,10 @@
iMessageId( aMessageId ),
iParentPartId( aParentPartId ),
iPartId( aPartId ),
- iOperationObserver( aOperationObserver ),
- iRequestId( aRequestId ),
iActionType( RemoveChild)
{
+ CDelayedOp::iOperationObserver = &aOperationObserver ;
+ CDelayedOp::iRequestId = aRequestId ;
}
/**
@@ -978,7 +994,10 @@
progress.iProgressStatus = TFSProgress::EFSStatus_RequestComplete;
}
- iOperationObserver.RequestResponseL( progress, iRequestId );
+ if(iOperationObserver)
+ {
+ iOperationObserver->RequestResponseL( progress, iRequestId );
+ }
__LOG_EXIT;
}