diff -r 000000000000 -r 96612d01cf9f videoplayerapp/mpxvideoplayer/src/mpxvideoembeddedpdlhandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayerapp/mpxvideoplayer/src/mpxvideoembeddedpdlhandler.cpp Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,205 @@ +/* +* Copyright (c) 2008 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: Handles PDL commands passed in by other appilcations + * +*/ + +// Version : %version: 10 % + + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "mpxvideoembeddedpdlhandler.h" +#include "mpxvideoplayerappuiengine.h" +#include "mpxvideoplayerconstants.h" +#include +#include "mpxvideo_debug.h" + +CMpxVideoEmbeddedPdlHandler* +CMpxVideoEmbeddedPdlHandler::NewL( CMpxVideoPlayerAppUiEngine* aAppUiEngine ) +{ + MPX_ENTER_EXIT(_L("CMpxVideoEmbeddedPdlHandler::NewL()")); + + CMpxVideoEmbeddedPdlHandler* self = new ( ELeave ) CMpxVideoEmbeddedPdlHandler( aAppUiEngine ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; +} + +// ------------------------------------------------------------------------------------------------- +// C++ constructor can NOT contain any code that might leave. +// ------------------------------------------------------------------------------------------------- +// +CMpxVideoEmbeddedPdlHandler::CMpxVideoEmbeddedPdlHandler( CMpxVideoPlayerAppUiEngine* aAppUiEngine ) + : iAppUiEngine( aAppUiEngine ) +{ +} + +// ------------------------------------------------------------------------------------------------- +// Destructor. +// ------------------------------------------------------------------------------------------------- +// +CMpxVideoEmbeddedPdlHandler::~CMpxVideoEmbeddedPdlHandler() +{ + MPX_ENTER_EXIT(_L("CMpxVideoEmbeddedPdlHandler::~CMpxVideoEmbeddedPdlHandler()")); + + if ( iDownloadFileName ) + { + delete iDownloadFileName; + iDownloadFileName = NULL; + } +} + +// ------------------------------------------------------------------------------------------------- +// Symbian 2nd phase constructor can leave. +// ------------------------------------------------------------------------------------------------- +// +void CMpxVideoEmbeddedPdlHandler::ConstructL() +{ +} + +// ------------------------------------------------------------------------------------------------- +// CMpxVideoEmbeddedPdlHandler::ConnectToEmbeddedDownloadL() +// ------------------------------------------------------------------------------------------------- +// +void CMpxVideoEmbeddedPdlHandler::ConnectToEmbeddedDownloadL( TInt aDlId, TDesC& aFileName ) +{ + MPX_ENTER_EXIT(_L("CMpxVideoEmbeddedPdlHandler::ConnectToEmbeddedDownloadL()"), + _L("aDlId = %d, aFileName = %S"), aDlId, &aFileName ); + + iEmbeddedPdlCase = ETrue; + + if ( iDownloadFileName ) + { + // + // Check if this is the same download that is loaded + // If it is, issue a play command to resume playback + + if ( ( aDlId == iDownloadId ) && ( ! aFileName.Compare( *iDownloadFileName ) ) ) + { + iAppUiEngine->PlaybackUtility()->CommandL( EPbCmdPlay ); + } + else + { + // + // New download received, close old playback plugin + // + iAppUiEngine->PlaybackUtility()->CommandL( EPbCmdClose ); + + StartNewDownloadL( aDlId, aFileName ); + } + } + else + { + StartNewDownloadL( aDlId, aFileName ); + } +} + +// ------------------------------------------------------------------------------------------------- +// CMpxVideoEmbeddedPdlHandler::ConnectToCollectionDownloadL() +// ------------------------------------------------------------------------------------------------- +// +void CMpxVideoEmbeddedPdlHandler::ConnectToCollectionDownloadL( TInt aDlId, TDesC& aFileName ) +{ + MPX_ENTER_EXIT(_L("CMpxVideoEmbeddedPdlHandler::ConnectToCollectionDownloadL()"), + _L("aDlId = %d, aFileName = %S"), aDlId, &aFileName ); + + iEmbeddedPdlCase = EFalse; + + // + // The playback plugin will not be loaded for collection downloads + // + StartNewDownloadL( aDlId, aFileName ); +} + +// ------------------------------------------------------------------------------------------------- +// CMpxVideoEmbeddedPdlHandler::StartNewDownloadL() +// ------------------------------------------------------------------------------------------------- +// +void CMpxVideoEmbeddedPdlHandler::StartNewDownloadL( TInt aDlId, TDesC& aFileName ) +{ + MPX_ENTER_EXIT(_L("CMpxVideoEmbeddedPdlHandler::StartNewDownloadL()"), + _L("aDlId = %d, aFileName = %S"), aDlId, &aFileName ); + + // + // Save the download parameters + // + iDownloadId = aDlId; + delete iDownloadFileName; + iDownloadFileName = NULL; + iDownloadFileName = aFileName.AllocL(); + + // + // Create the Playback Utility + // + iAppUiEngine->CreateEmbeddedPdlPlaybackUtilityMemberVariablesL(); + + SendPdlCustomCommandL( EPbCmdStartPd, iDownloadId ); + + iAppUiEngine->InitializeFileL( *iDownloadFileName ); +} + +// ------------------------------------------------------------------------------------------------- +// CMpxVideoEmbeddedPdlHandler::SendPdlCustomCommandL() +// ------------------------------------------------------------------------------------------------- +// +void CMpxVideoEmbeddedPdlHandler::SendPdlCustomCommandL( TMPXPlaybackPdCommand aCustomCmd, + TInt aData ) +{ + MPX_ENTER_EXIT(_L("CMpxVideoEmbeddedPdlHandler::SendPdlCustomCommandL"), + _L("aCustomCmd = %d, aData = %d"), aCustomCmd, aData ); + + CMPXCommand* cmd = CMPXCommand::NewL(); + CleanupStack::PushL( cmd ); + + cmd->SetTObjectValueL( KMPXCommandGeneralDoSync, ETrue ); + cmd->SetTObjectValueL( KMPXCommandGeneralId, KMPXCommandIdPlaybackPD ); + cmd->SetTObjectValueL( KMPXCommandPlaybackGeneralType, aCustomCmd ); + cmd->SetTObjectValueL( KMPXCommandPlaybackPDTransactionID, aData ); + cmd->SetTextValueL( KMPXMediaVideoPlaybackFileName, *iDownloadFileName ); + cmd->SetTObjectValueL( KMPXMediaVideoMovePdlFile, iEmbeddedPdlCase ); + + iAppUiEngine->PlaybackUtility()->CommandL( *cmd ); + + CleanupStack::PopAndDestroy( cmd ); +} + +// ------------------------------------------------------------------------------------------------- +// CMpxVideoEmbeddedPdlHandler::ClearPdlInformation() +// ------------------------------------------------------------------------------------------------- +// +void CMpxVideoEmbeddedPdlHandler::ClearPdlInformation() +{ + MPX_ENTER_EXIT(_L("CMpxVideoEmbeddedPdlHandler::ClearPdlInformation")); + + if ( iDownloadFileName ) + { + delete iDownloadFileName; + iDownloadFileName = NULL; + } + + iDownloadId = KErrNotFound; +} + +// EOF