diff -r 000000000000 -r dd21522fd290 browserutilities/schemehandler/SchemeDispatcher/src/MmsHandler.cpp --- /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 // For REComSession +#include +#include +#include +#include +#include +#include +#include +#include + +// ================= 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" ); + } +