diff -r e1b6206813b4 -r f5907b1a1053 emailservices/emailclientapi/src/emailclientapiimpl.cpp --- a/emailservices/emailclientapi/src/emailclientapiimpl.cpp Fri Feb 19 22:37:30 2010 +0200 +++ b/emailservices/emailclientapi/src/emailclientapiimpl.cpp Fri Mar 12 15:41:14 2010 +0200 @@ -24,7 +24,9 @@ #include #include #endif // SYMBIAN_ENABLE_SPLIT_HEADERS - +#include // CCoeEnv +#include // CCoeAppUi +#include #include "emailclientapiimpl.h" #include "emailapiutils.h" #include "emailmailbox.h" @@ -35,6 +37,8 @@ #include "emailmailboxcache.h" #include "FreestyleEmailUiConstants.h" #include "emailclientapi.hrh" +#include "FreestyleEmailCenRepKeys.h" +#include "FreestyleEmailUiConstants.h" // --------------------------------------------------------------------------- // CEmailClientApi::MailboxL // --------------------------------------------------------------------------- @@ -136,17 +140,47 @@ // ----------------------------------------------------------------------------- void CEmailClientApi::LaunchEmailL( const TLaunchPolicy aPolicy ) { - if ( aPolicy != EDefault ) + if ( aPolicy == EShowLastUnseenMailbox) { - // no other launch policies supported - User::Leave( KErrNotSupported ); + CRepository* emailRepository = CRepository::NewL( KFreestyleEmailCenRep ); + CleanupStack::PushL(emailRepository); + TInt numberOfMailboxes(0); + TInt inboxId(0); + TInt pluginId(0); + emailRepository->Get(KNumberOfMailboxesWithNewEmails,numberOfMailboxes); + if(numberOfMailboxes > 0) + { + emailRepository->Get(KNumberOfMailboxesWithNewEmails+(numberOfMailboxes*2-1),pluginId); + emailRepository->Get(KNumberOfMailboxesWithNewEmails+(numberOfMailboxes*2),inboxId); + + TUid pluginUid = {pluginId}; + TMailListActivationData activationData; + + activationData.iMailBoxId.SetId(inboxId); + activationData.iMailBoxId.SetPluginId(pluginUid); + activationData.iFolderId.SetPluginId(pluginUid); + TPckgBuf pkgBuf(activationData); + + CCoeEnv::Static()->AppUi()->CreateActivateViewEventL( + TVwsViewId(KFSEmailUiUid, MailListId), KStartListWithFolderId, + pkgBuf ); + } + else + { + // We should never come here since the mailbox count should be more than 0 if launchemailL is called + // but just to be safe launch the email in launchergrid if something went wrong with the repository + const TUid dummy = {0}; + CCoeEnv::Static()->AppUi()->CreateActivateViewEventL(TVwsViewId(KFSEmailUiUid, AppGridId), + dummy, KNullDesC8() ); + } + CleanupStack::PopAndDestroy();//emailRepository } - const TUid dummy = {0}; - - CVwsSessionWrapper* viewSrvSession = CVwsSessionWrapper::NewLC(); - viewSrvSession->ActivateView(TVwsViewId(KFSEmailUiUid, AppGridId), + else if ( aPolicy == EDefault ) + { + const TUid dummy = {0}; + CCoeEnv::Static()->AppUi()->CreateActivateViewEventL(TVwsViewId(KFSEmailUiUid, AppGridId), dummy, KNullDesC8() ); - CleanupStack::PopAndDestroy(); + } } // -----------------------------------------------------------------------------