void CScummVMUi::ConstructL() { BaseConstructL(); TBuf<128> startFile; startFile = iEikonEnv->EikAppUi()->Application()->AppFullName(); TParse parser; parser.Set(startFile,NULL,NULL); startFile = parser.DriveAndPath(); #ifndef __WINS__ startFile.Append( _L("ScummVM.exe")); #else startFile.Append( _L("ScummVM.dll")); #endif CApaCommandLine *cmdLine = CApaCommandLine::NewLC(startFile); RApaLsSession lsSession; lsSession.Connect(); CleanupClosePushL(lsSession); lsSession.StartApp(*cmdLine, iThreadId); CleanupStack::PopAndDestroy();//close lsSession CleanupStack::PopAndDestroy(cmdLine); User::After(500000);// Let the application start TApaTaskList taskList(iEikonEnv->WsSession()); TApaTask myTask = taskList.FindApp(TUid::Uid(0x101f9b57)); myTask.SendToBackground(); TApaTask exeTask = taskList.FindByPos(0); iExeWgId=exeTask.WgId(); exeTask.BringToForeground(); if(iExeWgId == myTask.WgId()) { // Should n't be the same Exit(); } if(iThreadWatch.Open(iThreadId) == KErrNone) { iWatcher = new (ELeave)CScummWatcher; iWatcher->iAppUi = this; iThreadWatch.Logon(iWatcher->iStatus); } }
void PlayerController::GoToNowPlaying() { if (playerLaunched) { //Launch player RWsSession wsSession; User::LeaveIfError( wsSession.Connect() ); TApaTaskList list(wsSession); TApaTask task = list.FindApp(KMusicPlayerAppUid); CMPXParameter* param = new ( ELeave ) CMPXParameter(); CleanupStack::PushL( param ); param->iType.iUid = KMPXPluginTypePlaybackUid; param->iCmdForward = EMPXCmdFwdNone; CBufBase* buffer = CBufFlat::NewL(3 ); CleanupStack::PushL( buffer ); RBufWriteStream writeStream( *buffer ); CleanupClosePushL( writeStream ); param->ExternalizeL( writeStream ); writeStream.CommitL(); buffer->Compress(); CleanupStack::PopAndDestroy( &writeStream ); if ( task.Exists() ) { wsSession.SendMessageToWindowGroup( task.WgId(), KAppUidMusicPlayerX, buffer->Ptr( 0 ) ); } else { RApaLsSession ls; CleanupClosePushL( ls ); User::LeaveIfError( ls.Connect() ); TApaAppInfo appInfo; User::LeaveIfError( ls.GetAppInfo( appInfo, KAppUidMusicPlayerX ) ); CApaCommandLine* apaCommandLine = CApaCommandLine::NewLC(); apaCommandLine->SetExecutableNameL( appInfo.iFullName ); apaCommandLine->SetTailEndL( buffer->Ptr( 0 ) ); User::LeaveIfError( ls.StartApp( *apaCommandLine ) ); CleanupStack::PopAndDestroy(); // apaCommandLine CleanupStack::PopAndDestroy(); // ls } CleanupStack::PopAndDestroy( buffer ); CleanupStack::PopAndDestroy( param ); wsSession.Close(); } else if (radioLaunched) { RApaLsSession ls; CleanupClosePushL( ls ); User::LeaveIfError( ls.Connect() ); TApaAppInfo appInfo; User::LeaveIfError( ls.GetAppInfo( appInfo, KRadioUid ) ); CApaCommandLine* apaCommandLine = CApaCommandLine::NewLC(); apaCommandLine->SetExecutableNameL( appInfo.iFullName ); User::LeaveIfError( ls.StartApp( *apaCommandLine ) ); CleanupStack::PopAndDestroy(); // apaCommandLine CleanupStack::PopAndDestroy(); // ls } }