diff -r 6369bfd1b60d -r 08b5eae9f9ff upnpsharing/upnpcontentserver/src/upnpcontentsharingao.cpp --- a/upnpsharing/upnpcontentserver/src/upnpcontentsharingao.cpp Mon Nov 01 13:44:24 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1972 +0,0 @@ -/* -* Copyright (c) 2006-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: CUpnpContentSharingAo class implementation - * -*/ - - - - - - -// Include Files -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "upnpcommonutils.h" // FindContainerByTitle -#include "upnpcdsreselementutility.h" -// CLF headers -#include -#include -#include -#include - -//#include - -#include - -#include "upnpcontentsharingao.h" -#include "upnpcontentmetadatautility.h" -#include "upnpselectionwriter.h" -#include "upnpcontainercheckerao.h" -#include "upnpcontentserverdefs.h" -#include "upnpunsharerao.h" - -_LIT( KComponentLogfile, "contentserver.txt"); -#include "upnplog.h" - -// FORWARD DECLARATIONS -class UPnPCommonUtils; - -// CONSTANTS - -const TInt KUiSelectionOffset = 2; -const TInt KDefaultGranularity( 10 ); - -// KContentDirCommitAmount should be in sync with KCommitEveryNum in -// upnpcontentdirectoryglobals.h which is not exported -const TInt KContentDirCommitAmount = 10; - -using namespace UpnpContentServer; - -// ============================ MEMBER FUNCTIONS ============================= - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::CUpnpContentSharingAo -// C++ default constructor can NOT contain any code, that -// might leave. -// -------------------------------------------------------------------------- -// -CUpnpContentSharingAo::CUpnpContentSharingAo( - MUpnpSharingCallback* aEngine, - CUpnpContentMetadataUtility* aMetadata ) - : CActive( CActive::EPriorityStandard ) - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - - iEngine = aEngine; - iMetadataUtility = aMetadata; - iContainerId = KErrNotFound; - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - } - - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::NewL -// Two-phased constructor. -// -------------------------------------------------------------------------- -// -CUpnpContentSharingAo* CUpnpContentSharingAo::NewL( - MUpnpSharingCallback* aEngine, - CUpnpContentMetadataUtility* aMetadata ) - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - - CUpnpContentSharingAo* self = new (ELeave) - CUpnpContentSharingAo( aEngine, aMetadata ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - return self; - } - - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::ConstructL -// Symbian 2nd phase constructor can leave. -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::ConstructL() - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - - iContainerIdx = 0; - iObjectIdx = 0; - iVideoIndex = 0; - iImageIndex = 0; - iAllVideosShared = EFalse; - iAllImagesShared = EFalse; - - CActiveScheduler::Add( this ); - - iFileSharing = CUpnpFileSharing::NewL(); - ConnectMediaServer(); - iWriter = CUpnpSelectionWriter::NewL( iContainerType ); - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - } - - -// Destructor -CUpnpContentSharingAo::~CUpnpContentSharingAo() - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - - iMediaServer.Close(); - delete iFileSharing; - iFileSharing = NULL; - - - if ( IsActive() ) - { - __LOG1("CUpnpContentSharingAo destructor IsActive==\ -true iSharingState: %d", iSharingState ); - iSharingState = ENotActive; - TRequestStatus* stat = &iStatus; - User::RequestComplete( stat, KErrNone ); - } - - Cancel(); - iEngine = NULL; - iContainerIds = NULL; - - delete iTmpContainer; - delete iSharedContainerIds; - delete iWriter; - DeleteListUpnpObject(); - delete iFileNameArr; - delete iTmpItem; - delete iPlaylists; - delete iCollections; - - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::RunL -// Called when asyncronous request is ready -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::RunL() - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - - __LOG8_1( "iStatus", iStatus.Int() ); - if ( iStatus.Int() == KErrCorrupt || - iStatus.Int() == KErrDiskFull || - iStatus.Int() == KErrNoMemory ) - { - iSharingState = ENotActive; - } - if ( iStopRequested == MUpnpSharingCallback::ESharingPause ) - { - TInt err = iMediaServer.Stop( - RUpnpMediaServerClient::EStopSilent ); - __LOG1( "Error: %d", err ); - err = iMediaServer.StartOffline(); - __LOG1( "Error: %d", err ); - - iStopRequested = MUpnpSharingCallback::ESharingNoStop; - } - - switch ( iSharingState ) - { - case EUnshareContainers : - { - // Unshare the container structure - UnshareContainersL(); - } - break; - case EShareContainers : - { - // Share the container structure - ShareContainersL(); - } - break; - case EShareContainersResult : - { - // advance to next container or share items - ShareContainersResultL(); - } - break; - case EShareItems : - { - // coming here after all containers are shared - // then at least once per container - HandleSharingSubstatesL(); - } - break; - case EShareItemsResult : - { - // advance to next item or end - ShareItemsResultL(); - } - break; - case EShareAllItems : - { - //..coming to here once "All files" is selected and - // individual albums are already shared - HandleSharingSubstatesL(); - } - break; - case EShareAllItemsResult : - { - // advance to next item set or end - AllItemsResultL(); - } - break; - case ENotActive : - // informs handler that we are done - { - TInt err ( iStatus.Int() ); - if ( iStopRequested == MUpnpSharingCallback::ESharingFullStop ) - { - // normal case - err = KErrCancel; - iStopRequested = EFalse; - } - - TRAP_IGNORE( - iEngine->CompleteSharingOperationL( err, - iContainerType )); - } - break; - - default : - { - __LOG( "RunL - default" ); - } - break; - } - - __LOG( "RunL - end" ); - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::DoCancel -// Cancels active object -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::DoCancel() - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::RunError -// Cancels active object -// -------------------------------------------------------------------------- -// -TInt CUpnpContentSharingAo::RunError( TInt aError ) - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - __LOG8_1( "RunError = ", aError ); - if ( aError == KErrNoMemory || - aError == KErrDiskFull || - aError == KErrCorrupt ) - { - iSharingState = ENotActive; - } - if ( iSharingState == EUnshareContainers ) - { - if ( iShareAllSelection == EShareNone ) - { - iSharingState = ENotActive; - TRAP_IGNORE( iWriter->SaveSharingStateL( EShareNone ) ); - } - else - { - iSharingState = EShareContainers; - } - } - else - { - iSharingState = ENotActive; - } - if ( iSharingState != EEnumerateSelections ) - { - SelfComplete( aError ); - } - - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - return KErrNone; - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::IsActive() -// ( other items are commented in header ) -// -------------------------------------------------------------------------- -// -TBool CUpnpContentSharingAo::IsActive() const - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - TBool ret( CActive::IsActive()); - if ( !ret ) - { - ret = iProfilerActive; - } - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - return ret; - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::HandleSharingSubstatesL -// ( other items are commented in header ) -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::HandleSharingSubstatesL() - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - if ( iSharingSubState == EIdle ) - { - if ( iSharingState == EShareItems ) - { - ShareItemsL(); - } - else if ( iSharingState == EShareAllItems ) - { - ShareAllItemsL(); - } - else - { - } - } - else if ( iSharingSubState == EProfileItemList ) - { - ProfileItemListL(); - } - else if ( iSharingSubState == EProfileItemListResult ) - { - ProfileItemListResult(); - } - else if ( iSharingSubState == EShareItemList ) - { - TInt parentId( KErrNotFound ); - if ( iSharingState == EShareItems ) - { - parentId = iSharedContainerIds->operator[]( iContainerIdx ); - } - else if ( iSharingState == EShareAllItems ) - { - parentId = iContainerId; - } - else - { - } - ShareItemListL( parentId ); - } - else if ( iSharingSubState == EShareItemListResult ) - { - ShareItemListResultL(); - } - else - { - } - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::ShareFilesL -// Starts file sharing -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::InitializeL( - TUpnpMediaType aContainerType, - const RArray& aCurrentSelection, - CDesCArray& aPlaylistIds, - CDesCArray& aPlaylistNames, - const TInt aContainerId ) - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - - // Initialize values - iObjectIdx = 0; - iContainerIdx = 0; - iVideoIndex = 0; - iImageIndex = 0; - iAllVideosShared = EFalse; - iAllImagesShared = EFalse; - iSharingProgress = 0; - - iContainerType = aContainerType; - - delete iWriter; - iWriter = NULL; - iWriter = CUpnpSelectionWriter::NewL( iContainerType ); - - AdjustShareAllSelection( aCurrentSelection ); - iCurrentSelections = aCurrentSelection; - iContainerIds = &aPlaylistIds; - iContainerNames = &aPlaylistNames; - iContainerId = aContainerId; - - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::ShareFilesL -// Starts file sharing -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::ShareFiles( ) - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - - // Open file sharing session from mediaserver. - // Start offline if not started. - TInt status( RUpnpMediaServerClient::EStopped ); - iMediaServer.Status( status ); - if ( status == RUpnpMediaServerClient::EStopped ) - { - iMediaServer.StartOffline(); - } - iSharingState = EUnshareContainers; - SelfComplete( KErrNone ); - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - } - -// -------------------------------------------------------------------------- -// CUPnPSettingsEngineAO::CreateContainerL -// creates container -// -------------------------------------------------------------------------- -// -CUpnpContainer* CUpnpContentSharingAo::CreateContainerL( - TUpnpMediaType aContainerType, - const TDesC8& aTitle ) const - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - CUpnpContainer* cont= CUpnpContainer::NewL(); - CleanupStack::PushL( cont ); - cont->SetParentIdL( KRootContainerIdDesc8 ); - cont->SetTitleL( aTitle ); - switch ( aContainerType ) - { - case EImageAndVideo : - { - cont->SetObjectClassL( KImageVideoContainerClass ); - } - break; - case EPlaylist : - { - cont->SetObjectClassL( KStorageFolderContainerClass ); - } - break; - default : - { - __LOG( "CreateContainerL - default"); - } - break; - } - CleanupStack::Pop( cont ); - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - return cont; - } - - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::CloseFileSharingSession -// Closes mediaserver and file sharing session -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::CloseFileSharingSession() - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - - iMediaServer.Close(); - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - } - - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::UnshareContainersL -// Unshares objects, this should only be called from RunL -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::UnshareContainersL( ) - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - - // All old containers unshred, move to next state - if ( iShareAllSelection == EShareNone ) - { - iSharingState = ENotActive; - iWriter->SaveSharingStateL( EShareNone ); - } - else - { - iSharingState = EShareContainers; - } - - // All old containers unshred, move to next state - SelfComplete( KErrNone ); - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - } - - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::ConnectMediaServer -// ( other items are commented in header ) -// -------------------------------------------------------------------------- -// -TInt CUpnpContentSharingAo::ConnectMediaServer() - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - - TInt error = iMediaServer.Connect(); - __LOG8_1( "ConnectMediaServer error %d", error ); - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - return error; - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::AdjustShareAllSelection -// ( other items are commented in header ) -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::AdjustShareAllSelection( - const RArray& aSelections ) - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - if ( aSelections.Count() == 1 ) - { - - if ( aSelections[0] == 0 ) - { - __LOG("CUpnpContentSharingAo::AdjustShareAllSelection: \ -EShareNone"); - iShareAllSelection = EShareNone; - } - else if ( aSelections[0] == 1 ) - { - __LOG("CUpnpContentSharingAo::AdjustShareAllSelection: \ -EShareAll"); - iShareAllSelection = EShareAll; - } - else - { - __LOG("CUpnpContentSharingAo::AdjustShareAllSelection: \ -EShareMany"); - iShareAllSelection = EShareMany; - } - } - else - { - __LOG("CUpnpContentSharingAo::AdjustShareAllSelection: EShareMany"); - iShareAllSelection = EShareMany; - } - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::ShareContainersL -// ( other items are commented in header ) -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::ShareContainersL() - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - /* iMetadataUtility->ClearPostFiltersL(); - - TInt ind( 0 ); - // Theres is still containers to share - switch ( iContainerType ) - { - case EImageAndVideo : - { - // get the correct index for CLF - ind = GetContainerIndexL(); - HBufC8* albumName( NULL ); - if ( ind != KErrNotFound ) - { - albumName = UpnpString::FromUnicodeL( - iContainerNames->MdcaPoint( ind ) ); - CleanupStack::PushL( albumName ); - - TInt plErr( KErrNone ); - - - if ( !plErr ) - { - iWriter->AppendItemL( iContainerIds->MdcaPoint( ind ) ); - - iTmpContainer = CreateContainerL( iContainerType, - *albumName ); - - iFileSharing->ShareContainerL( - *UPnPCommonUtils::IntToDesC8LC ( iContainerId ), - *iTmpContainer, - iStatus ); - CleanupStack::PopAndDestroy(); //UPnPCommonUtils::IntToDesC8LC - CleanupStack::PopAndDestroy( albumName ); - SetActive(); - } - else - { - SelfComplete( KErrNotFound ); - } - } - else - { - SelfComplete( KErrNone ); - } - } - break; - case EPlaylist : - { - - // get the correct index for CLF - ind = GetContainerIndexL(); - if ( ind != KErrNotFound ) - { - HBufC8* playlistName( NULL ); - playlistName = UpnpString::FromUnicodeL( - iContainerNames->MdcaPoint( ind ) ); - CleanupStack::PushL( playlistName ); - - TInt plErr( KErrNone ); - if ( !plErr ) - { - // do the id.. - iWriter->AppendItemL( iContainerIds->MdcaPoint( ind ) ); - - // ..then do the name for the container - iTmpContainer = CreateContainerL( iContainerType, - *playlistName ); - - iFileSharing->ShareContainerL( - *UPnPCommonUtils::IntToDesC8LC( iContainerId ), - *iTmpContainer, - iStatus ); - - CleanupStack::PopAndDestroy(); // IntToDesC8LC - - SetActive(); - } - else - { - SelfComplete( KErrNotFound ); - } - CleanupStack::PopAndDestroy( playlistName ); - } - else - { - SelfComplete( KErrNone ); - } - } - break; - default : - break; - } - - iSharingState = EShareContainersResult; - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );*/ - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::ShareItemsL -// ( other items are commented in header ) -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::ShareItemsL() - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - - delete iFileNameArr; - iFileNameArr = NULL; - iFileNameArr = new (ELeave) - CDesCArrayFlat( 4 ); - DeleteListUpnpObject(); - iItemList = CUpnpItemList::NewL(); - TInt ind( 0 ); - - - TInt parentId( 0 ); - - switch ( iContainerType ) - { - case EImageAndVideo : - { - if ( !iCollections ) - { - iCollections = CUPnPAlbumServices::NewL(); - } - - // get the correct index for CLF - ind = GetContainerIndexL(); - - // ..then do the name for the container - CDesCArray* items = new (ELeave) CDesCArrayFlat(4); - CleanupStack::PushL( items ); - TInt itemCount( 0 ); - if ( ind < iContainerIds->MdcaCount() && ind != KErrNotFound ) - { - TPtrC plId( iContainerIds->MdcaPoint( ind ) ); - TRAPD( albErr, iCollections->OpenAlbumL( plId, - *items )); - delete iCollections; - iCollections = NULL; - - if( !albErr ) - { - itemCount = items->MdcaCount(); - } - } - - if ( itemCount ) - { - - parentId = - iSharedContainerIds->operator[]( iContainerIdx ); - TInt i = iObjectIdx; - - delete iFileNameArr; - iFileNameArr = NULL; - iFileNameArr = new (ELeave) - CDesCArrayFlat( 4 ); - TBool canAppend = items->MdcaCount(); - - while ( i < itemCount && canAppend ) - { - // process all items in curret collection - HBufC8* id = UPnPCommonUtils::IntToDesC8LC( parentId ); - TPtrC item( items->MdcaPoint( i ) ); - TRAPD( itemErr, - iTmpItem = iMetadataUtility->CreateItemL( - item, - *id )); - if ( !itemErr && iTmpItem ) - { - if ( !itemErr ) - { - if( !iMetadataUtility->UpdateMetadataL( - EPhotoFile, - iTmpItem, - item )) - { - // The item was not found from prev model - if( !iMetadataUtility->UpdateMetadataL( - EVideoFile, - iTmpItem, - item ) ) - { - iTmpItem->SetObjectClassL( - KImageItemObjectClass ); - } - } - iItemList->AppendObjectL( *iTmpItem ); - iFileNameArr->AppendL( - item ); - // transfer ownership - } - else - { - delete iTmpItem; - } - iTmpItem = NULL; - i++; - if ( iItemList->ObjectCount() > - KContentDirCommitAmount ) - { - // the list is full, next share it - canAppend = EFalse; - // save the current position in list for - // next run - iObjectIdx = i; - } - } - else - { - i++; - iTmpItem = NULL; - } - CleanupStack::PopAndDestroy(); // IntToDesC8LC - - } - } - CleanupStack::PopAndDestroy( items ); - - if ( iItemList->ObjectCount() <= KContentDirCommitAmount ) - { - // next time start with new album - iSharingProgress += iObjectIdx; - iObjectIdx = 0; - iMetadataUtility->ClearPostFiltersL(); - } - - if ( iItemList->ObjectCount() ) - { - iSharingSubState = EProfileItemList; - SelfComplete( KErrNone ); - } - else - { - // update indexes - iMetadataUtility->ClearPostFiltersL(); - iSharingSubState = EShareItemListResult; - SelfComplete( KErrNone ); - } - } - break; - case EPlaylist : - { - if ( !iPlaylists ) - { - iPlaylists = CUPnPPlaylistServices::NewL(); - } - - // get the correct index for CLF - ind = GetContainerIndexL(); - - // ..then do the name for the container - CDesCArray* items = new (ELeave) CDesCArrayFlat(4); - CleanupStack::PushL( items ); - TInt itemCount( 0 ); - if ( ind < iContainerIds->MdcaCount() && ind != KErrNotFound ) - { - TPtrC plId( iContainerIds->MdcaPoint( ind ) ); - TRAPD( plErr, iPlaylists->OpenPlaylistL( plId, - *items ) ); - delete iPlaylists; - iPlaylists = NULL; - - if( !plErr ) - { - itemCount = items->MdcaCount(); - } - } - - if ( itemCount ) - { - - parentId = - iSharedContainerIds->operator[]( iContainerIdx ); - TInt i = iObjectIdx; - - TBool canAppend = items->MdcaCount(); - - while ( i < itemCount && canAppend ) - { - // process all items in curret collection - HBufC8* id = UPnPCommonUtils::IntToDesC8LC( parentId ); - TPtrC item( items->MdcaPoint( i ) ); - TRAPD( plErr, - iTmpItem = iMetadataUtility->CreateItemL( - item, - *id )); - if ( !plErr && iTmpItem ) - { - if ( !plErr ) - { - iMetadataUtility->UpdateMetadataL( - EMusicFile, - iTmpItem, - item ); - iTmpItem->SetObjectClassL( - KMusicItemObjectClass ); - iItemList->AppendObjectL( *iTmpItem ); - iFileNameArr->AppendL( - item ); - // transfer ownership - } - else - { - delete iTmpItem; - } - iTmpItem = NULL; - i++; - if ( iItemList->ObjectCount() > - KContentDirCommitAmount ) - { - // the list is full, next share it - canAppend = EFalse; - // save the current position in list for - // next run - iObjectIdx = i; - } - } - else - { - i++; - iTmpItem = NULL; - } - CleanupStack::PopAndDestroy(); // IntToDesC8LC - - } - } - CleanupStack::PopAndDestroy( items ); - - if ( iItemList->ObjectCount() <= KContentDirCommitAmount ) - { - // next time start with new album - iSharingProgress += iObjectIdx; - iObjectIdx = 0; - iMetadataUtility->ClearPostFiltersL(); - } - - - if ( iItemList->ObjectCount() ) - { - iSharingSubState = EProfileItemList; - SelfComplete( KErrNone ); - } - else - { - // goto RunL and update indexes - iMetadataUtility->ClearPostFiltersL(); - iSharingSubState = EShareItemListResult; - SelfComplete( KErrNone ); - } - } - break; - default : - break; - } - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::ShareAllItemsL -// ( other items are commented in header ) -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::ShareAllItemsL() - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - - delete iFileNameArr; - iFileNameArr = NULL; - iFileNameArr = new (ELeave) - CDesCArrayFlat( 4 ); - - DeleteListUpnpObject(); - iItemList = CUpnpItemList::NewL(); - - switch ( iContainerType ) - { - case EImageAndVideo: - { - if ( !iAllImagesShared ) - { - AppendImageFilesToListL(); - } - - // do not share videos if the list is already full - if ( !iAllVideosShared && - iItemList->ObjectCount() <= KContentDirCommitAmount ) - { - AppendVideoFilesToListL(); - } - } - break; - case EPlaylist: - { - const MCLFItemListModel* list(NULL); - list = &iMetadataUtility->MusicFiles(); - if ( !list ) - { - User::Leave( KErrArgument ); - } - TInt musicCount = list->ItemCount(); - - if ( iObjectIdx < musicCount ) - { - // sharing images - TBool canAppend( list->ItemCount() ); - TInt i( iObjectIdx ); - - while ( i < list->ItemCount() && canAppend ) - { - // process all items in curret collection - HBufC8* id = UPnPCommonUtils::IntToDesC8LC( - iContainerId ); - TRAPD( plErr, iTmpItem = iMetadataUtility->CreateItemL( - list->Item( i ), - *id )); - if ( !plErr && iTmpItem ) - { - TPtrC fullFileName; - list->Item( i ).GetField( ECLFFieldIdFileNameAndPath, - fullFileName ); - - if ( !plErr ) - { - iMetadataUtility->UpdateMetadataL( - EMusicFile, - iTmpItem, - fullFileName ); - iTmpItem->SetObjectClassL( KMusicItemObjectClass ); - iItemList->AppendObjectL( *iTmpItem ); - iFileNameArr->AppendL( fullFileName ); - } - else - { - delete iTmpItem; - } - iTmpItem = NULL; - i++; - if ( iItemList->ObjectCount() > - KContentDirCommitAmount ) - { - // the list is full, next share it - canAppend = EFalse; - } - } - else - { - i++; - iTmpItem = NULL; - } - - CleanupStack::PopAndDestroy(); // IntToDesC8LC - } - // save the current position in list, for next run - iObjectIdx = i; - } - - } - break; - default : - break; - } - - // do not share empty list - if ( iItemList->ObjectCount() ) - { - iSharingSubState = EProfileItemList; - SelfComplete( KErrNone ); - } - else - { - // update indexes - iSharingSubState = EShareItemListResult; - SelfComplete( KErrNone ); - } - - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::ProfileItemListL -// ( other items are commented in header ) -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::ProfileItemListL() - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - - if ( iProfileInd < iItemList->ObjectCount() ) - { - iProfilerActive = ETrue; - - CUpnpItem* - tmpItem = static_cast( - iItemList->operator[]( iProfileInd )); - - TPtrC fileName = iFileNameArr->MdcaPoint( iProfileInd ); - - iSharingSubState = EProfileItemListResult; - - TRAPD( err, UpnpCdsResElementUtility::AddResElementL( - *tmpItem, - fileName )); - if ( iDeletePending ) - { - DeleteListUpnpObject(); - delete iFileNameArr; - iFileNameArr = NULL; - } - else - { - SetActive(); - TRequestStatus* stat = &iStatus; - User::RequestComplete( stat, err ); - } -#ifdef _DEBUG - HBufC* log = HBufC::NewLC(512); - log->Des().Append(_L("CUpnpContentSharingAo: Profiling: ")); - log->Des().Append( fileName ); - __LOG16( *log ); - __LOG2( "CUpnpContentSharingAo: Profile index: (%d of %d)", - iProfileInd, - iItemList->ObjectCount()); - CleanupStack::PopAndDestroy( log ); -#endif - iProfilerActive = EFalse; - } - else - { - // update indexes - iProfileInd = 0; - iSharingSubState = EShareItemListResult; - SelfComplete( KErrNone ); - } - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::ProfileItemListResult -// ( other items are commented in header ) -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::ProfileItemListResult() - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - if ( iStatus.Int() ) - { - CUpnpItem* tmpItem = static_cast( - iItemList->operator[]( iProfileInd )); - TPtrC8 id( tmpItem->Id() ); - iItemList->RemoveAndDestroy( id ); - - iFileNameArr->Delete(iProfileInd); - } - else - { - iProfileInd++; - } - - if ( iProfileInd < iItemList->ObjectCount() ) - { - iSharingSubState = EProfileItemList; - } - else - { - iProfileInd = 0; - delete iFileNameArr; - iFileNameArr = NULL; - iSharingSubState = EShareItemList; - } - SelfComplete( KErrNone ); - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::ShareItemListL -// ( other items are commented in header ) -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::ShareItemListL( const TInt& aParentId ) - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - // do not share empty list - if ( iItemList && iItemList->ObjectCount() ) - { - iFileSharing->ShareItemListL( - *UPnPCommonUtils::IntToDesC8LC( aParentId ), - *iItemList, - iSharedContainersCount, iStatus ); - CleanupStack::PopAndDestroy(); // UPnPCommonUtils::IntToDesC8LC - iSharingSubState = EShareItemListResult; - SetActive(); - } - else - { - // update indexes - iSharingSubState = EShareItemListResult; - SelfComplete( KErrNone ); - } - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::ShareItemListResultL -// ( other items are commented in header ) -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::ShareItemListResultL() - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - - iTmpItem = NULL; - if ( iSharingState == EShareItems ) - { - ShareItemsResultL(); - } - else if ( iSharingState == EShareAllItems ) - { - AllItemsResultL(); - } - iSharingSubState = EIdle; - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - } - - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::AllItemsResultL -// ( other items are commented in header ) -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::AllItemsResultL() - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - - TInt totalItemCount( 0 ); - - if ( iItemList ) - { - // This updates the field needed in UI for progress - iSharingProgress += iItemList->ObjectCount(); - iEngine->SetProgressL( iSharingProgress ); - DeleteListUpnpObject(); - delete iFileNameArr; - iFileNameArr = NULL; - } - iTmpItem = NULL; - - switch ( iContainerType ) - { - case EImageAndVideo: - { - totalItemCount = iMetadataUtility->ImageFiles().ItemCount() + - iMetadataUtility->VideoFiles().ItemCount(); - } - break; - case EPlaylist : - { - totalItemCount = iMetadataUtility->MusicFiles().ItemCount(); - } - break; - default : - break; - } - // Fix EYSN-7CWDZ5 error in UPnP FW2.1 - // Have not changed it in UPnP FW2.5 because the FW 2.5 have - // so much change. - if ( iObjectIdx < totalItemCount ) - { - // Continue sharing process since not everything is shared yet. - iSharingState = EShareAllItems; - } - else - { - if ( !iWriter ) - { - User::Leave( KErrGeneral ); - } - iWriter->SaveSharingStateL( iShareAllSelection ); - iSharingState = ENotActive; - - } - - SelfComplete( KErrNone ); - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::ShareContainersResultL -// ( other items are commented in header ) -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::ShareContainersResultL() - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - - - if ( !iStatus.Int() ) - { - // previous container shared OK, save the album name - iWriter->AppendStatusL( iContainerIdx ); - } - - if ( iTmpContainer ) - { - TInt newId = UPnPCommonUtils::DesC8ToInt( iTmpContainer->Id() ); - __LOG1("CUpnpContentSharingAo::ShareContainersResultL:\ - id: %d", newId ); - if ( !iSharedContainerIds ) - { - iSharedContainerIds = - new (ELeave) CArrayFixFlat( 10 ); - } - iSharedContainerIds->AppendL( newId ); - delete iTmpContainer; - iTmpContainer = NULL; - } - - TInt totalContainers( 0 ); - // determine next state - if ( iShareAllSelection == EShareAll ) - { - switch ( iContainerType ) - { - // totalContainers is used as index -> -1 - case EImageAndVideo : - { - totalContainers = iContainerIds->MdcaCount() -1; - } - break; - case EPlaylist : - { - totalContainers = iContainerIds->MdcaCount() -1; - } - break; - default: - break; - } - } - else if ( iShareAllSelection == EShareMany ) - { - totalContainers = iCurrentSelections.Count() -1; - } - - if ( iContainerIdx < totalContainers ) - { - iContainerIdx++; - iSharingState = EShareContainers; - } - else - { - // all selected containers shared, next share items - iContainerIdx = 0; - iSharingState = EShareItems; - } - SelfComplete( KErrNone ); - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::ShareItemsResultL -// ( other items are commented in header ) -// -------------------------------------------------------------------------- -void CUpnpContentSharingAo::ShareItemsResultL() - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - if ( !iMetadataUtility ) - { - User::Leave( KErrGeneral ); - } - - if ( iItemList ) - { - // This updates the field needed in UI for progress - iSharingProgress += iItemList->ObjectCount(); - iEngine->SetProgressL( iSharingProgress ); - DeleteListUpnpObject(); - delete iFileNameArr; - iFileNameArr = NULL; - } - iTmpItem = NULL; - iSharingState = EShareItems; - - TInt totalContainers( 0 ); - // Clear postfilters, they are re-set if needed: ShareItemsL/ - // ShareAllItemsL - iMetadataUtility->ClearPostFiltersL(); - // determine next state - if ( iShareAllSelection == EShareAll ) - { - switch ( iContainerType ) - { - case EImageAndVideo : - { - totalContainers = iContainerIds->MdcaCount() -1; - } - break; - case EPlaylist : - { - totalContainers = iContainerIds->MdcaCount() -1; - - } - break; - default: - break; - } - } - else if ( iShareAllSelection == EShareMany ) - { - if( iSharedContainerIds ) - { - totalContainers = iSharedContainerIds->Count() -1; - } - else - { - // sharing of all containers failed or the containers under - // sharing were deleted - totalContainers = KErrNotFound; - } - } - - - if ( !iObjectIdx ) - { - - // all files were shared from current container - if ( iContainerIdx < totalContainers ) - { - // more items in the selected.. - iContainerIdx++; - } - else - { - // all selected containers shared.. - if ( iShareAllSelection == EShareAll ) - { - // next share individual files - iSharingState = EShareAllItems; - } - else - { - // sharing process is done. - if ( totalContainers == KErrNotFound ) - { - iShareAllSelection = EShareNone; - } - iWriter->SaveSharingStateL( iShareAllSelection ); - iSharingState = ENotActive; - } - } - } - - SelfComplete( KErrNone ); - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::SelectionObjectCountL -// ( other items are commented in header ) -// -------------------------------------------------------------------------- -// -TInt CUpnpContentSharingAo::SelectionObjectCountL( - const TUpnpMediaType aContainerType ) - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - - TInt totalCount( 0); - if ( iShareAllSelection != EShareNone ) - { - switch ( aContainerType ) - { - case EImageAndVideo : - { - if ( !iCollections ) - { - iCollections = CUPnPAlbumServices::NewL(); - } - __LOG("albumserv created"); - CDesCArray* collIds = new ( ELeave ) CDesCArrayFlat( - KDefaultGranularity ); - CleanupStack::PushL( collIds ); - CDesCArray* collNames = new ( ELeave ) CDesCArrayFlat( - KDefaultGranularity ); - CleanupStack::PushL( collNames ); - iCollections->ListAlbumsL( *collIds, *collNames ); - __LOG("albums listed"); - collNames->Reset(); - - if ( iShareAllSelection == EShareAll ) - { - __LOG("EShareAll"); - for( TInt i(0); iMdcaCount(); i++ ) - { - TPtrC id( collIds->MdcaPoint( i ) ); - RDebug::Print(_L("id: %S"), &id ); - TRAPD( lcode, iCollections->OpenAlbumL( id, - *collNames )); - if( !lcode ) - { - totalCount += collNames->MdcaCount(); - } - else - { - } - collNames->Reset(); - __LOG("Loop cycle end"); - } - __LOG("Loop done"); - // Add individual files count - const MCLFItemListModel* imgList = - &iMetadataUtility->ImageFiles(); - totalCount += imgList->ItemCount(); - const MCLFItemListModel* vidList = - &iMetadataUtility->VideoFiles(); - totalCount += vidList->ItemCount(); - __LOG("EShareAll done"); - } - else if ( iShareAllSelection == EShareMany ) - { - for( iContainerIdx = 0; - iContainerIdx < iCurrentSelections.Count(); - iContainerIdx++ ) - { - TInt ind = GetContainerIndexL(); - - if ( ind != KErrNotFound ) - { - TPtrC id = iContainerIds->MdcaPoint( ind ); - TRAPD( openErr, iCollections->OpenAlbumL( - id, - *collNames )); - if( !openErr ) - { - totalCount += collNames->MdcaCount(); - collNames->Reset(); - } - } - __LOG("end for(..)"); - } - iContainerIdx = 0; - } - delete iCollections; - iCollections = NULL; - __LOG("iCollections deleted"); - CleanupStack::PopAndDestroy( collNames ); - CleanupStack::PopAndDestroy( collIds ); - } - break; - case EPlaylist : - { - if ( !iPlaylists ) - { - iPlaylists = CUPnPPlaylistServices::NewL(); - } - - CDesCArray* plIds = new ( ELeave ) CDesCArrayFlat( - KDefaultGranularity ); - CleanupStack::PushL( plIds ); - CDesCArray* plNames = new ( ELeave ) CDesCArrayFlat( - KDefaultGranularity ); - CleanupStack::PushL( plNames ); - iPlaylists->ListPlaylistsL( *plIds, *plNames ); - plNames->Reset(); - - if ( iShareAllSelection == EShareAll ) - { - for( TInt i(0); iMdcaCount(); i++ ) - { - TPtrC id( plIds->MdcaPoint( i ) ); - iPlaylists->OpenPlaylistL( id, - *plNames ); - - totalCount += plNames->MdcaCount(); - plNames->Reset(); - } - // Add individual files count - const MCLFItemListModel* musicList = - &iMetadataUtility->MusicFiles(); - totalCount += musicList->ItemCount(); - } - else if ( iShareAllSelection == EShareMany ) - { - for( iContainerIdx = 0; - iContainerIdx < iCurrentSelections.Count(); - iContainerIdx++ ) - { - TInt ind = GetContainerIndexL(); - - if ( ind != KErrNotFound ) - { - TPtrC id = iContainerIds->MdcaPoint( ind ); - iPlaylists->OpenPlaylistL( id, - *plNames ); - totalCount += plNames->MdcaCount(); - plNames->Reset(); - } - - } - iContainerIdx = 0; - } - delete iPlaylists; - iPlaylists = NULL; - CleanupStack::PopAndDestroy( plNames ); - CleanupStack::PopAndDestroy( plIds ); - } - break; - default : - { - } - break; - } - } - __LOG1("CUpnpContentSharingAo::SelectionObjectCountL: totalCount: %d", - totalCount ); - - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - return totalCount; - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::SharingProgress -// ( other items are commented in header ) -// -------------------------------------------------------------------------- -// -TInt CUpnpContentSharingAo::SharingProgress( - TUpnpMediaType& aContainerType ) const - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - aContainerType = iContainerType; - __LOG1("CUpnpContentSharingAo::SharingProgress: iObjectIdx: %d", - iSharingProgress ); - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - return iSharingProgress; - } - - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::GetContainerIndexL -// Returns IntValue for aObject -// -------------------------------------------------------------------------- -// -TInt CUpnpContentSharingAo::GetContainerIndexL() - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - TInt ind( KErrNone ); - if ( iShareAllSelection == EShareAll ) - { - if( iContainerIds->MdcaCount() ) - { - ind = iContainerIdx; - } - else - { - ind = KErrNotFound; - } - } - else if ( iContainerIdx >= iCurrentSelections.Count() || - ( iCurrentSelections[ iContainerIdx ]- KUiSelectionOffset - >= iContainerIds->MdcaCount() )) - { - ind = KErrNotFound; - } - else - { - if ( iShareAllSelection == EShareMany ) - { - ind = iCurrentSelections[ iContainerIdx ] - - KUiSelectionOffset; - - } - else - { - User::Leave( KErrArgument ); - } - } - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - return ind; // correct index or KErrNotFound - } - - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::SelfComplete -// Complete own request -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::SelfComplete( const TInt aError ) - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - if ( iStopRequested ) - { - iSharingState = ENotActive; - } - SetActive(); - TRequestStatus* stat = &iStatus; - User::RequestComplete( stat, aError ); - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - } - - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::AppendImageFilesToListL -// ( other items are commented in header ) -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::AppendImageFilesToListL() - { - // Obtain list of image files from CLF - const MCLFItemListModel* list(NULL); - list = &iMetadataUtility->ImageFiles(); - if ( !list ) - { - User::Leave( KErrArgument ); - } - - // check if the iImageIndex is still less than the number of images - // -> there are still images to be shared - TInt imageCount = list->ItemCount(); - if ( !imageCount ) - { - iAllImagesShared = ETrue; - return; - } - - if ( iImageIndex < imageCount ) - { - - // Prepare storage for filenames - // Loop until all images are processed or until we have - // KContentDirCommitAmount files in the list of objects to be shared. - while ( !iAllImagesShared && - iItemList->ObjectCount() <= KContentDirCommitAmount ) - { - // Create an item with parent id of Images&Videos container. - HBufC8* id = UPnPCommonUtils::IntToDesC8LC( - iContainerId ); - TRAPD( imgErr, iTmpItem = iMetadataUtility->CreateItemL( - list->Item( iImageIndex ), - *id ) ); - - if ( !imgErr && iTmpItem ) - { - TPtrC fullFileName; - list->Item( iImageIndex ).GetField( - ECLFFieldIdFileNameAndPath, - fullFileName ); - - if ( !imgErr && iTmpItem ) - { - // Update item's metadata and append it to iItemList. - iMetadataUtility->UpdateMetadataL( - EPhotoFile, - iTmpItem, - fullFileName ); - iTmpItem->SetObjectClassL( KImageItemObjectClass ); - iItemList->AppendObjectL( *iTmpItem ); - iFileNameArr->AppendL( fullFileName ); - } - else - { - delete iTmpItem; - } - } - else - { - } - - // set iTmpItem to NULL - iTmpItem = NULL; - - // clean up - CleanupStack::PopAndDestroy(); // IntToDesC8LC - - // increment counter to process next image. - iImageIndex++; - - if ( iImageIndex >= imageCount ) - { - iAllImagesShared = ETrue; - } - } - - } - // update iObjectIdx to keep the progressbar ok. - iObjectIdx = iImageIndex; - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::AppendVideoFilesToListL -// ( other items are commented in header ) -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::AppendVideoFilesToListL() - { - // Obtain list of video files from CLF - const MCLFItemListModel* list(NULL); - list = &iMetadataUtility->VideoFiles(); - if ( !list ) - { - User::Leave( KErrArgument ); - } - - // Obtain the number of video file items in the list. - TInt videoCount( list->ItemCount() ); - if ( !videoCount ) - { - iAllVideosShared = ETrue; - return; - } - - // Check that there are still videos to be shared. - if ( iVideoIndex < videoCount ) - { - - if ( !iFileNameArr ) - { - iFileNameArr = new (ELeave) - CDesCArrayFlat( 4 ); - } - // Loop until all videos are processed or until we have - // KContentDirCommitAmount files in the list of objects to be shared. - while ( !iAllVideosShared && - iItemList->ObjectCount() <= KContentDirCommitAmount ) - { - // Create an item with parent id of Images&Videos container. - HBufC8* id = UPnPCommonUtils::IntToDesC8LC( - iContainerId ); - TRAPD( vidErr, iTmpItem = iMetadataUtility->CreateItemL( - list->Item( iVideoIndex ), - *id ) ); - - if ( !vidErr && iTmpItem ) - { - TPtrC fullFileName; - list->Item( iVideoIndex ).GetField( - ECLFFieldIdFileNameAndPath, - fullFileName ); - - - if ( !vidErr && iTmpItem ) - { - // Update item's metadata and append it to iItemList. - iMetadataUtility->UpdateMetadataL( - EVideoFile, - iTmpItem, - fullFileName ); - iTmpItem->SetObjectClassL( KVideoItemObjectClass ); - iItemList->AppendObjectL( *iTmpItem ); - iFileNameArr->AppendL( fullFileName ); - } - else - { - delete iTmpItem; - iTmpItem = NULL; - } - } - else - { - } - - // set iTmpItem to NULL - iTmpItem = NULL; - - // clean up - CleanupStack::PopAndDestroy(); // IntToDesC8LC - - // increment counter to process next video. - iVideoIndex++; - - if ( iVideoIndex >= videoCount ) - { - // all videos are processed. - // Set iAllVideosShared -> ETrue to end the while loop. - iAllVideosShared = ETrue; - } - } - } - - // update iObjectIdx to keep the progressbar ok. - // Remember to add iImageIndex here! - iObjectIdx = iImageIndex + iVideoIndex; - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::RequestStop -// ( other items are commented in header ) -// -------------------------------------------------------------------------- -// -void CUpnpContentSharingAo::RequestStop( - MUpnpSharingCallback::TSharingStopType aStopType ) - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - iStopRequested = aStopType; - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - } - -// -------------------------------------------------------------------------- -// CUpnpContentSharingAo::GetPlaylistNameByIdL -// ( other items are commented in header ) -// -------------------------------------------------------------------------- -// -TInt CUpnpContentSharingAo::GetContainerNameByIdL( const TDesC& aId, - TDes8& aPlaylistName, - const TInt aContainerType ) - { - __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ ); - TInt err( KErrNone ); - CDesCArray* newIds = new ( ELeave )CDesCArrayFlat( 4 ); - CleanupStack::PushL(newIds); - CDesCArray* newNames = new ( ELeave )CDesCArrayFlat( 4 ); - CleanupStack::PushL(newNames); - - if( aContainerType == EImageAndVideo ) - { - if ( !iCollections ) - { - iCollections = CUPnPAlbumServices::NewL(); - } - iCollections->ListAlbumsL( *newIds, *newNames ); - delete iCollections; - iCollections = NULL; - } - else if ( aContainerType == EPlaylist ) - { - if ( !iPlaylists ) - { - iPlaylists = CUPnPPlaylistServices::NewL(); - } - iPlaylists->ListPlaylistsL( *newIds, *newNames ); - delete iPlaylists; - iPlaylists = NULL; - } - - if ( !newIds->MdcaCount() ) - { - err = KErrGeneral; - } - else - { - for ( TInt i(0); iMdcaCount();i++ ) - { - if ( aId.Compare( newIds->MdcaPoint( i ) ) == 0 ) - { - HBufC8* name8 = - UpnpString::FromUnicodeL( newNames->MdcaPoint( i ) ); - CleanupStack::PushL( name8 ); - TPtr8 name8tmp = name8->Des(); - aPlaylistName = name8tmp; - CleanupStack::PopAndDestroy( name8 ); - } - } - } - CleanupStack::PopAndDestroy( newNames ); - CleanupStack::PopAndDestroy( newIds ); - __LOG8_1( "%s end.", __PRETTY_FUNCTION__ ); - return err; - } - -void CUpnpContentSharingAo::DeleteListUpnpObject() - { - if ( iItemList ) - { - TInt count = iItemList->ObjectCount(); - for ( TInt i = count - 1; i >= 0; --i ) - { - CUpnpItem* tmpItem = static_cast( - iItemList->operator[]( i )); - TPtrC8 id( tmpItem->Id() ); - iItemList->RemoveAndDestroy( id ); - } - delete iItemList; - iItemList = NULL; - } - } -// End of file