diff -r 12c456ceeff2 -r 5253a20d2a1e emailuis/emailui/src/freestyleemailuimailboxdeleter.cpp --- a/emailuis/emailui/src/freestyleemailuimailboxdeleter.cpp Thu Jan 07 12:38:38 2010 +0200 +++ b/emailuis/emailui/src/freestyleemailuimailboxdeleter.cpp Mon Jan 18 20:08:26 2010 +0200 @@ -67,12 +67,19 @@ void CFSEmailUiMailboxDeleter::ConstructL() { FUNC_LOG; + iIdle = CIdle::NewL (CIdle::EPriorityIdle); } CFSEmailUiMailboxDeleter::~CFSEmailUiMailboxDeleter() { FUNC_LOG; delete iWaitDialog; + iMailboxesToDelete.Close(); + if (iIdle) + { + iIdle->Cancel(); + delete iIdle; + } } @@ -461,7 +468,8 @@ if( iMailboxesToDelete.Count() > 0 ) { // Delete next mailbox in queue. - DoDeleteNextMailboxL(); + iIdle->Cancel(); + iIdle->Start(TCallBack(IdleCallbackL,this)); } else { @@ -502,5 +510,16 @@ iMailboxDeleteOperationId = iMailClient.DeleteMailBoxByUidL( nextToDelete, *this ); } +// --------------------------------------------------------------------------- +// IdleCallback +// --------------------------------------------------------------------------- +// +TInt CFSEmailUiMailboxDeleter::IdleCallbackL(TAny* aPtr) + { + TRAPD( leaveErr, + static_cast + (aPtr)->DoDeleteNextMailboxL(); ); + return leaveErr; + } // End of file