browserutilities/schemehandler/SchemeDispatcher/src/MmsHandler.cpp
changeset 0 dd21522fd290
child 37 cb62a4f66ebe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browserutilities/schemehandler/SchemeDispatcher/src/MmsHandler.cpp	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,183 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: 
+*      Implementation of Scheme handler interface implementation for mms:// scheme
+*      
+*
+*/
+
+
+// INCLUDE FILES
+
+#include "MmsHandler.h"
+#include "SchemeDispLogger.h"
+#include <ECom.h>		// For REComSession
+#include <eikenv.h>
+#include <DocumentHandler.h>
+#include <apgcli.h>
+#include <apparc.h>
+#include <eikdoc.h>
+#include <eikproc.h>
+#include <f32file.h>
+#include <AknLaunchAppService.h>
+
+// ================= CONSTANTS =======================
+
+LOCAL_C const TUid KUidMediaPlayer = { 0x10005A3E };
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CMmsHandler::NewL()
+// ---------------------------------------------------------
+//
+CMmsHandler* CMmsHandler::NewL( const TDesC& aUrl )
+	{
+	CLOG_ENTERFN( "CMmsHandler::NewL()" );
+
+	CMmsHandler* self=new(ELeave) CMmsHandler();
+	CleanupStack::PushL(self);
+	self->ConstructL( aUrl );
+	CleanupStack::Pop(self);
+
+	CLOG_LEAVEFN( "CMmsHandler::NewL()" );
+
+	return self;
+	}
+
+// ---------------------------------------------------------
+// CMmsHandler::~CMmsHandler()
+// ---------------------------------------------------------
+//
+CMmsHandler::~CMmsHandler()
+	{
+	CLOG_ENTERFN( "CMmsHandler::~CMmsHandler()" );
+
+	if(iDoc != NULL)
+		{
+		CEikProcess*  hostProcess = CEikonEnv::Static()->Process();
+		hostProcess->DestroyDocument(iDoc);
+		iDoc = NULL;
+		}
+		
+	if( iLaunchAppService )
+		{
+		delete iLaunchAppService;
+		}		
+
+	CLOG_LEAVEFN( "CMmsHandler::~CMmsHandler()" );
+	}
+
+// ---------------------------------------------------------
+// CMmsHandler::CMmsHandler()
+// ---------------------------------------------------------
+//
+CMmsHandler::CMmsHandler() : CBaseHandler()
+	{
+	// Deliberately do nothing here : See ConstructL() for initialisation completion.
+	}
+
+// ---------------------------------------------------------
+// CMmsHandler::ConstructL()
+// ---------------------------------------------------------
+//
+void CMmsHandler::ConstructL( const TDesC& aUrl )
+	{
+	BaseConstructL( aUrl );
+
+	iSync = EFalse;
+	}
+
+// ---------------------------------------------------------
+// CMmsHandler::HandleUrlEmbeddedL()
+// ---------------------------------------------------------
+//
+void CMmsHandler::HandleUrlEmbeddedL()
+    {
+    CLOG_ENTERFN( "CMmsHandler::HandleUrlEmbeddedL()" );
+
+    /* Launch the appropriate application in embedded mode */
+    
+    CAiwGenericParamList* paramList = CAiwGenericParamList::NewLC();
+
+    TAiwVariant filename( iParsedUrl );
+    TAiwGenericParam param( EGenericParamFile, filename );
+    paramList->AppendL( param );    
+
+    // Allow save among Options
+    TBool allowSave( ETrue );
+    TAiwVariant allowSaveVariant( allowSave );
+    TAiwGenericParam genericParamAllowSave
+                     ( EGenericParamAllowSave, allowSaveVariant );
+    paramList->AppendL( genericParamAllowSave );
+
+    // If iParamList is not empty, let's get it and attach to the paramlist 
+    if (iParamList)
+    {
+    	paramList->AppendL(*iParamList);  
+    }
+
+
+    iLaunchAppService = 
+        CAknLaunchAppService::NewL( KUidMediaPlayer, this, paramList );
+    iSync = ETrue;
+    iWait.Start();
+    CleanupStack::PopAndDestroy( paramList );   
+
+    CLOG_LEAVEFN( "CMmsHandler::HandleUrlEmbeddedL()" );
+    }
+
+// ---------------------------------------------------------
+// CMmsHandler::HandleUrlStandaloneL()
+// ---------------------------------------------------------
+//
+void CMmsHandler::HandleUrlStandaloneL()
+	{
+	CLOG_ENTERFN( "CMmsHandler::HandleUrlStandaloneL()" );
+
+	RApaLsSession appArcSession;
+	User::LeaveIfError( appArcSession.Connect() );
+	TThreadId id;
+
+	appArcSession.StartDocument( iParsedUrl->Des(), KUidMediaPlayer , id );
+
+	appArcSession.Close();
+
+	CLOG_LEAVEFN( "CMmsHandler::HandleUrlStandaloneL()" );
+	}
+		
+// ---------------------------------------------------------
+// CMmsHandler::HandleServerAppExit()
+// ---------------------------------------------------------
+//
+void CMmsHandler::HandleServerAppExit(TInt aReason)
+	{
+	CLOG_ENTERFN( "CMmsHandler::HandleServerAppExit" );
+
+	if( iSync )
+		{
+	    if( iWait.IsStarted() )
+            {
+            iWait.AsyncStop();   // stop the wait loop.                                  
+            }                    // Now DoMakeCallL will return
+		}
+
+	if( NULL != iSchemeDoc )
+		{
+	    iSchemeDoc->HandleServerAppExit( aReason );
+		}
+
+	CLOG_LEAVEFN( "CMmsHandler::HandleServerAppExit" );	
+	}
+