diff -r 2666d9724c76 -r d4f567ce2e7c phonebookui/Phonebook2/xSPExtensionManager/src/CxSPViewActivator.cpp --- a/phonebookui/Phonebook2/xSPExtensionManager/src/CxSPViewActivator.cpp Thu Jul 15 18:22:55 2010 +0300 +++ b/phonebookui/Phonebook2/xSPExtensionManager/src/CxSPViewActivator.cpp Thu Aug 19 09:41:07 2010 +0300 @@ -21,6 +21,7 @@ #include "CxSPViewActivator.h" #include #include "CxSPViewInfo.h" +#include // System includes @@ -137,17 +138,34 @@ newViewId = viewID; } - aMessage.Complete(err); + // If err is KErrNone or KErrNotFound, complete client's request with KErrNone. + // The reason is even if client passed an invalid view id to xsp server, + // the server will launch phonebook namelist view instead. + if ( KErrNone == err || KErrNotFound == err ) + { + aMessage.Complete( KErrNone ); + } + else + { + aMessage.Complete( err ); + } - if(err == KErrNone) + if( err == KErrNone ) { // Make view id - const TVwsViewId viewId(TUid::Uid(KUid), TUid::Uid(newViewId)); + const TVwsViewId viewId( TUid::Uid( KUid ), TUid::Uid( newViewId ) ); // Activate the view static_cast(CCoeEnv::Static()->AppUi())->ActivateViewL( viewId, CPbk2ViewState::Uid(), *paramBuf); } - + else if ( err == KErrNotFound ) + { + // Activate phonebook namelist view if valid view id can't be found + const TVwsViewId viewId( TUid::Uid( KUid ), TUid::Uid( EPbk2NamesListViewId ) ); + static_cast( CCoeEnv::Static()->AppUi() )->ActivateViewL( + viewId, CPbk2ViewState::Uid(), *paramBuf ); + } + CleanupStack::PopAndDestroy(); // paramBuf; } }