--- a/upnpframework/upnpaiwprovider/src/upnpaiwplayonexternalbaseservice.cpp Mon Nov 01 13:44:24 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,339 +0,0 @@
-/*
-* Copyright (c) 2005-2007 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: Implementation of the UpnpAiwPlayOnExternalBaseService
-*
-*/
-
-
-#include <AiwMenu.h>
-#include <AiwCommon.hrh>
-#include <aknnotewrappers.h>
-#include "upnpaiwengine.h"
-#include "upnpaiwplayonexternalbaseservice.h"
-#include "upnpdrmfilter.h"
-
-_LIT( KComponentLogfile, "upnpaiwprovider.log" );
-#include "upnplog.h"
-
-// --------------------------------------------------------------------------
-// CUPnPAiwPlayOnExternalBaseService::NewL
-// NewL.
-// --------------------------------------------------------------------------
-CUPnPAiwPlayOnExternalBaseService* CUPnPAiwPlayOnExternalBaseService::NewL()
- {
- __LOG( "[UpnpAiwProvider]\t CUPnPAiwPlayOnExternalBaseService::NewL" );
-
- CUPnPAiwPlayOnExternalBaseService* self =
- new (ELeave) CUPnPAiwPlayOnExternalBaseService;
- CleanupStack::PushL( self );
-
- self->ConstructL();
-
- CleanupStack::Pop( self );
- return self;
- }
-
-// --------------------------------------------------------------------------
-// CUPnPAiwPlayOnExternalBaseService::CUPnPAiwPlayOnExternalBaseService
-// Constructor.
-// --------------------------------------------------------------------------
-CUPnPAiwPlayOnExternalBaseService::CUPnPAiwPlayOnExternalBaseService()
- {
- __LOG( "[UpnpAiwProvider]\t CUPnPAiwPlayOnExternalBaseService::\
-CUPnPAiwPlayOnExternalBaseService" );
- }
-
-// --------------------------------------------------------------------------
-// CUPnPAiwPlayOnExternalBaseService::~CUPnPAiwPlayOnExternalBaseService
-// Destructor.
-// --------------------------------------------------------------------------
-CUPnPAiwPlayOnExternalBaseService::~CUPnPAiwPlayOnExternalBaseService()
- {
- __LOG( "[UpnpAiwProvider]\t CUPnPAiwPlayOnExternalBaseService::\
-~CUPnPAiwPlayOnExternalBaseService" );
-
- // Empty the file name array and close it
- EmptyFileNameArray();
- iFileNames.Close();
-
- // Delete the filename of the file that is played
- delete iFileName;
- iFileName = NULL;
-
- // Set the client call back reference to NULL
- iClient = NULL;
-
- // Release the engine instance
- if( iEngine )
- {
- CUPnPAiwEngine::ReleaseInstance();
- iEngine = NULL;
- }
-
- // Release the DRM filter AO
- delete iActiveDrmFilter;
- }
-
-// --------------------------------------------------------------------------
-// CUPnPAiwPlayOnExternalBaseService::ConstructL
-// Second phase constructor.
-// --------------------------------------------------------------------------
-void CUPnPAiwPlayOnExternalBaseService::ConstructL()
- {
- __LOG( "[UpnpAiwProvider]\t CUPnPAiwPlayOnExternalBaseService::\
-ConstructL" );
-
- // Create the engine and register as an observer for call backs
- iEngine = CUPnPAiwEngine::NewL();
- }
-
-// --------------------------------------------------------------------------
-// CUPnPAiwPlayOnExternalBaseService::HandleServiceCmdL
-// AIW Framework's method for handling service commands
-// --------------------------------------------------------------------------
-void CUPnPAiwPlayOnExternalBaseService::HandleServiceCmdL(
- const TInt& aCmdId,
- const CAiwGenericParamList& aInParamList,
- CAiwGenericParamList& aOutParamList,
- TUint /*aCmdOptions*/,
- const MAiwNotifyCallback* aCallback )
- {
- __LOG( "[UpnpAiwProvider]\t CUPnPAiwPlayOnExternalBaseService::\
-HandleServiceCmdL" );
-
- // Cast the aCallback reference to non-const and store the reference
- iClient = const_cast<MAiwNotifyCallback*>(aCallback);
-
- // Empty the file name array
- EmptyFileNameArray();
-
- // Get the file name parameters
- if( aInParamList.Count() > 0 )
- {
- for( TInt index = 0; index < aInParamList.Count(); index++ )
- {
- if ( aInParamList[index].SemanticId() == EGenericParamFile )
- {
- // Store the file name in the array
- HBufC* fileName = HBufC::NewLC(
- aInParamList[index].Value().AsDes().Length() );
- fileName->Des().Append(
- aInParamList[index].Value().AsDes() );
- iFileNames.AppendL( fileName );
- CleanupStack::Pop( fileName );
- }
- }
- }
-
- // Process the command only if the command ID matches
- if( aCmdId == KAiwCmdUPnPPlay )
- {
- if( iEngine )
- {
- if( iFileNames.Count() == 1 )
- {
-
- // Filter out the DRM protected files
- RPointerArray<TDesC16> drmFiles;
-
- iActiveDrmFilter = CUpnpDrmFilter::NewL( iFileNames,
- drmFiles );
-
- iActiveDrmFilter->FilterDrmL();
-
- TInt returnValue = KErrArgument;
- if( iFileNames.Count() == 1 )
- {
- // Delete and reallocate the filename of the file that is
- // going to be played
- delete iFileName; iFileName = NULL;
- iFileName = iFileNames[0]->AllocL();
-
- // Register to observe the Engine call backs and then call
- // Play on UPnP AIW Engine
- iEngine->SetEngineObserver( this );
- TRAP( returnValue, iEngine->PlayL( *iFileNames[0] ) );
- }
-
- // If there were DRM protected files, return code is
- // KErrAccessDenied
- if( drmFiles.Count() > 0 )
- {
- returnValue = KErrAccessDenied;
- }
-
- // Add the return value on the out param list
- TAiwGenericParam statusParameter(
- EGenericParamError,
- returnValue );
- aOutParamList.AppendL( statusParameter );
-
- // Add the drm protected files into the outparameter list
- for( TInt index=0; index<drmFiles.Count(); index++ )
- {
- if( drmFiles[index] )
- {
- // Create TAIWGenericParam for the filename
- TFileName fileName( *drmFiles[index] );
- TAiwGenericParam fileParameter(
- EGenericParamFile,
- fileName );
-
- // Append the file filename param on the out list
- aOutParamList.AppendL( fileParameter );
-
- // Clean up
- // Delete the file name item from the array
- delete drmFiles[index];
- drmFiles[index] = NULL;
- }
- }
-
- // Clean up the drm files array
- drmFiles.Reset();
- drmFiles.Close();
-
- // In case of play, the file item is not removed from the
- // list if the play operation fails, so in this case the list
- // can be just emptied, no need to append the items on
- // the outparam list.
- EmptyFileNameArray();
-
- delete iActiveDrmFilter;
- iActiveDrmFilter = NULL;
- }
- else
- {
- __LOG( "[UpnpAiwProvider]\t CUPnPAiwPlayOnExternalBaseService, \
-invalid number of files!" );
- }
- }
- else
- {
- __LOG( "[UpnpAiwProvider]\t CUPnPAiwPlayOnExternalBaseService, \
-engine is dead!" );
- }
- }
- }
-
-// --------------------------------------------------------------------------
-// CUPnPAiwPlayOnExternalBaseService::EmptyFileNameArray
-// Empties the file name array (data member variable).
-// --------------------------------------------------------------------------
-void CUPnPAiwPlayOnExternalBaseService::EmptyFileNameArray()
- {
- __LOG( "[UpnpAiwProvider]\t CUPnPAiwPlayOnExternalBaseService::\
-HandleServiceCmdL" );
-
- // delete the list of file names and close the file name array
- for( TInt index=0; index<iFileNames.Count(); index++ )
- {
- delete iFileNames[index];
- iFileNames[index] = NULL;
- }
- iFileNames.Reset();
- }
-
-// --------------------------------------------------------------------------
-// CUPnPAiwPlayOnExternalBaseService::PlayCompleteL
-// Indicates that the play operation is complete.
-// --------------------------------------------------------------------------
-void CUPnPAiwPlayOnExternalBaseService::PlayCompleteL( TInt aStatus )
- {
- __LOG( "[UpnpAiwProvider]\t CUPnPAiwPlayOnExternalBaseService::\
-PlayCompleteL" );
-
- // If there is a client that has registered as an observer
- if( iClient )
- {
- if( iFileName )
- {
-
- // Create parameter lists
- CAiwGenericParamList* eventParamList =
- CAiwGenericParamList::NewLC();
- CAiwGenericParamList* inParamList =
- CAiwGenericParamList::NewLC();
-
- // Create TAIWGenericParam for the filename
- TFileName fileName( *iFileName );
- TAiwGenericParam fileParameter( EGenericParamFile, fileName );
-
- // Append the file filename param on the out list
- eventParamList->AppendL( fileParameter );
-
- // Convert the error code into AIW event code
- TInt eventCode;
- if( aStatus == KErrNone )
- {
- eventCode = KAiwEventCompleted;
- }
- else
- {
- eventCode = KAiwEventError;
- }
-
- // Make the call back
- iClient->HandleNotifyL( KAiwCmdUPnPPlay,
- eventCode,
- *eventParamList,
- *inParamList );
-
- // Clean up
- CleanupStack::PopAndDestroy( inParamList );
- inParamList = NULL;
- CleanupStack::PopAndDestroy( eventParamList );
- eventParamList = NULL;
- delete iFileName;
- iFileName = NULL;
-
- }
- }
- }
-
-// --------------------------------------------------------------------------
-// CUPnPAiwPlayOnExternalBaseService::ConnectionLostL
-// Indicates that the connection with the target UPnP device has
-// been lost.
-// --------------------------------------------------------------------------
-void CUPnPAiwPlayOnExternalBaseService::ConnectionLostL()
- {
- __LOG( "[UpnpAiwProvider]\t CUPnPAiwPlayOnExternalBaseService::\
-ConnectionLostL" );
-
- // If there is a client that has registered as an observer
- if( iClient )
- {
- // Create parameter lists
- CAiwGenericParamList* emptyParamlist = CAiwGenericParamList::NewLC();
-
- TInt eventCode = KAiwEventStopped;
-
- // Make the call back
- iClient->HandleNotifyL( KAiwCmdUPnPPlay,
- eventCode,
- *emptyParamlist,
- *emptyParamlist );
-
- // Clean up
- CleanupStack::PopAndDestroy( emptyParamlist );
- emptyParamlist = NULL;
- if( iEngine )
- {
- iEngine->RemoveEngineObserver();
- }
- }
- }
-
-// End of file