--- /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 <apgtask.h>
+#include <apgcli.h>
+#include <apaid.h>
+#include <apacmdln.h>
+#include <centralrepository.h>
+
+#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<KVideoPlayerWgNameSize> 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;
+ }