videoplayerapp/videoplayerlauncher/src/videoplayerlauncher.cpp
changeset 0 96612d01cf9f
--- /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;
+    }