emailservices/emailclientapi/src/emailmailbox.cpp
branchRCL_3
changeset 17 67369d1b217f
parent 16 b5fbb9b25d57
child 24 d189ee25cf9d
equal deleted inserted replaced
16:b5fbb9b25d57 17:67369d1b217f
    39 #include "emailclientapi.hrh"
    39 #include "emailclientapi.hrh"
    40 #include "FreestyleEmailUiConstants.h"
    40 #include "FreestyleEmailUiConstants.h"
    41 
    41 
    42 // Constants
    42 // Constants
    43 
    43 
    44 _LIT( KNewLine, "\n" );
       
    45 
       
    46 // -----------------------------------------------------------------------------
    44 // -----------------------------------------------------------------------------
    47 //
    45 //
    48 // -----------------------------------------------------------------------------
    46 // -----------------------------------------------------------------------------
    49 CEmailMailbox* CEmailMailbox::NewL(
    47 CEmailMailbox* CEmailMailbox::NewL(
    50     CPluginData& aPluginData,
    48     CPluginData& aPluginData,
   199 
   197 
   200     switch ( aFolderType )
   198     switch ( aFolderType )
   201         {
   199         {
   202         case EInbox:
   200         case EInbox:
   203             fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSInbox );
   201             fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSInbox );
       
   202             break;
   204         case EOutbox:
   203         case EOutbox:
   205             fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSOutbox );
   204             fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSOutbox );
       
   205             break;
   206         case EDrafts:
   206         case EDrafts:
   207             fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSDraftsFolder );
   207             fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSDraftsFolder );
       
   208             break;
   208         case EDeleted:
   209         case EDeleted:
   209             fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSDeleted );
   210             fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSDeleted );
       
   211             break;
   210         case ESent:
   212         case ESent:
   211             fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSSentFolder );
   213             fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSSentFolder );
       
   214             break;
   212         case EOther:
   215         case EOther:
       
   216             break;
   213         default:
   217         default:
   214             User::Leave( KErrNotFound );
   218             User::Leave( KErrNotFound );
   215             break;
   219             break;
   216         }
   220         }
   217 
   221 
   284 // -----------------------------------------------------------------------------
   288 // -----------------------------------------------------------------------------
   285 //
   289 //
   286 // -----------------------------------------------------------------------------
   290 // -----------------------------------------------------------------------------
   287 MEmailMessage* CEmailMailbox::CreateForwardMessageL( const TMessageId& aMessageId ) const
   291 MEmailMessage* CEmailMailbox::CreateForwardMessageL( const TMessageId& aMessageId ) const
   288     {
   292     {
       
   293     // create temp header descriptor
       
   294     TReplyForwardParams params;
       
   295     params.iHeader = HBufC::NewLC(1);
       
   296     params.iHeader->Des().Copy(KNullDesC());    
       
   297     params.iSmartTag = HBufC::NewLC(1);
       
   298     params.iSmartTag->Des().Copy(KNullDesC());        
       
   299     TPckgBuf<TReplyForwardParams> buf( params );
       
   300     HBufC* temp = HBufC::NewLC( buf.Length() );
       
   301     temp->Des().Copy( buf );
       
   302     
   289     CFSMailMessage* fsMessage = iFsMailbox->CreateForwardMessage(
   303     CFSMailMessage* fsMessage = iFsMailbox->CreateForwardMessage(
   290         FsMsgId( iPluginData, aMessageId ), KNewLine() );
   304         FsMsgId( iPluginData, aMessageId ), *temp );
   291     User::LeaveIfNull( fsMessage );
   305     User::LeaveIfNull( fsMessage );
   292     CleanupStack::PushL( fsMessage );
   306     CleanupStack::PushL( fsMessage );
   293     MEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns );
   307     MEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns );
   294     CleanupStack::Pop();  // fsMessage
   308     CleanupStack::Pop();  // fsMessage
   295 
   309     
       
   310     CleanupStack::PopAndDestroy( temp );
       
   311     CleanupStack::PopAndDestroy( params.iSmartTag );
       
   312     CleanupStack::PopAndDestroy( params.iHeader );
       
   313     
   296     return message;
   314     return message;
   297     }
   315     }
   298 
   316 
   299 // -----------------------------------------------------------------------------
   317 // -----------------------------------------------------------------------------
   300 //
   318 //
   436     TAny* aParam1,
   454     TAny* aParam1,
   437     TAny* aParam2,
   455     TAny* aParam2,
   438     TAny* aParam3 )
   456     TAny* aParam3 )
   439     {
   457     {
   440     const TEventMapFunc KMailboxEventHandlers[] = {
   458     const TEventMapFunc KMailboxEventHandlers[] = {
       
   459     &CEmailMailbox::TObserverEventMapper::IgnoreEventL,
   441     &CEmailMailbox::TObserverEventMapper::IgnoreEventL,
   460     &CEmailMailbox::TObserverEventMapper::IgnoreEventL,
   442     &CEmailMailbox::TObserverEventMapper::IgnoreEventL,
   461     &CEmailMailbox::TObserverEventMapper::IgnoreEventL,
   443     &CEmailMailbox::TObserverEventMapper::IgnoreEventL,
   462     &CEmailMailbox::TObserverEventMapper::IgnoreEventL,
   444     &CEmailMailbox::TObserverEventMapper::IgnoreEventL,
   463     &CEmailMailbox::TObserverEventMapper::IgnoreEventL,
   445     &CEmailMailbox::TObserverEventMapper::IgnoreEventL,
   464     &CEmailMailbox::TObserverEventMapper::IgnoreEventL,
   469         TEventMapFunc method = KMailboxEventHandlers[ index ];
   488         TEventMapFunc method = KMailboxEventHandlers[ index ];
   470         (this->*method)(id, aParam1,aParam2,aParam3 );
   489         (this->*method)(id, aParam1,aParam2,aParam3 );
   471         }
   490         }
   472     }
   491     }
   473 
   492 
       
   493 void CEmailMailbox::TObserverEventMapper::ConvertParamsL( TMailboxId aMailbox, TAny* aParam1, 
       
   494                                             TAny* aParam2, REmailMessageIdArray& aMessageIds, TFolderId& aFolderId )
       
   495     {  
       
   496     RArray<TFSMailMsgId>* newEntries( static_cast< RArray<TFSMailMsgId>* >( aParam1 ) );
       
   497     CleanupClosePushL( *newEntries );
       
   498     TFSMailMsgId* parentFolder = static_cast<TFSMailMsgId*>( aParam2 );
       
   499     aFolderId = TFolderId( parentFolder->Id(), aMailbox );
       
   500     
       
   501     for (TInt j = 0; j < newEntries->Count(); j++ ) 
       
   502         {
       
   503         TFSMailMsgId fsId(( *newEntries )[j]);
       
   504         TMessageId messageId( fsId.Id(), aFolderId.iId, aMailbox);
       
   505         aMessageIds.Append(messageId);
       
   506         }
       
   507     
       
   508     CleanupStack::PopAndDestroy( newEntries );
       
   509     }
       
   510 
   474 void CEmailMailbox::TObserverEventMapper::IgnoreEventL(
   511 void CEmailMailbox::TObserverEventMapper::IgnoreEventL(
   475     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   512     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   476     {
   513     {
   477     }
   514     }
   478 
   515 
   479 void CEmailMailbox::TObserverEventMapper::NewMessageL(
   516 void CEmailMailbox::TObserverEventMapper::NewMessageL(
   480     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   517     TMailboxId aMailbox, TAny* aParam1, TAny* aParam2, TAny* /*aParam3*/ )
   481     {
   518     {  
       
   519     REmailMessageIdArray messageIds;    
       
   520     TFolderId folderId;
       
   521     ConvertParamsL( aMailbox, aParam1, aParam2, messageIds, folderId );
       
   522     for ( TInt i = 0; i < iClientObservers.Count(); i++ ) 
       
   523         {
       
   524         MMailboxContentObserver* observer = iClientObservers[i];
       
   525         observer->NewMessageEventL( aMailbox, messageIds, folderId );
       
   526         }
   482     }
   527     }
   483 
   528 
   484 void CEmailMailbox::TObserverEventMapper::MessageChangedL(
   529 void CEmailMailbox::TObserverEventMapper::MessageChangedL(
   485     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   530     TMailboxId aMailbox, TAny* aParam1, TAny* aParam2, TAny* /*aParam3*/ )
   486     {
   531     {
       
   532     REmailMessageIdArray messageIds;    
       
   533     TFolderId folderId;
       
   534     ConvertParamsL( aMailbox, aParam1, aParam2, messageIds, folderId );
       
   535     
       
   536     for ( TInt i = 0; i < iClientObservers.Count(); i++ ) 
       
   537         {
       
   538         MMailboxContentObserver* observer = iClientObservers[i];
       
   539         observer->MessageChangedEventL( aMailbox, messageIds, folderId );
       
   540         }
   487     }
   541     }
   488 
   542 
   489 void CEmailMailbox::TObserverEventMapper::MessageDeletedL(
   543 void CEmailMailbox::TObserverEventMapper::MessageDeletedL(
   490     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   544     TMailboxId aMailbox, TAny* aParam1, TAny* aParam2, TAny* /*aParam3*/ )
   491     {
   545     {
       
   546     REmailMessageIdArray messageIds;    
       
   547     TFolderId folderId;
       
   548     ConvertParamsL( aMailbox, aParam1, aParam2, messageIds, folderId );
       
   549         
       
   550     for ( TInt i = 0; i < iClientObservers.Count(); i++ ) 
       
   551         {
       
   552         MMailboxContentObserver* observer = iClientObservers[i];
       
   553         observer->MessageDeletedEventL( aMailbox, messageIds, folderId );
       
   554         }
   492     }
   555     }
   493 
   556 
   494 void CEmailMailbox::TObserverEventMapper::MessageMoved(
   557 void CEmailMailbox::TObserverEventMapper::MessageMoved(
   495     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   558     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   496     {
   559     {