emailservices/emailclientapi/src/emailcontent.cpp
branchRCL_3
changeset 25 3533d4323edc
parent 24 d189ee25cf9d
equal deleted inserted replaced
24:d189ee25cf9d 25:3533d4323edc
     1 /*
     1 /*
     2 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
     3 * All rights reserved.
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
    16 */
    16 */
    17 
    17 
    18 #include <apmstd.h>
    18 #include <apmstd.h>
    19 
    19 
    20 #include "emailcontent.h"
    20 #include "emailcontent.h"
    21 #include "CFSMailClient.h"
    21 #include "cfsmailclient.h"
    22 #include "emailclientapi.hrh"
    22 #include "emailclientapi.hrh"
    23 #include "emailapiutils.h"
    23 #include "emailapiutils.h"
    24 
    24 
    25 // ---------------------------------------------------------------------------
    25 
    26 // 
    26 
    27 // ---------------------------------------------------------------------------
    27 // ---------------------------------------------------------------------------
       
    28 // 
       
    29 // ---------------------------------------------------------------------------
       
    30 // 
    28 CEmailMessageContent* CEmailMessageContent::NewL( 
    31 CEmailMessageContent* CEmailMessageContent::NewL( 
    29         CPluginData& aPluginData,
    32         CPluginData& aPluginData,
    30         const TMessageContentId& aMsgContentId,
    33         const TMessageContentId& aMsgContentId,
    31         CFSMailMessagePart* aPart )    
    34         CFSMailMessagePart* aPart)    
    32     {
    35     {
    33 
    36     
    34     CEmailMessageContent* self = new ( ELeave ) 
    37     CEmailMessageContent* self = new ( ELeave ) CEmailMessageContent( aPluginData, aMsgContentId, aPart );
    35         CEmailMessageContent( aPluginData, aMsgContentId, aPart );
       
    36     CleanupStack::PushL( self );
    38     CleanupStack::PushL( self );
    37     self->ConstructL();
    39     self->ConstructL();
    38     CleanupStack::Pop( self );
    40     CleanupStack::Pop();
    39     return self;
    41     return self;
    40     }
    42     }
    41 
    43 
    42 // ---------------------------------------------------------------------------
    44 // ---------------------------------------------------------------------------
    43 // 
    45 // 
    44 // ---------------------------------------------------------------------------
    46 // ---------------------------------------------------------------------------
       
    47 // 
    45 CFSMailMessagePart& CEmailMessageContent::Part()
    48 CFSMailMessagePart& CEmailMessageContent::Part()
    46     {
    49     {
    47     return *iPart;
    50     return *iPart;
    48     }
    51     }
    49 
    52 
    50 // ---------------------------------------------------------------------------
    53 // ---------------------------------------------------------------------------
    51 // 
    54 // 
    52 // ---------------------------------------------------------------------------
    55 // ---------------------------------------------------------------------------
    53 void CEmailMessageContent::SetPart( CFSMailMessagePart* aPart )
    56 // 
       
    57 void CEmailMessageContent::SetPart(CFSMailMessagePart* aPart)
    54     {
    58     {
    55     iPart = aPart;
    59     iPart = aPart;
    56     }
    60     }
    57 
    61 
    58 // ---------------------------------------------------------------------------
    62 // ---------------------------------------------------------------------------
    59 // 
    63 // 
    60 // ---------------------------------------------------------------------------
    64 // ---------------------------------------------------------------------------
       
    65 // 
    61 CPluginData& CEmailMessageContent::PluginData()
    66 CPluginData& CEmailMessageContent::PluginData()
    62     {
    67     {
    63     return iPluginData;
    68     return iPluginData;
    64     }
    69     }
    65 
    70 
    66 // ---------------------------------------------------------------------------
    71 // ---------------------------------------------------------------------------
    67 // 
    72 // 
    68 // ---------------------------------------------------------------------------
    73 // ---------------------------------------------------------------------------
    69 void CEmailMessageContent::ConstructL()
    74 // 
       
    75 void CEmailMessageContent::ConstructL( )    
    70     {
    76     {
    71     iPlugin = iPluginData.ClaimInstanceL();
    77     iPlugin = iPluginData.ClaimInstanceL();
    72     }
    78     }
    73 
    79 
    74 // ---------------------------------------------------------------------------
    80 // ---------------------------------------------------------------------------
    75 // 
    81 // 
    76 // ---------------------------------------------------------------------------
    82 // ---------------------------------------------------------------------------
       
    83 // 
    77 CEmailMessageContent::~CEmailMessageContent()
    84 CEmailMessageContent::~CEmailMessageContent()
    78     {
    85     {
    79     iPluginData.ReleaseInstance();
    86     iPluginData.ReleaseInstance();
    80     delete iPart;
    87     delete iPart;
    81     delete iBuf;
    88     delete iBuf;
    82     }
    89     }
    83 
    90 
    84 // ---------------------------------------------------------------------------
    91 // ---------------------------------------------------------------------------
    85 // 
    92 // 
    86 // ---------------------------------------------------------------------------
    93 // ---------------------------------------------------------------------------
       
    94 // 
    87 CEmailMessageContent::CEmailMessageContent(
    95 CEmailMessageContent::CEmailMessageContent(
    88         CPluginData& aPluginData,
    96         CPluginData& aPluginData,
    89         const TMessageContentId& aMsgContentId,
    97         const TMessageContentId& aMsgContentId,
    90         CFSMailMessagePart* aPart):
    98         CFSMailMessagePart* aPart):
    91         iPluginData( aPluginData ), 
    99         iPluginData( aPluginData ), iPart(aPart), iMsgContentId( aMsgContentId ), iBuf(NULL), iUsed(0)
    92         iPart( aPart ), 
   100     {
    93         iMsgContentId( aMsgContentId ), 
   101     }
    94         iBuf( NULL ), 
   102 
    95         iUsed( 0 )
   103 // ---------------------------------------------------------------------------
    96     {
   104 // 
    97     }
   105 // ---------------------------------------------------------------------------
    98 
   106 // 
    99 // ---------------------------------------------------------------------------
       
   100 // 
       
   101 // ---------------------------------------------------------------------------
       
   102 TEmailTypeId CEmailMessageContent::InterfaceId() const
   107 TEmailTypeId CEmailMessageContent::InterfaceId() const
   103     {
   108     {
   104     return KEmailIFUidMessageContent;
   109     return KEmailIFUidMessageContent;
   105     }
   110     }
   106 
   111     
   107 // ---------------------------------------------------------------------------
   112 // ---------------------------------------------------------------------------
   108 // 
   113 // 
   109 // ---------------------------------------------------------------------------
   114 // ---------------------------------------------------------------------------
       
   115 // 
   110 void CEmailMessageContent::Release()
   116 void CEmailMessageContent::Release()
   111     {
   117     {
   112     delete this;
   118     delete this;
   113     }
   119     }
   114 
   120 
   115 // ---------------------------------------------------------------------------
   121 // ---------------------------------------------------------------------------
   116 // 
   122 // 
   117 // ---------------------------------------------------------------------------
   123 // ---------------------------------------------------------------------------
       
   124 // 
   118 TMessageContentId CEmailMessageContent::Id() const
   125 TMessageContentId CEmailMessageContent::Id() const
   119     {
   126     {
   120     return iMsgContentId;
   127     return iMsgContentId;
   121     }
   128     }
   122 
   129 
   123 // ---------------------------------------------------------------------------
   130 // ---------------------------------------------------------------------------
   124 // 
   131 // 
   125 // ---------------------------------------------------------------------------
   132 // ---------------------------------------------------------------------------
       
   133 // 
   126 TPtrC CEmailMessageContent::ContentType() const
   134 TPtrC CEmailMessageContent::ContentType() const
   127     {
   135     {
   128     if (iPart)
   136     return iPart->GetContentType();
   129         {
   137     }
   130         return iPart->GetContentType();
   138 
   131         } 
   139 // ---------------------------------------------------------------------------
   132     else
   140 // 
   133         {
   141 // ---------------------------------------------------------------------------
   134         return TPtrC(0,0);
   142 // 
   135         }
       
   136     }
       
   137 
       
   138 // ---------------------------------------------------------------------------
       
   139 // 
       
   140 // ---------------------------------------------------------------------------
       
   141 void CEmailMessageContent::SetContentType( const TDesC& aContentType )
   143 void CEmailMessageContent::SetContentType( const TDesC& aContentType )
   142     {
   144     {
   143     if (iPart)
   145     iPart->SetContentType( aContentType );
   144         iPart->SetContentType( aContentType );
   146     }
   145     }
   147 
   146 
   148 // ---------------------------------------------------------------------------
   147 // ---------------------------------------------------------------------------
   149 // 
   148 // 
   150 // ---------------------------------------------------------------------------
   149 // ---------------------------------------------------------------------------
   151 // 
   150 TPtrC CEmailMessageContent::ContentId() const
   152 TPtrC CEmailMessageContent::ContentId() const
   151     {
   153     {
   152     if (iPart)
   154     return iPart->ContentID();
   153         {
   155     }
   154         return iPart->ContentID();
   156 
   155         }
   157 // ---------------------------------------------------------------------------
   156     else
   158 // 
   157         {
   159 // ---------------------------------------------------------------------------
   158         return TPtrC(0,0);
   160 // 
   159         }
       
   160     }
       
   161 
       
   162 // ---------------------------------------------------------------------------
       
   163 // 
       
   164 // ---------------------------------------------------------------------------
       
   165 void CEmailMessageContent::SetContentId( const TDesC& aContentId )
   161 void CEmailMessageContent::SetContentId( const TDesC& aContentId )
   166     {
   162     {
   167     if (iPart)
   163     TRAP_IGNORE( iPart->SetContentIDL( aContentId ) );
   168         TRAP_IGNORE( iPart->SetContentIDL( aContentId ) );
   164     }
   169     }
   165 
   170 
   166 // ---------------------------------------------------------------------------
   171 // ---------------------------------------------------------------------------
   167 // 
   172 // 
   168 // ---------------------------------------------------------------------------
   173 // ---------------------------------------------------------------------------
   169 // 
   174 TPtrC CEmailMessageContent::ContentDescription() const
   170 TPtrC CEmailMessageContent::ContentDescription() const
   175     {
   171     {
   176     if (iPart)
   172     return iPart->ContentDescription();
   177         {
   173     }
   178         return iPart->ContentDescription();
   174 
   179         }
   175 // ---------------------------------------------------------------------------
   180     else
   176 // 
   181         {
   177 // ---------------------------------------------------------------------------
   182         return TPtrC(0,0);
   178 // 
   183         }
       
   184     }
       
   185 
       
   186 // ---------------------------------------------------------------------------
       
   187 // 
       
   188 // ---------------------------------------------------------------------------
       
   189 void CEmailMessageContent::SetContentDescription( 
   179 void CEmailMessageContent::SetContentDescription( 
   190     const TDesC& aContentDescription )
   180     const TDesC& aContentDescription )
   191     {
   181     {
   192     if (iPart)
   182     iPart->SetContentDescription( aContentDescription );
   193         iPart->SetContentDescription( aContentDescription );
   183     }
   194     }
   184 
   195 
   185 // ---------------------------------------------------------------------------
   196 // ---------------------------------------------------------------------------
   186 // 
   197 // 
   187 // ---------------------------------------------------------------------------
   198 // ---------------------------------------------------------------------------
   188 // 
   199 TPtrC CEmailMessageContent::ContentDisposition() const
   189 TPtrC CEmailMessageContent::ContentDisposition() const
   200     {
   190     {
   201     if (iPart)
   191     return iPart->ContentDisposition();
   202         {
   192     }
   203         return iPart->ContentDisposition();
   193 
   204         }
   194 // ---------------------------------------------------------------------------
   205     else
   195 // 
   206         {
   196 // ---------------------------------------------------------------------------
   207         return TPtrC(0,0);
   197 // 
   208         }
       
   209     }
       
   210 
       
   211 // ---------------------------------------------------------------------------
       
   212 // 
       
   213 // ---------------------------------------------------------------------------
       
   214 void CEmailMessageContent::SetContentDisposition( 
   198 void CEmailMessageContent::SetContentDisposition( 
   215     const TDesC& aContentDisposition )
   199     const TDesC& aContentDisposition )
   216     {
   200     {
   217     if (iPart)
   201     iPart->SetContentDisposition( aContentDisposition );
   218         iPart->SetContentDisposition( aContentDisposition );
   202     }
   219     }
   203 
   220 
   204 // ---------------------------------------------------------------------------
   221 // ---------------------------------------------------------------------------
   205 // 
   222 // 
   206 // ---------------------------------------------------------------------------
   223 // ---------------------------------------------------------------------------
   207 // 
   224 TPtrC CEmailMessageContent::ContentClass() const
   208 TPtrC CEmailMessageContent::ContentClass() const
   225     {
   209     {
   226     if (iPart)
   210     return iPart->GetContentClass();
   227         {
   211     }
   228         return iPart->GetContentClass();
   212 
   229         }
   213 // ---------------------------------------------------------------------------
   230     else
   214 // 
   231         {
   215 // ---------------------------------------------------------------------------
   232         return TPtrC(0,0);
   216 // 
   233         }
       
   234     }
       
   235 
       
   236 // ---------------------------------------------------------------------------
       
   237 // 
       
   238 // ---------------------------------------------------------------------------
       
   239 void CEmailMessageContent::SetContentClass( const TDesC& aContentClass )
   217 void CEmailMessageContent::SetContentClass( const TDesC& aContentClass )
   240     {
   218     {
   241     if (iPart)
   219     iPart->SetContentClass( aContentClass );
   242         iPart->SetContentClass( aContentClass );
   220     }
   243     }
   221 
   244 
   222 // ---------------------------------------------------------------------------
   245 // ---------------------------------------------------------------------------
   223 // 
   246 // 
   224 // ---------------------------------------------------------------------------
   247 // ---------------------------------------------------------------------------
   225 // 
   248 TInt CEmailMessageContent::AvailableSize() const
   226 TInt CEmailMessageContent::AvailableSize() const
   249     {
   227     {
   250     if (iPart)
   228     return iPart->FetchedContentSize();
   251         {
   229     }
   252         return iPart->FetchedContentSize();
   230 
   253         }
   231 // ---------------------------------------------------------------------------
   254     else
   232 // 
   255         {
   233 // ---------------------------------------------------------------------------
   256         return 0;
   234 // 
   257         }
       
   258     }
       
   259 
       
   260 // ---------------------------------------------------------------------------
       
   261 // 
       
   262 // ---------------------------------------------------------------------------
       
   263 TInt CEmailMessageContent::TotalSize() const
   235 TInt CEmailMessageContent::TotalSize() const
   264     {
   236     {
   265     if (iPart)
   237     return iPart->ContentSize();
   266         {
   238     }
   267         return iPart->ContentSize();
   239 
   268         }
   240 // ---------------------------------------------------------------------------
   269     else
   241 // 
   270         {
   242 // ---------------------------------------------------------------------------
   271         return 0;
   243 // 
   272         }
       
   273     }
       
   274 
       
   275 // ---------------------------------------------------------------------------
       
   276 // 
       
   277 // ---------------------------------------------------------------------------
       
   278 TPtrC CEmailMessageContent::ContentL() const
   244 TPtrC CEmailMessageContent::ContentL() const
   279     {
   245     {
   280     TInt size = AvailableSize();
   246     TInt size = AvailableSize();
   281     TPtr16 ptr( 0, size );
   247     TPtr16 ptr( 0, size );
   282     if ( size != 0 )
   248     if ( size != 0 )
   283         {
   249         {
   284         if ( !iBuf )
   250         if ( iBuf == NULL )
   285             {
   251             {
   286             iBuf = HBufC::NewL( size );
   252             iBuf = HBufC::NewL( size );
   287             }
   253             }
   288         
   254         
   289         if ( size > ptr.MaxLength() )
   255         if ( size > ptr.MaxLength() )
   290             {
   256             {
   291             iBuf = iBuf->ReAlloc( size );
   257             iBuf = iBuf->ReAlloc( size );
   292             }
   258             }
   293         ptr.Set( iBuf->Des() );
   259         ptr.Set( iBuf->Des() );
   294         iPart->GetContentToBufferL( ptr, iUsed );
   260         if(iUsed < size)
   295         iUsed += size;
   261             {
   296         }
   262             iPart->GetContentToBufferL( ptr, iUsed );
       
   263             iUsed += size;
       
   264             }
       
   265         }    
   297     return ptr;
   266     return ptr;
   298     }
   267     }
   299 
   268 
   300 // ---------------------------------------------------------------------------
   269 // ---------------------------------------------------------------------------
   301 // 
   270 // 
   302 // ---------------------------------------------------------------------------
   271 // ---------------------------------------------------------------------------
       
   272 // 
   303 void CEmailMessageContent::SetContentL( const TDesC& aContent )
   273 void CEmailMessageContent::SetContentL( const TDesC& aContent )
   304     {
   274     {
   305     User::LeaveIfNull( iPart );
       
   306     iPart->SetContentSize( aContent.Length() );
   275     iPart->SetContentSize( aContent.Length() );
   307     iPart->SetFetchedContentSize( aContent.Length() );
   276     iPart->SetFetchedContentSize( aContent.Length() );
   308     iPlugin->SetContentL( aContent, 
   277     iPlugin->SetContentL(aContent, 
   309             FsMsgId( iPluginData, iMsgContentId.iMessageId.iFolderId.iMailboxId ),
   278             FsMsgId(iPluginData, iMsgContentId.iMessageId.iFolderId.iMailboxId),
   310             FsMsgId( iPluginData, iMsgContentId.iMessageId.iFolderId ),
   279             FsMsgId(iPluginData, iMsgContentId.iMessageId.iFolderId),
   311             FsMsgId( iPluginData, iMsgContentId.iMessageId ),
   280             FsMsgId(iPluginData, iMsgContentId.iMessageId),
   312             FsMsgId( iPluginData, iMsgContentId ) );
   281             FsMsgId(iPluginData, iMsgContentId));    
   313     }
   282     }
   314 
   283 
   315 // ---------------------------------------------------------------------------
   284 // ---------------------------------------------------------------------------
   316 // 
   285 // 
   317 // ---------------------------------------------------------------------------
   286 // ---------------------------------------------------------------------------
       
   287 // 
   318 void CEmailMessageContent::FetchL( MEmailFetchObserver&  aObserver )
   288 void CEmailMessageContent::FetchL( MEmailFetchObserver&  aObserver )
   319     {
   289     {
   320     User::LeaveIfNull( iPart );
       
   321     const TFSMailMsgId fsId = FsMsgId(iPluginData, iMsgContentId);
   290     const TFSMailMsgId fsId = FsMsgId(iPluginData, iMsgContentId);
   322     if ( !iFetchObserver )
   291     if ( !iFetchObserver )
   323         {
   292         {
   324         iFetchObserver = new ( ELeave ) CContentRequestObserver( *this );
   293         iFetchObserver = new (ELeave) CContentRequestObserver( *this );            
   325         }
   294         }
   326     iFetchObserver->SetObserverL( &aObserver );
   295     iFetchObserver->SetObserverL(&aObserver);
   327     iRequestId = iPart->FetchMessagePartL( fsId, *iFetchObserver, TUint( 0 ) );
   296     iRequestId = iPart->FetchMessagePartL(fsId, *iFetchObserver, TUint(0));
   328 
   297     
   329     }
   298     }
   330 
   299 
   331 // ---------------------------------------------------------------------------
   300 // ---------------------------------------------------------------------------
   332 // 
   301 // 
   333 // ---------------------------------------------------------------------------
   302 // ---------------------------------------------------------------------------
       
   303 // 
   334 void CEmailMessageContent::CancelFetch()
   304 void CEmailMessageContent::CancelFetch()
   335     {
   305     {
   336     TRAP_IGNORE( iPlugin->CancelL( iRequestId ) );
   306     TRAP_IGNORE( iPlugin->CancelL(iRequestId) );
   337     }
   307     }
   338 
   308 
   339 // ---------------------------------------------------------------------------
   309 // ---------------------------------------------------------------------------
   340 // 
   310 // 
   341 // ---------------------------------------------------------------------------
   311 // ---------------------------------------------------------------------------
       
   312 // 
   342 void CEmailMessageContent::SaveToFileL( const TDesC& aPath )
   313 void CEmailMessageContent::SaveToFileL( const TDesC& aPath )
   343     {
   314     {
   344     iPlugin->CopyMessagePartFileL(
   315     iPlugin->CopyMessagePartFileL(
   345         FsMsgId( iPluginData, iMsgContentId.iMessageId.iFolderId.iMailboxId ),
   316         FsMsgId( iPluginData, iMsgContentId.iMessageId.iFolderId.iMailboxId ), 
   346         FsMsgId( iPluginData, iMsgContentId.iMessageId.iFolderId ),
   317         FsMsgId( iPluginData, iMsgContentId.iMessageId.iFolderId ), 
   347         FsMsgId( iPluginData, iMsgContentId.iMessageId ),
   318         FsMsgId( iPluginData, iMsgContentId.iMessageId ), 
   348         FsMsgId( iPluginData, iMsgContentId ),
   319         FsMsgId( iPluginData, iMsgContentId ),
   349         aPath );
   320         aPath );
   350     }
   321     }
   351 
   322 
   352 /* Dummy implementations, not ever called */
   323 /* Dummy implementations, not ever called */
   356     }
   327     }
   357 
   328 
   358 // ---------------------------------------------------------------------------
   329 // ---------------------------------------------------------------------------
   359 // 
   330 // 
   360 // ---------------------------------------------------------------------------
   331 // ---------------------------------------------------------------------------
   361 MEmailTextContent* CEmailMessageContent::AsTextContentOrNull() const
   332 // 
       
   333 MEmailTextContent* CEmailMessageContent::AsTextContentOrNull()const
   362     {
   334     {
   363     return NULL;
   335     return NULL;
   364     }
   336     }
   365 
   337 
   366 // ---------------------------------------------------------------------------
   338 // ---------------------------------------------------------------------------
   367 // 
   339 // 
   368 // ---------------------------------------------------------------------------
   340 // ---------------------------------------------------------------------------
       
   341 // 
   369 MEmailAttachment* CEmailMessageContent::AsAttachmentOrNull() const
   342 MEmailAttachment* CEmailMessageContent::AsAttachmentOrNull() const
   370     {
   343     {
   371     return NULL;
   344     return NULL;
   372     }
   345     }
   373 
   346 
   374 // ---------------------------------------------------------------------------
   347 
   375 // 
   348 // ---------------------------------------------------------------------------
   376 // ---------------------------------------------------------------------------
   349 // 
       
   350 // ---------------------------------------------------------------------------
       
   351 // 
   377 CEmailMessageContent::CContentRequestObserver::CContentRequestObserver( 
   352 CEmailMessageContent::CContentRequestObserver::CContentRequestObserver( 
   378     CEmailMessageContent& aParent ) : iObserver( NULL ), iParent( aParent )
   353     CEmailMessageContent& aParent ) : iObserver( NULL ), iParent( aParent )
   379     {
   354     {    
   380     }
   355     }
   381 
   356 
   382 // ---------------------------------------------------------------------------
   357 
   383 // 
   358 // ---------------------------------------------------------------------------
   384 // ---------------------------------------------------------------------------
   359 // 
       
   360 // ---------------------------------------------------------------------------
       
   361 // 
   385 void CEmailMessageContent::CContentRequestObserver::RequestResponseL( 
   362 void CEmailMessageContent::CContentRequestObserver::RequestResponseL( 
   386     TFSProgress aEvent, TInt /* aRequestId */ )
   363     TFSProgress aEvent, TInt /* aRequestId */ )
   387     {
   364     {
   388     if ( aEvent.iProgressStatus == TFSProgress::EFSStatus_RequestComplete )
   365     if (aEvent.iProgressStatus == TFSProgress::EFSStatus_RequestComplete)
   389         {
   366         {
   390         delete iParent.iPart;
   367         delete iParent.iPart;
   391         iParent.iPart = NULL;
   368         iParent.iPart = NULL;
   392         CFSMailMessagePart *part = iParent.iPlugin->MessagePartL( 
   369         CFSMailMessagePart *part = iParent.iPlugin->MessagePartL( 
   393             FsMsgId( iParent.iPluginData, iParent.iMsgContentId.iMessageId.iFolderId.iMailboxId ),
   370             FsMsgId( iParent.iPluginData, iParent.iMsgContentId.iMessageId.iFolderId.iMailboxId ),
   394             FsMsgId( iParent.iPluginData, iParent.iMsgContentId.iMessageId.iFolderId ),
   371             FsMsgId( iParent.iPluginData, iParent.iMsgContentId.iMessageId.iFolderId ),
   395             FsMsgId( iParent.iPluginData, iParent.iMsgContentId.iMessageId ),
   372             FsMsgId( iParent.iPluginData, iParent.iMsgContentId.iMessageId ),
   396             FsMsgId( iParent.iPluginData, iParent.iMsgContentId ) );
   373             FsMsgId( iParent.iPluginData, iParent.iMsgContentId ) );
   397         iParent.SetPart( part );
   374         iParent.SetPart( part );
   398 
   375         iObserver->DataFetchedL(aEvent.iError);       
   399         if ( iObserver ) 
       
   400             iObserver->DataFetchedL( aEvent.iError );
       
   401         }
   376         }
   402     }
   377     }
   403 
   378 
   404 // ---------------------------------------------------------------------------
   379 // ---------------------------------------------------------------------------
   405 // 
   380 // 
   406 // ---------------------------------------------------------------------------
   381 // ---------------------------------------------------------------------------
       
   382 // 
   407 void CEmailMessageContent::CContentRequestObserver::SetObserverL( MEmailFetchObserver* aObserver )
   383 void CEmailMessageContent::CContentRequestObserver::SetObserverL( MEmailFetchObserver* aObserver )
   408     {
   384     {
   409     iObserver = aObserver;
   385     iObserver = aObserver;
   410     }
   386     }
   411 
   387 
   412 // End of file
   388 // End of file.