diff -r 8466d47a6819 -r 12c456ceeff2 emailservices/emailserver/cmailhandlerplugin/src/cmailcpshandler.cpp --- a/emailservices/emailserver/cmailhandlerplugin/src/cmailcpshandler.cpp Thu Dec 17 08:39:21 2009 +0200 +++ b/emailservices/emailserver/cmailhandlerplugin/src/cmailcpshandler.cpp Thu Jan 07 12:38:38 2010 +0200 @@ -115,18 +115,18 @@ // and pass it on to actual publisher interface iLiwIf->SetConfiguration( iSettings->Configuration() ); - const TInt iiMax( iSettings->Mailboxes().Count() ); + TInt iiMax( iSettings->Mailboxes().Count() ); for ( TInt ii = 0; ii < iiMax; ii++ ) { CFSMailBox* mailbox( NULL ); mailbox = MailClient().GetMailBoxByUidL( iSettings->Mailboxes()[ii] ); - TInt id(0); + TInt mailboxId(0); if (mailbox) { - id = mailbox->GetId().Id(); + mailboxId = mailbox->GetId().Id(); } - if ( !id ) + if ( !mailboxId ) { // Remove box from settings iSettings->RemoveMailboxL( ii ); @@ -136,13 +136,24 @@ else { CleanupStack::PushL( mailbox ); - CMailMailboxDetails* mailboxDetails = CreateMailboxDetailsL( *mailbox ); - CleanupStack::PushL( mailboxDetails ); - TBuf cid; - iSettings->GetContentId(id, cid); - mailboxDetails->SetWidgetInstance(cid); - iAccountsArray.AppendL( mailboxDetails ); - CleanupStack::Pop( mailboxDetails ); + TInt id(1); + while (id) + { + CMailMailboxDetails* mailboxDetails = CreateMailboxDetailsL( *mailbox ); + CleanupStack::PushL( mailboxDetails ); + + if (id > 1) + { + iiMax = iiMax - 1; + } + TBuf cid; + id = iSettings->GetContentId(mailboxId, id, cid); + mailboxDetails->SetWidgetInstance(cid); + iAccountsArray.AppendL( mailboxDetails ); + + CleanupStack::Pop( mailboxDetails ); + } + CleanupStack::PopAndDestroy( mailbox ); } }