emailservices/emailclientapi/src/emailmailbox.cpp
branchRCL_3
changeset 64 3533d4323edc
parent 63 d189ee25cf9d
equal deleted inserted replaced
63:d189ee25cf9d 64: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".
    29 #include "emailapiutils.h"
    29 #include "emailapiutils.h"
    30 #include "emailaddress.h"
    30 #include "emailaddress.h"
    31 #include "emailfolder.h"
    31 #include "emailfolder.h"
    32 #include "emailmessage.h"
    32 #include "emailmessage.h"
    33 #include "emailmessagesearch.h"
    33 #include "emailmessagesearch.h"
    34 #include "CFSMailClient.h"
    34 #include "cfsmailclient.h"
    35 #include "emailclientapiimpl.h"
    35 #include "emailclientapiimpl.h"
    36 #include "CFSMailPlugin.h"
    36 #include "cfsmailplugin.h"
    37 #include "CFSMailBox.h"
    37 #include "cfsmailbox.h"
    38 #include "CFSMailFolder.h"
    38 #include "cfsmailfolder.h"
    39 #include "emailclientapi.hrh"
    39 #include "emailclientapi.hrh"
    40 
    40 #include "FreestyleEmailUiConstants.h"
    41 #include <xqservicerequest.h>
       
    42 #include "email_services_api.h"
       
    43 
    41 
    44 // Constants
    42 // Constants
    45 
       
    46 #include <QStringList>
       
    47 
       
    48 _LIT( KNewLine, "\n" );
       
    49 
    43 
    50 // -----------------------------------------------------------------------------
    44 // -----------------------------------------------------------------------------
    51 //
    45 //
    52 // -----------------------------------------------------------------------------
    46 // -----------------------------------------------------------------------------
    53 CEmailMailbox* CEmailMailbox::NewL(
    47 CEmailMailbox* CEmailMailbox::NewL(
    55     const TMailboxId& aMailboxId )
    49     const TMailboxId& aMailboxId )
    56     {
    50     {
    57     CEmailMailbox* self = new ( ELeave ) CEmailMailbox( aPluginData, aMailboxId );
    51     CEmailMailbox* self = new ( ELeave ) CEmailMailbox( aPluginData, aMailboxId );
    58     CleanupStack::PushL( self );
    52     CleanupStack::PushL( self );
    59     self->ConstructL();
    53     self->ConstructL();
    60     CleanupStack::Pop( self );
    54     CleanupStack::Pop();
    61     return self;
    55     return self;
    62     }
    56     }
    63 
    57 
    64 // -----------------------------------------------------------------------------
    58 // -----------------------------------------------------------------------------
    65 //
    59 //
    79     {
    73     {
    80     iPlugin = iPluginData.ClaimInstanceL();
    74     iPlugin = iPluginData.ClaimInstanceL();
    81     iEventMapper = new ( ELeave ) TObserverEventMapper(
    75     iEventMapper = new ( ELeave ) TObserverEventMapper(
    82         iPlugin, iPluginData.Uid(), iMailboxId );
    76         iPlugin, iPluginData.Uid(), iMailboxId );
    83     iFsMailbox = iPlugin->GetMailBoxByUidL( FsMailboxId() );
    77     iFsMailbox = iPlugin->GetMailBoxByUidL( FsMailboxId() );
    84     iSyncObserver = new ( ELeave ) CEmailMailbox::CEmailRequestObserver();
    78     iSyncObserver = new (ELeave) CEmailMailbox::CEmailRequestObserver();
    85     }
    79     }
    86 
    80 
    87 // -----------------------------------------------------------------------------
    81 // -----------------------------------------------------------------------------
    88 //
    82 //
    89 // -----------------------------------------------------------------------------
    83 // -----------------------------------------------------------------------------
   166         const CFSMailFolder* fsfolder = folders[i];
   160         const CFSMailFolder* fsfolder = folders[i];
   167         const TEntryId id = fsfolder->GetFolderId().Id();
   161         const TEntryId id = fsfolder->GetFolderId().Id();
   168         const TFolderId folderId( id, iMailboxId );
   162         const TFolderId folderId( id, iMailboxId );
   169         CEmailFolder* folder = CEmailFolder::NewLC( iPluginData, folderId, folders[i] );
   163         CEmailFolder* folder = CEmailFolder::NewLC( iPluginData, folderId, folders[i] );
   170         aFolders.AppendL( folder );
   164         aFolders.AppendL( folder );
   171         CleanupStack::Pop( folder );
   165         CleanupStack::Pop();    // folder
   172         }
   166         }
   173     CleanupStack::Pop( &folders );
   167     CleanupStack::Pop();    // folders
   174     folders.Close(); // close but don't delete folders because they are
   168     folders.Close(); // close but don't delete folders because they are
   175                      // owned by CEmailFolder
   169                      // owned by CEmailFolder
   176     return res;
   170     return res;
   177     }
   171     }
   178 
   172 
   185             FsMsgId( iPluginData, iMailboxId ),
   179             FsMsgId( iPluginData, iMailboxId ),
   186             FsMsgId( iPluginData, aFolderId ) );
   180             FsMsgId( iPluginData, aFolderId ) );
   187     CleanupStack::PushL( fsFolder );
   181     CleanupStack::PushL( fsFolder );
   188 
   182 
   189     CEmailFolder* folder = CEmailFolder::NewL( iPluginData,
   183     CEmailFolder* folder = CEmailFolder::NewL( iPluginData,
   190                 aFolderId, fsFolder );
   184                 aFolderId, fsFolder);
   191     CleanupStack::Pop( fsFolder );
   185     CleanupStack::Pop();    // folder
   192 
   186 
   193     return folder;
   187     return folder;
   194     }
   188     }
   195 
   189 
   196 // -----------------------------------------------------------------------------
   190 // -----------------------------------------------------------------------------
   217             break;
   211             break;
   218         case ESent:
   212         case ESent:
   219             fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSSentFolder );
   213             fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSSentFolder );
   220             break;
   214             break;
   221         case EOther:
   215         case EOther:
       
   216             break;
   222         default:
   217         default:
   223             User::Leave( KErrNotFound );
   218             User::Leave( KErrNotFound );
   224             break;
   219             break;
   225         }
   220         }
   226 
   221 
   233 
   228 
   234     CEmailFolder* folder = CEmailFolder::NewL( iPluginData,
   229     CEmailFolder* folder = CEmailFolder::NewL( iPluginData,
   235             folderId,
   230             folderId,
   236             fsFolder );
   231             fsFolder );
   237 
   232 
   238     CleanupStack::Pop( fsFolder );
   233     CleanupStack::Pop();
   239 
   234 
   240     return folder;
   235     return folder;
   241     }
   236     }
   242 
   237 
   243 // -----------------------------------------------------------------------------
   238 // -----------------------------------------------------------------------------
   247     {
   242     {
   248     CFSMailMessage *fsMessage = iPlugin->GetMessageByUidL(
   243     CFSMailMessage *fsMessage = iPlugin->GetMessageByUidL(
   249             FsMsgId( iPluginData, aMessageId.iFolderId.iMailboxId ),
   244             FsMsgId( iPluginData, aMessageId.iFolderId.iMailboxId ),
   250             FsMsgId( iPluginData, aMessageId.iFolderId ),
   245             FsMsgId( iPluginData, aMessageId.iFolderId ),
   251             FsMsgId( iPluginData, aMessageId ),
   246             FsMsgId( iPluginData, aMessageId ),
   252             EFSMsgDataEnvelope );
   247             EFSMsgDataEnvelope);
   253 
   248 
   254     CleanupStack::PushL( fsMessage );
   249     CleanupStack::PushL( fsMessage );
   255     CEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns );
   250     
   256     CleanupStack::Pop( fsMessage );
   251     CEmailMessage* message = NULL;
       
   252     
       
   253     if ( fsMessage )
       
   254         message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns );
       
   255     CleanupStack::Pop();  // fsMessage
   257 
   256 
   258     return message;
   257     return message;
   259     }
   258     }
   260 
   259 
   261 // -----------------------------------------------------------------------------
   260 // -----------------------------------------------------------------------------
   265     {
   264     {
   266     CFSMailMessage* fsMessage = iFsMailbox->CreateMessageToSend();
   265     CFSMailMessage* fsMessage = iFsMailbox->CreateMessageToSend();
   267     User::LeaveIfNull( fsMessage );
   266     User::LeaveIfNull( fsMessage );
   268     CleanupStack::PushL( fsMessage );
   267     CleanupStack::PushL( fsMessage );
   269     MEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns );
   268     MEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns );
   270     CleanupStack::Pop( fsMessage );
   269     CleanupStack::Pop();  // fsMessage
   271 
   270 
   272     return message;
   271     return message;
   273     }
   272     }
   274 
   273 
   275 // -----------------------------------------------------------------------------
   274 // -----------------------------------------------------------------------------
   276 //
   275 //
   277 // -----------------------------------------------------------------------------
   276 // -----------------------------------------------------------------------------
   278 MEmailMessage* CEmailMailbox::CreateReplyMessageL( 
   277 MEmailMessage* CEmailMailbox::CreateReplyMessageL( const TMessageId& aMessageId, const TBool aReplyToAll ) const
   279         const TMessageId& aMessageId, const TBool aReplyToAll ) const
   278     {
   280     {
   279     CFSMailMessage* fsMessage = iFsMailbox->CreateReplyMessage( FsMsgId( iPluginData, aMessageId ), aReplyToAll );
   281     CFSMailMessage* fsMessage = iFsMailbox->CreateReplyMessage( 
       
   282         FsMsgId( iPluginData, aMessageId ), aReplyToAll );
       
   283     User::LeaveIfNull( fsMessage );
   280     User::LeaveIfNull( fsMessage );
   284     CleanupStack::PushL( fsMessage );
   281     CleanupStack::PushL( fsMessage );
   285     MEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns );
   282     MEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns );
   286     CleanupStack::Pop( fsMessage );
   283     CleanupStack::Pop();  // fsMessage
   287 
   284 
   288     return message;
   285     return message;
   289     }
   286     }
   290 
   287 
   291 // -----------------------------------------------------------------------------
   288 // -----------------------------------------------------------------------------
   292 //
   289 //
   293 // -----------------------------------------------------------------------------
   290 // -----------------------------------------------------------------------------
   294 MEmailMessage* CEmailMailbox::CreateForwardMessageL( const TMessageId& aMessageId ) const
   291 MEmailMessage* CEmailMailbox::CreateForwardMessageL( const TMessageId& aMessageId ) const
   295     {
   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     
   296     CFSMailMessage* fsMessage = iFsMailbox->CreateForwardMessage(
   303     CFSMailMessage* fsMessage = iFsMailbox->CreateForwardMessage(
   297         FsMsgId( iPluginData, aMessageId ), KNewLine() );
   304         FsMsgId( iPluginData, aMessageId ), *temp );
   298     User::LeaveIfNull( fsMessage );
   305     User::LeaveIfNull( fsMessage );
   299     CleanupStack::PushL( fsMessage );
   306     CleanupStack::PushL( fsMessage );
   300     MEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns );
   307     MEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns );
   301     CleanupStack::Pop( fsMessage );
   308     CleanupStack::Pop();  // fsMessage
   302 
   309     
       
   310     CleanupStack::PopAndDestroy( temp );
       
   311     CleanupStack::PopAndDestroy( params.iSmartTag );
       
   312     CleanupStack::PopAndDestroy( params.iHeader );
       
   313     
   303     return message;
   314     return message;
   304     }
   315     }
   305 
   316 
   306 // -----------------------------------------------------------------------------
   317 // -----------------------------------------------------------------------------
   307 //
   318 //
   339 // -----------------------------------------------------------------------------
   350 // -----------------------------------------------------------------------------
   340 //
   351 //
   341 // -----------------------------------------------------------------------------
   352 // -----------------------------------------------------------------------------
   342 MEmailMessageSearchAsync* CEmailMailbox::MessageSearchL()
   353 MEmailMessageSearchAsync* CEmailMailbox::MessageSearchL()
   343     {
   354     {
   344     MEmailMessageSearchAsync* searchAPI = 
   355     MEmailMessageSearchAsync* searchAPI = CEmailMessageSearchAsync::NewL( iPluginData, iMailboxId );
   345         CEmailMessageSearchAsync::NewL( iPluginData, iMailboxId );
       
   346     return searchAPI;
   356     return searchAPI;
   347     }
   357     }
   348 
   358 
   349 // -----------------------------------------------------------------------------
       
   350 //
       
   351 // -----------------------------------------------------------------------------
       
   352 void CEmailMailbox::ShowInboxL()
   359 void CEmailMailbox::ShowInboxL()
   353     {
   360     {
   354     User::Leave( KErrNotSupported );
   361     TMailListActivationData mailListData;
   355     }
   362 
   356 
   363     mailListData.iMailBoxId = FsMsgId(iPluginData, iMailboxId);
   357 // -----------------------------------------------------------------------------
   364 
   358 //
   365     TPckgBuf<TMailListActivationData> pkgOut( mailListData );
   359 // -----------------------------------------------------------------------------
   366     CVwsSessionWrapper* viewSrvSession = CVwsSessionWrapper::NewLC();
       
   367     viewSrvSession->ActivateView(TVwsViewId(KFSEmailUiUid, MailListId), KStartListWithFolderId, pkgOut);
       
   368     CleanupStack::PopAndDestroy();
       
   369     }
       
   370 
   360 void CEmailMailbox::EditNewMessageL()
   371 void CEmailMailbox::EditNewMessageL()
   361     {
   372     {
   362     bool syncronous;
   373     TEditorLaunchParams editorLaunchData;
   363 
   374     editorLaunchData.iExtra = NULL;
   364     XQServiceRequest request( emailInterfaceNameSend,
   375     editorLaunchData.iMailboxId = FsMsgId(iPluginData, iMailboxId);
   365                              emailOperationSendMail,
   376     editorLaunchData.iActivatedExternally = ETrue;
   366                              syncronous );
   377 
   367 
   378     TPckgBuf<TEditorLaunchParams> pckgData( editorLaunchData );
   368     QVariant returnValue;
   379     CVwsSessionWrapper* viewSrvSession = CVwsSessionWrapper::NewLC();
   369     if ( !request.send( returnValue ) )
   380     TUid command = TUid::Uid(KEditorCmdCreateNew);
   370         User::Leave( KErrGeneral );
   381     viewSrvSession->ActivateView(TVwsViewId(KFSEmailUiUid, MailEditorId), command, pckgData);
   371     }
   382     CleanupStack::PopAndDestroy( viewSrvSession );
   372 
   383     }
       
   384 /*
       
   385 void CEmailMailbox::GetLatestMail()
       
   386     {
       
   387     CFSMailFolder* fsFolder = NULL;
       
   388     TFSMailMsgId fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSInbox );
       
   389 
       
   390     }
       
   391 */
   373 // -----------------------------------------------------------------------------
   392 // -----------------------------------------------------------------------------
   374 //
   393 //
   375 // -----------------------------------------------------------------------------
   394 // -----------------------------------------------------------------------------
   376 CEmailMailbox::TObserverEventMapper::TObserverEventMapper(
   395 CEmailMailbox::TObserverEventMapper::TObserverEventMapper(
   377     CFSMailPlugin* aPlugin,
   396     CFSMailPlugin* aPlugin,
   391 
   410 
   392 // -----------------------------------------------------------------------------
   411 // -----------------------------------------------------------------------------
   393 // Adds mailbox observer and subscribes to plugin mailbox events if there
   412 // Adds mailbox observer and subscribes to plugin mailbox events if there
   394 // were no previous observers.
   413 // were no previous observers.
   395 // -----------------------------------------------------------------------------
   414 // -----------------------------------------------------------------------------
   396 void CEmailMailbox::TObserverEventMapper::AddObserverL( 
   415 void CEmailMailbox::TObserverEventMapper::AddObserverL( MMailboxContentObserver& aObserver )
   397         MMailboxContentObserver& aObserver )
   416     {
   398     {
   417     TIdentityRelation<MMailboxContentObserver> relation( &CEmailMailbox::TObserverEventMapper::Equals );
   399     TIdentityRelation<MMailboxContentObserver> relation( 
       
   400         &CEmailMailbox::TObserverEventMapper::Equals );
       
   401     if ( iClientObservers.Find( &aObserver, relation ) == KErrNotFound )
   418     if ( iClientObservers.Find( &aObserver, relation ) == KErrNotFound )
   402         {
   419         {
   403         const TInt count( iClientObservers.Count() );
   420         const TInt count( iClientObservers.Count() );
   404         if  ( !count )
   421         if  ( !count )
   405             {
   422             {
   411 
   428 
   412 // -----------------------------------------------------------------------------
   429 // -----------------------------------------------------------------------------
   413 // Removes an observer and removes event subscription if the observer was
   430 // Removes an observer and removes event subscription if the observer was
   414 // last in observer array.
   431 // last in observer array.
   415 // -----------------------------------------------------------------------------
   432 // -----------------------------------------------------------------------------
   416 void CEmailMailbox::TObserverEventMapper::RemoveObserver( 
   433 void CEmailMailbox::TObserverEventMapper::RemoveObserver( MMailboxContentObserver& aObserver )
   417         MMailboxContentObserver& aObserver )
   434     {
   418     {
   435     TIdentityRelation<MMailboxContentObserver> relation( &CEmailMailbox::TObserverEventMapper::Equals );
   419     TIdentityRelation<MMailboxContentObserver> relation( 
       
   420         &CEmailMailbox::TObserverEventMapper::Equals );
       
   421     const TInt index( iClientObservers.Find( &aObserver, relation ) );
   436     const TInt index( iClientObservers.Find( &aObserver, relation ) );
   422     if ( index != KErrNotFound )
   437     if ( index != KErrNotFound )
   423         {
   438         {
   424         iClientObservers.Remove( index );
   439         iClientObservers.Remove( index );
   425         const TInt count( iClientObservers.Count() );
   440         const TInt count( iClientObservers.Count() );
   473         TEventMapFunc method = KMailboxEventHandlers[ index ];
   488         TEventMapFunc method = KMailboxEventHandlers[ index ];
   474         (this->*method)(id, aParam1,aParam2,aParam3 );
   489         (this->*method)(id, aParam1,aParam2,aParam3 );
   475         }
   490         }
   476     }
   491     }
   477 
   492 
   478 // -----------------------------------------------------------------------------
   493 void CEmailMailbox::TObserverEventMapper::ConvertParamsL( TMailboxId aMailbox, TAny* aParam1, 
   479 //
   494                                             TAny* aParam2, REmailMessageIdArray& aMessageIds, TFolderId& aFolderId )
   480 // -----------------------------------------------------------------------------
   495     {  
   481 void CEmailMailbox::TObserverEventMapper::ConvertParamsL( 
       
   482         TMailboxId aMailbox, TAny* aParam1, TAny* aParam2, 
       
   483         REmailMessageIdArray& aMessageIds, TFolderId& aFolderId )
       
   484     {
       
   485     RArray<TFSMailMsgId>* newEntries( static_cast< RArray<TFSMailMsgId>* >( aParam1 ) );
   496     RArray<TFSMailMsgId>* newEntries( static_cast< RArray<TFSMailMsgId>* >( aParam1 ) );
   486     CleanupClosePushL( *newEntries );
   497     CleanupClosePushL( *newEntries );
   487     TFSMailMsgId* parentFolder = static_cast<TFSMailMsgId*>( aParam2 );
   498     TFSMailMsgId* parentFolder = static_cast<TFSMailMsgId*>( aParam2 );
   488     aFolderId = TFolderId( parentFolder->Id(), aMailbox );
   499     aFolderId = TFolderId( parentFolder->Id(), aMailbox );
   489 
   500     
   490     for ( TInt j = 0; j < newEntries->Count(); j++ ) 
   501     for (TInt j = 0; j < newEntries->Count(); j++ ) 
   491         {
   502         {
   492         TFSMailMsgId fsId(( *newEntries )[j] );
   503         TFSMailMsgId fsId(( *newEntries )[j]);
   493         TMessageId messageId( fsId.Id(), aFolderId.iId, aMailbox );
   504         TMessageId messageId( fsId.Id(), aFolderId.iId, aMailbox);
   494         aMessageIds.Append( messageId );
   505         aMessageIds.Append(messageId);
   495         }
   506         }
   496 
   507     
   497     CleanupStack::PopAndDestroy( newEntries );
   508     CleanupStack::PopAndDestroy( newEntries );
   498     }
   509     }
   499 
   510 
   500 // -----------------------------------------------------------------------------
       
   501 //
       
   502 // -----------------------------------------------------------------------------
       
   503 void CEmailMailbox::TObserverEventMapper::IgnoreEventL(
   511 void CEmailMailbox::TObserverEventMapper::IgnoreEventL(
   504     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   512     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   505     {
   513     {
   506     }
   514     }
   507 
   515 
   508 // -----------------------------------------------------------------------------
       
   509 //
       
   510 // -----------------------------------------------------------------------------
       
   511 void CEmailMailbox::TObserverEventMapper::NewMessageL(
   516 void CEmailMailbox::TObserverEventMapper::NewMessageL(
   512     TMailboxId aMailbox, TAny* aParam1, TAny* aParam2, TAny* /*aParam3*/ )
   517     TMailboxId aMailbox, TAny* aParam1, TAny* aParam2, TAny* /*aParam3*/ )
   513     {
   518     {  
   514     REmailMessageIdArray messageIds;
       
   515     TFolderId folderId;
       
   516     ConvertParamsL( aMailbox, aParam1, aParam2, messageIds, folderId );
       
   517     CleanupClosePushL( messageIds );
       
   518 
       
   519     for ( TInt i = 0; i < iClientObservers.Count(); i++ )
       
   520         {
       
   521         MMailboxContentObserver* observer = iClientObservers[i];
       
   522         if (observer)
       
   523             observer->NewMessageEventL( aMailbox, messageIds, folderId );
       
   524         }
       
   525     
       
   526     CleanupStack::PopAndDestroy( &messageIds );
       
   527     }
       
   528 
       
   529 // -----------------------------------------------------------------------------
       
   530 //
       
   531 // -----------------------------------------------------------------------------
       
   532 void CEmailMailbox::TObserverEventMapper::MessageChangedL(
       
   533     TMailboxId aMailbox, TAny* aParam1, TAny* aParam2, TAny* /*aParam3*/ )
       
   534     {
       
   535     REmailMessageIdArray messageIds;
       
   536     TFolderId folderId;
       
   537     ConvertParamsL( aMailbox, aParam1, aParam2, messageIds, folderId );
       
   538     CleanupClosePushL( messageIds );
       
   539 
       
   540     for ( TInt i = 0; i < iClientObservers.Count(); i++ )
       
   541         {
       
   542         MMailboxContentObserver* observer = iClientObservers[i];
       
   543         if (observer)
       
   544             observer->MessageChangedEventL( aMailbox, messageIds, folderId );
       
   545         }
       
   546     CleanupStack::PopAndDestroy( &messageIds );
       
   547     }
       
   548 
       
   549 // -----------------------------------------------------------------------------
       
   550 //
       
   551 // -----------------------------------------------------------------------------
       
   552 void CEmailMailbox::TObserverEventMapper::MessageDeletedL(
       
   553     TMailboxId aMailbox, TAny* aParam1, TAny* aParam2, TAny* /*aParam3*/ )
       
   554     {
       
   555     REmailMessageIdArray messageIds;    
   519     REmailMessageIdArray messageIds;    
   556     TFolderId folderId;
   520     TFolderId folderId;
   557     ConvertParamsL( aMailbox, aParam1, aParam2, messageIds, folderId );
   521     ConvertParamsL( aMailbox, aParam1, aParam2, messageIds, folderId );
   558     CleanupClosePushL( messageIds );
   522     for ( TInt i = 0; i < iClientObservers.Count(); i++ ) 
   559 
       
   560     for ( TInt i = 0; i < iClientObservers.Count(); i++ )
       
   561         {
   523         {
   562         MMailboxContentObserver* observer = iClientObservers[i];
   524         MMailboxContentObserver* observer = iClientObservers[i];
   563         if (observer)
   525         observer->NewMessageEventL( aMailbox, messageIds, folderId );
   564             observer->MessageDeletedEventL( aMailbox, messageIds, folderId );
   526         }
   565         }
   527     }
   566     
   528 
   567     CleanupStack::PopAndDestroy( &messageIds );
   529 void CEmailMailbox::TObserverEventMapper::MessageChangedL(
   568     }
   530     TMailboxId aMailbox, TAny* aParam1, TAny* aParam2, TAny* /*aParam3*/ )
   569 
   531     {
   570 // -----------------------------------------------------------------------------
   532     REmailMessageIdArray messageIds;    
   571 //
   533     TFolderId folderId;
   572 // -----------------------------------------------------------------------------
   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         }
       
   541     }
       
   542 
       
   543 void CEmailMailbox::TObserverEventMapper::MessageDeletedL(
       
   544     TMailboxId aMailbox, TAny* aParam1, TAny* aParam2, TAny* /*aParam3*/ )
       
   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         }
       
   555     }
       
   556 
   573 void CEmailMailbox::TObserverEventMapper::MessageMoved(
   557 void CEmailMailbox::TObserverEventMapper::MessageMoved(
   574     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   558     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   575     {
   559     {
   576     }
   560     }
   577 
   561 
   578 // -----------------------------------------------------------------------------
       
   579 //
       
   580 // -----------------------------------------------------------------------------
       
   581 void CEmailMailbox::TObserverEventMapper::MessageCopiedL(
   562 void CEmailMailbox::TObserverEventMapper::MessageCopiedL(
   582     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   563     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   583     {
   564     {
   584     }
   565     }
   585 
   566 
   586 // -----------------------------------------------------------------------------
       
   587 //
       
   588 // -----------------------------------------------------------------------------
       
   589 void CEmailMailbox::TObserverEventMapper::NewFolderL(
   567 void CEmailMailbox::TObserverEventMapper::NewFolderL(
   590     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   568     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   591     {
   569     {
   592     }
   570     }
   593 
   571 
   594 // -----------------------------------------------------------------------------
       
   595 //
       
   596 // -----------------------------------------------------------------------------
       
   597 void CEmailMailbox::TObserverEventMapper::FolderChangeL(
   572 void CEmailMailbox::TObserverEventMapper::FolderChangeL(
   598     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   573     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   599     {
   574     {
   600     }
   575     }
   601 
   576 
   602 // -----------------------------------------------------------------------------
       
   603 //
       
   604 // -----------------------------------------------------------------------------
       
   605 void CEmailMailbox::TObserverEventMapper::FoldersDeletedL(
   577 void CEmailMailbox::TObserverEventMapper::FoldersDeletedL(
   606     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   578     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   607     {
   579     {
   608     }
   580     }
   609 
   581 
   610 // -----------------------------------------------------------------------------
       
   611 //
       
   612 // -----------------------------------------------------------------------------
       
   613 void CEmailMailbox::TObserverEventMapper::FoldersMovedL(
   582 void CEmailMailbox::TObserverEventMapper::FoldersMovedL(
   614     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   583     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   615     {
   584     {
   616     }
   585     }
   617 
   586 
   618 // -----------------------------------------------------------------------------
       
   619 //
       
   620 // -----------------------------------------------------------------------------
       
   621 void CEmailMailbox::TObserverEventMapper::ExceptionL(
   587 void CEmailMailbox::TObserverEventMapper::ExceptionL(
   622     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   588     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
   623     {
   589     {
   624     }
   590     }
   625 
   591 
   626 // -----------------------------------------------------------------------------
   592 
   627 //
   593 // -----------------------------------------------------------------------------
   628 // -----------------------------------------------------------------------------
   594 //
   629 TBool CEmailMailbox::TObserverEventMapper::Equals( 
   595 // -----------------------------------------------------------------------------
   630         const MMailboxContentObserver& a1, const MMailboxContentObserver& a2 )
   596 TBool CEmailMailbox::TObserverEventMapper::Equals( const MMailboxContentObserver& a1, const MMailboxContentObserver& a2 )
   631     {
   597     {
   632     return ( &a1 == &a2 );
   598     return ( &a1 == &a2 );
   633     }
   599     }
   634 // -----------------------------------------------------------------------------
   600 
   635 //
   601 
   636 // -----------------------------------------------------------------------------
       
   637 CEmailMailbox::CEmailRequestObserver::CEmailRequestObserver() : iObserver( NULL )
   602 CEmailMailbox::CEmailRequestObserver::CEmailRequestObserver() : iObserver( NULL )
   638     {
   603     {
   639     }
   604     }
   640 
   605 
   641 // -----------------------------------------------------------------------------
   606 
   642 //
   607 void CEmailMailbox::CEmailRequestObserver::RequestResponseL( TFSProgress aEvent, TInt /* aRequestId */ )
   643 // -----------------------------------------------------------------------------
   608 {
   644 void CEmailMailbox::CEmailRequestObserver::RequestResponseL( 
   609     if (aEvent.iProgressStatus == TFSProgress::EFSStatus_RequestComplete)
   645         TFSProgress aEvent, TInt /* aRequestId */ )
       
   646     {
       
   647     if ( iObserver && aEvent.iProgressStatus == TFSProgress::EFSStatus_RequestComplete )
       
   648         {
   610         {
   649         iObserver->MailboxSynchronisedL(aEvent.iError);
   611         iObserver->MailboxSynchronisedL(aEvent.iError);
   650         }
   612         }
   651     }
   613 }
   652 
   614 
   653 // -----------------------------------------------------------------------------
       
   654 //
       
   655 // -----------------------------------------------------------------------------
       
   656 void CEmailMailbox::CEmailRequestObserver::SetObserverL( MMailboxSyncObserver* aObserver )
   615 void CEmailMailbox::CEmailRequestObserver::SetObserverL( MMailboxSyncObserver* aObserver )
   657     {
   616 {
   658     iObserver = aObserver;
   617     iObserver = aObserver;
   659     }
   618 }
   660 
   619 
   661 // End of file
   620 // End of file.
   662 
   621