emailservices/emailcommon/src/CFSMailMessage.cpp
changeset 43 99bcbff212ad
parent 23 2dc6caa42ec3
child 62 a8c646b56683
equal deleted inserted replaced
42:139d4b7b2938 43:99bcbff212ad
    14 * Description:  common email object
    14 * Description:  common email object
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 #include "emailtrace.h"
    18 #include "emailtrace.h"
       
    19 
    19 #include <apgcli.h>
    20 #include <apgcli.h>
    20 #include <apmrec.h>
    21 #include <apmrec.h>
    21 #include <mmf/common/mmfcontrollerpluginresolver.h> // CleanupResetAndDestroy
    22 #include <mmf/common/mmfcontrollerpluginresolver.h> // CleanupResetAndDestroy
    22 
    23 
    23 //<cmail>
    24 //<cmail>
    37 // -----------------------------------------------------------------------------
    38 // -----------------------------------------------------------------------------
    38 // CFSMailMessage::NewLC
    39 // CFSMailMessage::NewLC
    39 // -----------------------------------------------------------------------------
    40 // -----------------------------------------------------------------------------
    40 EXPORT_C CFSMailMessage * CFSMailMessage::NewLC(TFSMailMsgId aMessageId)
    41 EXPORT_C CFSMailMessage * CFSMailMessage::NewLC(TFSMailMsgId aMessageId)
    41 {
    42 {
    42     FUNC_LOG;
    43     NM_FUNCTION;
       
    44     
    43   	CFSMailMessage* message = new (ELeave) CFSMailMessage();
    45   	CFSMailMessage* message = new (ELeave) CFSMailMessage();
    44   	CleanupStack:: PushL(message);
    46   	CleanupStack:: PushL(message);
    45   	message->ConstructL( aMessageId );
    47   	message->ConstructL( aMessageId );
    46   	return message;
    48   	return message;
    47 } 
    49 } 
    49 // -----------------------------------------------------------------------------
    51 // -----------------------------------------------------------------------------
    50 // CFSMailMessage::NewL
    52 // CFSMailMessage::NewL
    51 // -----------------------------------------------------------------------------
    53 // -----------------------------------------------------------------------------
    52 EXPORT_C CFSMailMessage * CFSMailMessage::NewL(TFSMailMsgId aMessageId)
    54 EXPORT_C CFSMailMessage * CFSMailMessage::NewL(TFSMailMsgId aMessageId)
    53 {
    55 {
    54     FUNC_LOG;
    56     NM_FUNCTION;
       
    57     
    55   	CFSMailMessage* message =  CFSMailMessage::NewLC(aMessageId);
    58   	CFSMailMessage* message =  CFSMailMessage::NewLC(aMessageId);
    56   	CleanupStack:: Pop(message);
    59   	CleanupStack:: Pop(message);
    57   	return message;
    60   	return message;
    58 }
    61 }
    59 
    62 
    61 // -----------------------------------------------------------------------------
    64 // -----------------------------------------------------------------------------
    62 // CFSMailMessage::NewL
    65 // CFSMailMessage::NewL
    63 // -----------------------------------------------------------------------------
    66 // -----------------------------------------------------------------------------
    64 EXPORT_C CFSMailMessage* CFSMailMessage::NewL( const NmMessage &aMessage )
    67 EXPORT_C CFSMailMessage* CFSMailMessage::NewL( const NmMessage &aMessage )
    65 {
    68 {
    66     FUNC_LOG;
    69     NM_FUNCTION;
       
    70     
    67     CFSMailMessage* self = new (ELeave) CFSMailMessage();
    71     CFSMailMessage* self = new (ELeave) CFSMailMessage();
    68     CleanupStack::PushL(self);
    72     CleanupStack::PushL(self);
    69     self->ConstructL(aMessage);
    73     self->ConstructL(aMessage);
    70     CleanupStack::Pop(self);
    74     CleanupStack::Pop(self);
    71     return self;
    75     return self;
    75 // -----------------------------------------------------------------------------
    79 // -----------------------------------------------------------------------------
    76 // CFSMailMessage::ConstructL
    80 // CFSMailMessage::ConstructL
    77 // -----------------------------------------------------------------------------
    81 // -----------------------------------------------------------------------------
    78 void CFSMailMessage::ConstructL( TFSMailMsgId aMessageId )
    82 void CFSMailMessage::ConstructL( TFSMailMsgId aMessageId )
    79 {
    83 {
    80     FUNC_LOG;
    84     NM_FUNCTION;
       
    85     
    81 // <qmail>
    86 // <qmail>
    82     // Base class initialization
    87     // Base class initialization
    83     CFSMailMessagePart::ConstructL( aMessageId, TFSMailMsgId() );
    88     CFSMailMessagePart::ConstructL( aMessageId, TFSMailMsgId() );
    84 // </qmail>
    89 // </qmail>
    85 }
    90 }
    88 // -----------------------------------------------------------------------------
    93 // -----------------------------------------------------------------------------
    89 // CFSMailMessage::ConstructL
    94 // CFSMailMessage::ConstructL
    90 // -----------------------------------------------------------------------------
    95 // -----------------------------------------------------------------------------
    91 void CFSMailMessage::ConstructL( const NmMessage &aMessage )
    96 void CFSMailMessage::ConstructL( const NmMessage &aMessage )
    92 {
    97 {
    93     FUNC_LOG;
    98     NM_FUNCTION;
       
    99     
    94     // Base class initialization
   100     // Base class initialization
    95     
   101     
    96     CFSMailMessagePart::ConstructL( aMessage, aMessage.envelope() );
   102     CFSMailMessagePart::ConstructL( aMessage, aMessage.envelope() );
    97 }
   103 }
    98 // </qmail>
   104 // </qmail>
   100 // -----------------------------------------------------------------------------
   106 // -----------------------------------------------------------------------------
   101 // CFSMailMessage::CFSMailMessage
   107 // CFSMailMessage::CFSMailMessage
   102 // -----------------------------------------------------------------------------
   108 // -----------------------------------------------------------------------------
   103 CFSMailMessage::CFSMailMessage() : CFSMailMessagePart()
   109 CFSMailMessage::CFSMailMessage() : CFSMailMessagePart()
   104 {
   110 {
   105     FUNC_LOG;
   111     NM_FUNCTION;
   106 }
   112 }
   107 
   113 
   108 // -----------------------------------------------------------------------------
   114 // -----------------------------------------------------------------------------
   109 // CFSMailMessage::~CFSMailMessage
   115 // CFSMailMessage::~CFSMailMessage
   110 // -----------------------------------------------------------------------------
   116 // -----------------------------------------------------------------------------
   111 EXPORT_C CFSMailMessage::~CFSMailMessage()
   117 EXPORT_C CFSMailMessage::~CFSMailMessage()
   112 {
   118 {
   113     FUNC_LOG;
   119     NM_FUNCTION;
       
   120     
   114 // <qmail>
   121 // <qmail>
   115     iMessageBufferForAsyncOp.Reset();
   122     iMessageBufferForAsyncOp.Reset();
   116 // </qmail>
   123 // </qmail>
   117 }
   124 }
   118 
   125 
   119 // -----------------------------------------------------------------------------
   126 // -----------------------------------------------------------------------------
   120 // CFSMailMessage::SaveMessageL
   127 // CFSMailMessage::SaveMessageL
   121 // -----------------------------------------------------------------------------
   128 // -----------------------------------------------------------------------------
   122 EXPORT_C void CFSMailMessage::SaveMessageL()
   129 EXPORT_C void CFSMailMessage::SaveMessageL()
   123 	{
   130 	{
   124     FUNC_LOG;
   131     NM_FUNCTION;
       
   132     
   125 	if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetMessageId()))
   133 	if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetMessageId()))
   126 		{
   134 		{
   127 		plugin->StoreMessageL(GetMailBoxId(),*this);
   135 		plugin->StoreMessageL(GetMailBoxId(),*this);
   128 		}
   136 		}
   129 	}
   137 	}
   132 // -----------------------------------------------------------------------------
   140 // -----------------------------------------------------------------------------
   133 // CFSMailMessage::SaveMessageL
   141 // CFSMailMessage::SaveMessageL
   134 // -----------------------------------------------------------------------------
   142 // -----------------------------------------------------------------------------
   135 EXPORT_C TInt CFSMailMessage::SaveMessageL( MFSMailRequestObserver& aOperationObserver )
   143 EXPORT_C TInt CFSMailMessage::SaveMessageL( MFSMailRequestObserver& aOperationObserver )
   136 {
   144 {
   137     FUNC_LOG;
   145     NM_FUNCTION;
   138 
   146 
   139     CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetMessageId());
   147     CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetMessageId());
   140     TFSPendingRequest request = iRequestHandler->InitAsyncRequestL(
   148     TFSPendingRequest request = iRequestHandler->InitAsyncRequestL(
   141             GetMessageId().PluginId(), aOperationObserver);
   149             GetMessageId().PluginId(), aOperationObserver);
   142     MFSMailRequestObserver* observer = request.iObserver;
   150     MFSMailRequestObserver* observer = request.iObserver;
   158 // -----------------------------------------------------------------------------
   166 // -----------------------------------------------------------------------------
   159 // CFSMailMessage::SaveMessagePartsL
   167 // CFSMailMessage::SaveMessagePartsL
   160 // -----------------------------------------------------------------------------
   168 // -----------------------------------------------------------------------------
   161 EXPORT_C TInt CFSMailMessage::SaveMessagePartsL( MFSMailRequestObserver& aOperationObserver )
   169 EXPORT_C TInt CFSMailMessage::SaveMessagePartsL( MFSMailRequestObserver& aOperationObserver )
   162 {
   170 {
   163     FUNC_LOG;
   171     NM_FUNCTION;
   164 
   172 
   165     RPointerArray<CFSMailMessagePart> messageParts;
   173     RPointerArray<CFSMailMessagePart> messageParts;
   166     CleanupResetAndDestroyPushL(messageParts);
   174     CleanupResetAndDestroyPushL(messageParts);
   167 
   175 
   168     CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetMessageId());
   176     CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetMessageId());
   206 // CFSMailMessage::AddNewAttachmentL
   214 // CFSMailMessage::AddNewAttachmentL
   207 // -----------------------------------------------------------------------------
   215 // -----------------------------------------------------------------------------
   208 EXPORT_C CFSMailMessagePart* CFSMailMessage::AddNewAttachmentL( RFile& aFile,
   216 EXPORT_C CFSMailMessagePart* CFSMailMessage::AddNewAttachmentL( RFile& aFile,
   209                                                                 const TDesC8& aMimeType )
   217                                                                 const TDesC8& aMimeType )
   210     {
   218     {
   211     FUNC_LOG;
   219     NM_FUNCTION;
   212     
   220     
   213     CFSMailMessagePart* newPart = NULL;
   221     CFSMailMessagePart* newPart = NULL;
   214     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetMessageId()))
   222     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetMessageId()))
   215         {
   223         {
   216         TBuf<KMaxDataTypeLength> contentType;
   224         TBuf<KMaxDataTypeLength> contentType;
   257 // CFSMailMessage::AddNewAttachmentL
   265 // CFSMailMessage::AddNewAttachmentL
   258 // -----------------------------------------------------------------------------
   266 // -----------------------------------------------------------------------------
   259 EXPORT_C CFSMailMessagePart* CFSMailMessage::AddNewAttachmentL(	const TDesC& aFilePath,
   267 EXPORT_C CFSMailMessagePart* CFSMailMessage::AddNewAttachmentL(	const TDesC& aFilePath,
   260 																const TFSMailMsgId /*aInsertBefore*/ )
   268 																const TFSMailMsgId /*aInsertBefore*/ )
   261     {
   269     {
   262     FUNC_LOG;
   270     NM_FUNCTION;
   263 
   271 
   264 	CFSMailMessagePart* newPart = NULL;
   272 	CFSMailMessagePart* newPart = NULL;
   265 	
   273 	
   266 	if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetMessageId()))
   274 	if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetMessageId()))
   267 		{
   275 		{
   302 // CFSMailMessage::AddNewAttachmentL
   310 // CFSMailMessage::AddNewAttachmentL
   303 // -----------------------------------------------------------------------------
   311 // -----------------------------------------------------------------------------
   304 EXPORT_C TInt CFSMailMessage::AddNewAttachmentL( const TDesC& aFilePath,
   312 EXPORT_C TInt CFSMailMessage::AddNewAttachmentL( const TDesC& aFilePath,
   305                                                  MFSMailRequestObserver& aOperationObserver)
   313                                                  MFSMailRequestObserver& aOperationObserver)
   306 {
   314 {
   307     FUNC_LOG;
   315     NM_FUNCTION;
       
   316     
   308     TFSPendingRequest request;
   317     TFSPendingRequest request;
   309   
   318   
   310     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetMessageId()))
   319     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetMessageId()))
   311         {
   320         {
   312         // init asynchronous request
   321         // init asynchronous request
   356 // CFSMailMessage::AttachmentListL
   365 // CFSMailMessage::AttachmentListL
   357 // -----------------------------------------------------------------------------
   366 // -----------------------------------------------------------------------------
   358 EXPORT_C void CFSMailMessage::AttachmentListL(
   367 EXPORT_C void CFSMailMessage::AttachmentListL(
   359     RPointerArray<CFSMailMessagePart>& aParts )
   368     RPointerArray<CFSMailMessagePart>& aParts )
   360     {
   369     {
   361     FUNC_LOG;
   370     NM_FUNCTION;
       
   371     
   362     // First list all message parts
   372     // First list all message parts
   363     AppendAttachmentsL( aParts ); 
   373     AppendAttachmentsL( aParts ); 
   364 
   374 
   365     // special case, if single part content type is not given,
   375     // special case, if single part content type is not given,
   366     // default type is text/plain
   376     // default type is text/plain
   418 // CFSMailMessage::PlainTextBodyPartL
   428 // CFSMailMessage::PlainTextBodyPartL
   419 // -----------------------------------------------------------------------------
   429 // -----------------------------------------------------------------------------
   420 EXPORT_C CFSMailMessagePart* CFSMailMessage::PlainTextBodyPartL(
   430 EXPORT_C CFSMailMessagePart* CFSMailMessage::PlainTextBodyPartL(
   421         TFSMailMessagePartDataSource aDataSource)
   431         TFSMailMessagePartDataSource aDataSource)
   422 {
   432 {
   423     FUNC_LOG;
   433     NM_FUNCTION;
       
   434     
   424     CFSMailMessagePart* part = FindBodyPartL(KFSMailContentTypeTextPlain, aDataSource);
   435     CFSMailMessagePart* part = FindBodyPartL(KFSMailContentTypeTextPlain, aDataSource);
   425     
   436     
   426     // special case, single part content type is not given
   437     // special case, single part content type is not given
   427     if(part == NULL && iMessageParts.Count() == 1 && iMessageParts[0]->GetContentType().Length() == 0)
   438     if(part == NULL && iMessageParts.Count() == 1 && iMessageParts[0]->GetContentType().Length() == 0)
   428     	{
   439     	{
   440 // CFSMailMessage::HtmlBodyPartL
   451 // CFSMailMessage::HtmlBodyPartL
   441 // -----------------------------------------------------------------------------
   452 // -----------------------------------------------------------------------------
   442 EXPORT_C CFSMailMessagePart* CFSMailMessage::HtmlBodyPartL(
   453 EXPORT_C CFSMailMessagePart* CFSMailMessage::HtmlBodyPartL(
   443         TFSMailMessagePartDataSource aDataSource)
   454         TFSMailMessagePartDataSource aDataSource)
   444 {
   455 {
   445     FUNC_LOG;
   456     NM_FUNCTION;
       
   457     
   446     CFSMailMessagePart* part = FindBodyPartL(KFSMailContentTypeTextHtml, aDataSource);
   458     CFSMailMessagePart* part = FindBodyPartL(KFSMailContentTypeTextHtml, aDataSource);
   447     iMessageParts.ResetAndDestroy();
   459     iMessageParts.ResetAndDestroy();
   448 	iReadMessageParts = ETrue;
   460 	iReadMessageParts = ETrue;
   449     return part;
   461     return part;
   450 }
   462 }
   454 // -----------------------------------------------------------------------------
   466 // -----------------------------------------------------------------------------
   455 // CFSMailMessage::IsMessageL
   467 // CFSMailMessage::IsMessageL
   456 // -----------------------------------------------------------------------------
   468 // -----------------------------------------------------------------------------
   457 EXPORT_C TBool CFSMailMessage::IsMessageL() const
   469 EXPORT_C TBool CFSMailMessage::IsMessageL() const
   458 	{
   470 	{
   459     FUNC_LOG;
   471     NM_FUNCTION;
       
   472     
   460     return CFSMailMessagePart::IsMessageL();
   473     return CFSMailMessagePart::IsMessageL();
   461 	}
   474 	}
   462 // </qmail>
   475 // </qmail>
   463 
   476 
   464 // -----------------------------------------------------------------------------
   477 // -----------------------------------------------------------------------------
   465 // CFSMailMessage::ContentTypeParameters()
   478 // CFSMailMessage::ContentTypeParameters()
   466 // -----------------------------------------------------------------------------
   479 // -----------------------------------------------------------------------------
   467 CDesCArray& CFSMailMessage::ContentTypeParameters()
   480 CDesCArray& CFSMailMessage::ContentTypeParameters()
   468 {
   481 {
   469     FUNC_LOG;
   482     NM_FUNCTION;
       
   483     
   470    CDesCArray* faked = NULL;
   484    CDesCArray* faked = NULL;
   471    return *faked;
   485    return *faked;
   472 }
   486 }
   473 
   487 
   474 // -----------------------------------------------------------------------------
   488 // -----------------------------------------------------------------------------
   475 // CFSMailMessage::DoAttachmentListL
   489 // CFSMailMessage::DoAttachmentListL
   476 // -----------------------------------------------------------------------------
   490 // -----------------------------------------------------------------------------
   477 void CFSMailMessage::DoAttachmentListL( RPointerArray<CFSMailMessagePart>& aParts )
   491 void CFSMailMessage::DoAttachmentListL( RPointerArray<CFSMailMessagePart>& aParts )
   478     {
   492     {
   479     FUNC_LOG;
   493     NM_FUNCTION;
       
   494     
   480     AttachmentListL(aParts);
   495     AttachmentListL(aParts);
   481     }
   496     }
   482 
   497 
   483 //<qmail>
   498 //<qmail>
   484 // -----------------------------------------------------------------------------
   499 // -----------------------------------------------------------------------------
   485 // CFSMailMessage::GetNmMessage
   500 // CFSMailMessage::GetNmMessage
   486 // It does not fill the list of child parts
   501 // It does not fill the list of child parts
   487 // -----------------------------------------------------------------------------
   502 // -----------------------------------------------------------------------------
   488 EXPORT_C NmMessage* CFSMailMessage::GetNmMessage()
   503 EXPORT_C NmMessage* CFSMailMessage::GetNmMessage()
   489 {
   504 {
       
   505     NM_FUNCTION;
       
   506     
   490 	NmMessage* message = new NmMessage(iNmPrivateMessageEnvelope, iNmPrivateMessagePart);
   507 	NmMessage* message = new NmMessage(iNmPrivateMessageEnvelope, iNmPrivateMessagePart);
   491 	return message;
   508 	return message;
   492 }
   509 }
   493 //</qmail>
   510 //</qmail>