diff -r 000000000000 -r 96612d01cf9f videoplayerapp/videoplayerlauncher/src/videoplayerlauncher.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayerapp/videoplayerlauncher/src/videoplayerlauncher.cpp Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,131 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Main application class +* +*/ + +// Version : %version: da1mmcf#3 % + +// Command Line and APA +#include +#include +#include +#include +#include + +#include "mpxvideo_debug.h" +#include "videoplayerpskeys.h" + +const TInt KVcxMatrixUid = 0x101F4CD2; +const TUint KVideoPlayerWgNameSize = 50; + +_LIT8( KVcxVideoSuiteActivationMessage, "mm://tvvideosuite?exit=hide" ); +_LIT( KVideoPlayerWgName, "*200159b2*"); + +// ----------------------------------------------------------------------------- +// LaunchMenuViewL +// ----------------------------------------------------------------------------- +// +void LaunchMenuViewL( const TDesC8& aMessage ) + { + MPX_ENTER_EXIT(_L("VideoPlayerLauncher LaunchMenuViewL()")); + RWsSession wsSession; + User::LeaveIfError( wsSession.Connect() ); + CleanupClosePushL( wsSession ); + + TApaTaskList taskList( wsSession ); + TApaTask task = taskList.FindApp( TUid::Uid( KVcxMatrixUid ) ); + + if ( task.Exists() ) + { + // Matrix is already running in background - send APA Message + task.SendMessage( TUid::Uid( KUidApaMessageSwitchOpenFileValue ), aMessage ); + } + else + { + // Matrix not running yet - use Command Line Tail + RApaLsSession appArcSession; + CleanupClosePushL( appArcSession ); + User::LeaveIfError( appArcSession.Connect() ); + TApaAppInfo appInfo; + TInt err = appArcSession.GetAppInfo( appInfo, TUid::Uid( KVcxMatrixUid ) ); + if ( err == KErrNone ) + { + CApaCommandLine* cmdLine = CApaCommandLine::NewLC(); + cmdLine->SetExecutableNameL( appInfo.iFullName ); + cmdLine->SetCommandL( EApaCommandRun ); + cmdLine->SetTailEndL( aMessage ); + + appArcSession.StartApp( *cmdLine ); + CleanupStack::PopAndDestroy( cmdLine ); + } + CleanupStack::PopAndDestroy( &appArcSession ); + } + + CleanupStack::PopAndDestroy( &wsSession ); + } + +// --------------------------------------------------------------------------- +// CVideoActionHandler::TryBringToForegroundL +// --------------------------------------------------------------------------- +// +TInt TryBringToForegroundL() + { + TInt ret ( KErrNotFound ); + RWsSession session; + User::LeaveIfError( session.Connect() ); + CleanupClosePushL( session ); + + TInt ourWgId( 0 ); + TInt error = RProperty::Get( KVideoPlayerRPropertyCategory, KVideoPlayerRPropertyWGIdKey, ourWgId ); + + if( error == KErrNone && ourWgId != 0 ) + { + TBuf wgName; + session.GetWindowGroupNameFromIdentifier(ourWgId, wgName ); + + if( wgName.MatchF( KVideoPlayerWgName ) != KErrNotFound ) + { + ret = session.SetWindowGroupOrdinalPosition( ourWgId, 0 ); + } + } + + CleanupStack::PopAndDestroy( &session ); + return ret; + } + +// ----------------------------------------------------------------------------- +// E32Main +// ----------------------------------------------------------------------------- +// +GLDEF_C TInt E32Main() + { + __UHEAP_MARK; + // create cleanup stack + CTrapCleanup* cleanup = CTrapCleanup::New(); + + TInt broughtToForegrondResp( KErrGeneral ); + + TRAP_IGNORE( broughtToForegrondResp = TryBringToForegroundL() ); + + if ( broughtToForegrondResp != KErrNone ) + { + TRAP_IGNORE( LaunchMenuViewL( KVcxVideoSuiteActivationMessage ) ); + } + + // destroy cleanup stack + delete cleanup; + __UHEAP_MARKEND; + return 0; + }