diff -r 839377eedc2b -r befca0ec475f videofeeds/clientapi/src/CIptvVodDlDownloadList.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/clientapi/src/CIptvVodDlDownloadList.cpp Wed Sep 01 12:30:28 2010 +0100 @@ -0,0 +1,241 @@ +/* +* Copyright (c) 2006 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: Contains list of download items* +*/ + + + + + +// INCLUDE FILES +#include +#include "IptvDebug.h" + +#include "CIptvMyVideosGlobalFileId.h" +#include "CIptvVodDlDownloadList.h" +#include "CIptvVodDlDownloadListItem.h" + +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +// CONSTANTS + +// MACROS + +// LOCAL CONSTANTS AND MACROS + +// MODULE DATA STRUCTURES + +// LOCAL FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +// ============================= LOCAL FUNCTIONS =============================== + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CIptvVodDlDownloadList::CIptvVodDlDownloadList +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CIptvVodDlDownloadList::CIptvVodDlDownloadList() + { + } + +// ----------------------------------------------------------------------------- +// CIptvVodDlDownloadList::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CIptvVodDlDownloadList::ConstructL() + { + iList.Reset(); + } + +// ----------------------------------------------------------------------------- +// CIptvVodDlDownloadList::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CIptvVodDlDownloadList* CIptvVodDlDownloadList::NewL() + { + CIptvVodDlDownloadList* self = new( ELeave ) CIptvVodDlDownloadList; + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(self); + + return self; + } + + +// Destructor +EXPORT_C CIptvVodDlDownloadList::~CIptvVodDlDownloadList() + { + TInt i; + TInt count = iList.Count(); + + //free all heap objects + for(i = 0; i < count; i++) + { + delete iList[i]; + iList[i] = NULL; + } + + //free pointers + iList.Close(); + } + +// ----------------------------------------------------------------------------- +// CIptvVodDlDownloadList::InternalizeL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CIptvVodDlDownloadList::InternalizeL(RReadStream& aStream) + { + TUint32 itemCount = aStream.ReadUint32L(); + TUint32 i; + for(i = 0; i < itemCount; i++) + { + CIptvVodDlDownloadListItem* item = CIptvVodDlDownloadListItem::NewL(); + CleanupStack::PushL(item); // 1-> + item->InternalizeL(aStream); + iList.AppendL(item); + CleanupStack::Pop(item); // <-1 + } + } + +// ----------------------------------------------------------------------------- +// CIptvVodDlDownloadList::ExternalizeL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CIptvVodDlDownloadList::ExternalizeL(RWriteStream& aStream) + { + aStream.WriteUint32L(iList.Count()); + TUint32 i; + for(i = 0; i < iList.Count(); i++) + { + iList[i]->ExternalizeL(aStream); + } + } + +// ----------------------------------------------------------------------------- +// CIptvVodDlDownloadList::CountExternalizeSize +// ----------------------------------------------------------------------------- +// +EXPORT_C TUint32 CIptvVodDlDownloadList::CountExternalizeSize() + { + TUint32 i, size = 4; + for(i = 0; i < iList.Count(); i++) + { + size += iList[i]->CountExternalizeSize(); + } + return size; + } + +// ----------------------------------------------------------------------------- +// CIptvVodDlDownloadList::GetDownload +// ----------------------------------------------------------------------------- +// +EXPORT_C CIptvVodDlDownloadListItem* CIptvVodDlDownloadList::GetListItem(CIptvMyVideosGlobalFileId& aGlobalFileId) + { + TInt i; + for(i = 0; i < iList.Count(); i++) + { + if(iList[i]->iGlobalFileId->iDrive == aGlobalFileId.iDrive && + iList[i]->iGlobalFileId->iFileId == aGlobalFileId.iFileId && + iList[i]->iGlobalFileIdIsValid) + { + return iList[i]; + } + } + + IPTVLOGSTRING3_LOW_LEVEL("CIptvVodDlDownloadList:: could not find download with file ID %d, drive %d", + aGlobalFileId.iFileId, + aGlobalFileId.iDrive); + + return NULL; + } + +// ----------------------------------------------------------------------------- +// CIptvVodDlDownloadList::GetDownload +// ----------------------------------------------------------------------------- +// +EXPORT_C CIptvVodDlDownloadListItem* CIptvVodDlDownloadList::GetListItem(TUint32 aServiceId, TUint32 aContentId) + { + TInt i; + for(i = 0; i < iList.Count(); i++) + { + if(iList[i]->iServiceId == aServiceId && + iList[i]->iContentId == aContentId) + { + return iList[i]; + } + } + + IPTVLOGSTRING3_LOW_LEVEL("CIptvVodDlDownloadList:: could not find download with service ID %d, content ID %d", + aServiceId, + aContentId); + + return NULL; + } + +// ----------------------------------------------------------------------------- +// CIptvVodDlDownloadList::Delete +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvVodDlDownloadList::Delete(CIptvMyVideosGlobalFileId& aGlobalFileId) + { + TInt i; + for(i = 0; i < iList.Count(); i++) + { + if(iList[i]->iGlobalFileId->iDrive == aGlobalFileId.iDrive && + iList[i]->iGlobalFileId->iFileId == aGlobalFileId.iFileId && + iList[i]->iGlobalFileIdIsValid) + { + delete iList[i]; + iList.Remove(i); + iList.Compress(); + return KErrNone; + } + } + return KErrNotFound; + } + +// ----------------------------------------------------------------------------- +// CIptvVodDlDownloadList::Delete +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CIptvVodDlDownloadList::Delete(TUint32 aServiceId, TUint32 aContentId) + { + TInt i; + for(i = 0; i < iList.Count(); i++) + { + if(iList[i]->iServiceId == aServiceId && + iList[i]->iContentId == aContentId) + { + delete iList[i]; + iList.Remove(i); + iList.Compress(); + return KErrNone; + } + } + return KErrNotFound; + } + +// ========================== OTHER EXPORTED FUNCTIONS ========================= + +// End of File