diff -r e4d7a31227b8 -r 1a6714c53019 fmradio/fmradio/src/fmradiomusicstorehandler.cpp --- a/fmradio/fmradio/src/fmradiomusicstorehandler.cpp Thu Jul 15 18:39:19 2010 +0300 +++ b/fmradio/fmradio/src/fmradiomusicstorehandler.cpp Thu Aug 19 09:55:21 2010 +0300 @@ -44,6 +44,7 @@ const TUint32 KOperatorMusicStoreType = 0x5; const TUint32 KOperatorMusicStoreDisplayName = 0x6; const TUint32 KOperatorMusicStoreNativeUid = 0x7; +const TUint32 KOperatorMusicStoreJavaName = 0x8; const TUint32 KOperatorMusicStoreWebPage = 0x9; const TUint32 KOperatorMusicStoreURI = 0xA; const TInt TUInt32HexLength = 8; @@ -219,8 +220,40 @@ break; } case EFMRadioJavaApp: - // Java application not supported currently + { + TApaAppInfo appInfo; + RBuf operatorJavaAppName; + operatorJavaAppName.CleanupClosePushL(); + operatorJavaAppName.CreateL( appInfo.iCaption.MaxLength() ); // caption length should be enough + + TInt err = aRepository.Get( KOperatorMusicStoreJavaName, operatorJavaAppName ); + + if ( !err ) + { + _LIT( KFakeName, ".fakeapp" ); + RApaLsSession apaSession; + User::LeaveIfError( apaSession.Connect() ); + CleanupClosePushL( apaSession ); + User::LeaveIfError( apaSession.GetAllApps() ); + + while ( apaSession.GetNextApp( appInfo ) == KErrNone ) + { + if ( appInfo.iFullName.Right( 8 ).Compare( KFakeName ) == 0) + { + TApaAppCaption appname; + appname = appInfo.iCaption; + if ( !appInfo.iCaption.Compare( operatorJavaAppName ) ) + { + FTRACE(FPrint(_L("CFMRadioMusicStoreHandler::InitializeParametersL( Operator Java UID found, name: %S)"), &operatorJavaAppName )); + iOperatorJavaMusicStoreUID = appInfo.iUid; + } + } + } + CleanupStack::PopAndDestroy( &apaSession ); // close apaSession + } + CleanupStack::PopAndDestroy( &operatorJavaAppName ); break; + } case EFMRadioWebsite: { const TInt initialSize = 5; @@ -473,37 +506,41 @@ RBuf searchString; searchString.CleanupClosePushL(); - TBool isHandled = ETrue; + TBool isHandled = EFalse; switch( aCommandId ) { case EFMRadioMusicStoreGoogle: case EFMRadioMusicStoreWikipedia: case EFMRadioMusicStoreAmg: case EFMRadioMusicStoreMusicPortl: - isHandled = EFalse; break; case EFMRadioMusicStoreNokiaMusicShop: + isHandled = ETrue; searchString.Assign( NokiaMusicShopSearchL( aTitle, aArtist, aAlbum ) ); break; case EFMRadioMusicStoreOperator: if ( iOperatorStoreWebsite.Length() != 0 ) { + isHandled = ETrue; searchString.CreateL( iOperatorStoreWebsite ); } else if ( iOperatorStoreNativeUID ) { + isHandled = ETrue; // It is assumed that both Nokia Music Shop and operator specific music store use // same kind of interface to communicate searchString.Assign( NokiaMusicShopSearchL( aTitle, aArtist, aAlbum ) ); } + else if ( iOperatorJavaMusicStoreUID.iUid ) + { + isHandled = ETrue; + } else { - isHandled = EFalse; } break; default: FTRACE( FPrint( _L("CFMRadioMusicStoreHandler::LaunchMusicStoreL - Unknown id = %d"), aCommandId ) ); - isHandled = EFalse; break; } @@ -524,8 +561,8 @@ LaunchWebPageL( searchString ); break; } - CleanupStack::PopAndDestroy( &searchString ); } + CleanupStack::PopAndDestroy( &searchString ); } // ----------------------------------------------------------------------------- @@ -534,17 +571,30 @@ // void CFMRadioMusicStoreHandler::LaunchOperatorMusicStoreL( const TDesC& aSearchString ) { + FTRACE(FPrint(_L("CFMRadioMusicStoreHandler::LaunchOperatorMusicStoreL('%S')"), &aSearchString)); if ( iOperatorStoreWebsite.Length() != 0 ) { + FTRACE(FPrint(_L("CFMRadioMusicStoreHandler::LaunchOperatorMusicStoreL Website") )); LaunchWebPageL( aSearchString ); } else if ( iOperatorStoreNativeUID ) { // It is assumed that both Nokia Music Shop and operator specific music store use // same kind of interface to communicate + FTRACE(FPrint(_L("CFMRadioMusicStoreHandler::LaunchOperatorMusicStoreL Operator Native UID") )); TUid musicshopUid( TUid::Uid( iOperatorStoreNativeUID ) ); LaunchMusicShopL( musicshopUid, aSearchString ); } + else if ( iOperatorJavaMusicStoreUID.iUid ) + { + FTRACE(FPrint(_L("CFMRadioMusicStoreHandler::LaunchOperatorMusicStoreL Operator Java UID") )); + TThreadId threadId; + RApaLsSession apaSession; + User::LeaveIfError( apaSession.Connect() ); + CleanupClosePushL( apaSession ); + apaSession.StartDocument( KNullDesC, iOperatorJavaMusicStoreUID, threadId ); + CleanupStack::PopAndDestroy( &apaSession ); // close apaSession + } else { //NOP