diff -r 000000000000 -r 96612d01cf9f videofeeds/clientapi/inc/CIptvVodContentClient.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/clientapi/inc/CIptvVodContentClient.h Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,443 @@ +/* +* Copyright (c) 2004-2007 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: VoD ECG content API* +*/ + + + + +#ifndef CIPTVVODCONTENTCLIENT_H +#define CIPTVVODCONTENTCLIENT_H + +// INCLUDES +#include +#include "CIptvUtil.h" + +#include "MIptvVodContent.h" +#include "CIptvService.h" +#include "RIptvClientSession.h" + +// FORWARD DECLARATIONS +class CIptvVodContentCategoryBriefDetails; +class CIptvVodContentContentBriefDetails; +class CIptvVodContentContentFullDetails; +class MIptvVodContentClientObserver; +class CIptvVodContentUpdateObserver; +class CIptvMediaContent; +class TIptvRssSearchQuery; +class CIptvMyVideosGlobalFileId; + +// CLASS DECLARATION + +/** +* VoD ECG content API +* +* @lib IptvClientApi.lib +* @since Engine 1.0 +*/ +class CIptvVodContentClient : public CActive, MIptvVodContent + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static IMPORT_C CIptvVodContentClient* NewL(TIptvServiceId aServiceId, MIptvVodContentClientObserver& aClientObserver ); + /** + * Two-phased constructor. + */ + static IMPORT_C CIptvVodContentClient* NewLC(TIptvServiceId aServiceId, MIptvVodContentClientObserver& aClientObserver ); + + /** + * Destructor. + */ + virtual ~CIptvVodContentClient(); + + public: // New functions + + /** + * Get list of ECG categories. + * The order of categories is defined by database originated from service provider. + * @since Engine 1.0 + * @param aParentCategoryId Points to category ID which sub-categories should be listed. Use KIptvVodContentCategoryRootId if the root is referenced. + * @param aCategoryList Reference to a array where pointer to created category list is returned. + * @return Error code. + */ + IMPORT_C TInt GetEcgCategoryListL(TIptvCategoryId aParentCategoryId, RPointerArray& aCategoryList); + + /** + * Get full detais of one category item. + * @since Engine 1.0 Notice! In Engine 1.1 CIptvVodContentCategoryFullDetails class is removed! There is only one category class CIptvVodContentCategoryBriefDetails. + * @param aCategoryId Selected category ID identifier. + * @param aCategory Reference to a full details data returned. + * @return Error code. + */ + IMPORT_C TInt GetCategoryDetailsL(TIptvCategoryId aCategoryId, CIptvVodContentCategoryBriefDetails& aCategory); + + /** + * Get parent category ID identifier. + * This method allows application to browse toward root category, then two consecutive calls are needed. + * Note that root is KIptvVodContentCategoryRootId. + * @since Engine 1.0 + * @param aCategoryId Points to category ID which parent category is requested. + * @param aParentId Reference to returned parend ID. + * @return Error code. + */ + IMPORT_C TInt GetParentCategoryL(TIptvCategoryId aCategoryId, TIptvCategoryId& aParentId); + + /** + * Get list of ECG contents in the specified category in order defined by database originated from service provider. + * @since Engine 1.0 + * @param aCategoryId Selected category ID identifier. Use KIptvVodContentCategoryRootId if the root is referenced. + * @param aSearchString A search string used to filter contents search. If empty string, no filtering issued. + * @param aFrom The start index for listed contents. + * @param aAmount Amount of content elementes to be listes. If zero, all starting from aFrom. + * @param aTotalAmount Reference to a variable where total amount of content is returned. + * @param aEcgList Reference to list of returned items. + * @return Error code. + */ + IMPORT_C TInt GetEcgListL(TIptvCategoryId aCategoryId, TDesC& aSearchString, TUint32 aFrom, TUint32 aAmount, TUint32& aTotalAmount, RPointerArray& aEcgList); + + /** + * Get list of all ECG contents in alphabetical order. + * @since Engine 1.0 + * @param aSearchString A search string used to filter contents search. If empty string, no filtering issued. + * @param aFrom The start index for listed contents. + * @param aAmount Amount of content elementes to be listes. If zero, all starting from aFrom. + * @param aTotalAmount Reference to a variable where total amount of content is returned. + * @param aEcgList Reference to list of returned items. + * @return Error code. + */ + IMPORT_C TInt GetEcgAllListL(TDesC& aSearchString, TUint32 aFrom, TUint32 aAmount, TUint32& aTotalAmount, RPointerArray& aEcgList); + + /** + * Get full detais of one content item. + * @since Engine 1.0 + * @param aContentId Selected content ID identifier. + * @param aContentFullDetails Reference to returned full details data. + * @return Error code. + */ + IMPORT_C TInt GetContentDetailsL(TIptvContentId aContentId, CIptvVodContentContentFullDetails& aContentFullDetails); + + /** + * Set IAP for service. + * @since Engine 1.0 + * @param aIap Internet access point. + * @return Error code. + */ + IMPORT_C TInt SetIapL(const TUint32 aIap); + + /** + * Update Ecg. + * @since Engine 1.0 + * @return Error code. + */ + IMPORT_C TInt UpdateEcgL(); + + /** + * Verify service group. + * @since Engine 1.0 + * @return Error code. + */ + IMPORT_C TInt CheckGroupL(); + + /** + * Get time when service was last updated. + * @since Engine 1.0 + * @param aTime Reference to TTime object when DB was last updated. + * @return Error code. + */ + IMPORT_C TInt GetUpdateTimeL(TTime& aTime); + + /** + * Get content access objects belonging to given content. + * @since Engine 1.1 + * @param aContentId Content ID. + * @param aCAList Content access list. + * @return Error code. + */ + IMPORT_C TInt GetContentAccessListL(TUint32 aContentId, RPointerArray& aCAList); + + /** + * Set last play position to content access. + * @since Engine 1.1 + * @param aContentId Content id + * @param aIndex Content access index (id). + * @param aPosition Position. + * @return Error code. + */ + IMPORT_C TInt SetLastPositionL(TUint32 aContentId, TUint32 aIndex, TUint32 aPosition); + + /** + * Start search operation initiated by the UI + * @since + * @param aQuery Query containing the keyword used for search + * @return One of the Symbian error codes. + */ + IMPORT_C TInt Search( TIptvRssSearchQuery& aQuery ); + + /** + * Cancel currently active search operation if any. + * @since + * @param None + * @return One of the Symbian error codes. + */ + IMPORT_C TInt CancelSearch(); + + /** + * Set Mpx media id to content. + * @param aContentId Content id + * @param aCaIndex Content access index + * @param aMpxId Mpx id. + * @return Error code. + */ + IMPORT_C TInt SetMpxIdL( TUint32 aContentId, + TUint32 aCaIndex, + TUint32 aMpxId ); + + /** + * Reset global Id. + * + * @param aFileId Global file id to be reset. + * @param aServiceId Service id. + */ + IMPORT_C void ResetGlobalId( + CIptvMyVideosGlobalFileId& aFileId, + TUint32 aServiceId ); + + /** + * Check if automatic update is needed for + * contents. + * @param On return, ETrue if update is needed. + * Otherwise EFalse + * + * @return One of the Symbian error codes. + */ + IMPORT_C TInt UpdateAvailableL( TBool& aAvailable ); + + /** + * Cancel ecg update. + */ + IMPORT_C void CancelUpdate(); + + private: + + /** + * From CActive, handles an active object’s request completion event + */ + void RunL(); + + /** + * From CActive, implements cancellation of an outstanding request. + * This function is called as part of the active object’s Cancel(). + */ + void DoCancel(); + + private: + + /** + * C++ default constructor. + */ + CIptvVodContentClient(TIptvServiceId aServiceId, MIptvVodContentClientObserver& aClientObserver); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + /** + * Send size request to server. + */ + void SendSizeRequestL(TInt aMessage, TUint32 aParam, TRequestStatus& aStatus); + + /** + * Send size request to server. + */ + void SendSizeRequestL( TInt aMessage, + TUint32 aUintParam1, + TUint32 aUintParam2, + const TDesC& aDesCParam, + TRequestStatus& aStatus ); + + /** + * Send size request to server. + */ + void SendSizeRequestL( TInt aMessage, + TUint32 aUintParam1, + TUint32 aUintParam2, + TUint32 aUintParam3, + const TDesC& aDesCParam, + TRequestStatus& aStatus ); + + /** + * Send request to server. + * + * @param aMessage Message to send. + * @param aFileIdParam Message parameter, global file Id. + * @param aUintParam Message parameter, TUint32. + * @return KErrNone or one of system wide error codes. + */ + TInt SendRequestL( + TInt aMessage, + CIptvMyVideosGlobalFileId& aFileIdParam, + TUint32 aUintParam); + + /** + * Send request to server. + */ + void SendRequestL(TInt aMessage, TUint32 aParam, TRequestStatus& aStatus); + + /** + * Handle category list size request. + */ + void HandleVodContentGetEcgCategoryListSizeReqL(); + + /** + * Handle category list data request. + */ + void HandleVodContentGetEcgCategoryListDataReqL(RPointerArray& aCategoryList); + + /** + * Handle category details size request. + */ + void HandleVodContentGetCategoryDetailsSizeReqL(); + + /** + * Handle category details data request. + */ + void HandleVodContentGetCategoryDetailsDataReqL(CIptvVodContentCategoryBriefDetails& aCategory); + + /** + * Handle get parent category request. + */ + void HandleVodContentGetParentCategoryReqL(TIptvCategoryId& aParentId); + + /** + * Handle get ecg list size request. + */ + void HandleVodContentGetEcgListSizeReqL(); + + /** + * Handle get ecg list data request. + */ + void HandleVodContentGetEcgListDataReqL(TUint32& aTotalAmount, RPointerArray& aEcgList); + + /** + * Handle get ecg all list size request. + */ + void HandleVodContentGetEcgAllListSizeReqL(); + + /** + * Handle get ecg all list data request. + */ + void HandleVodContentGetEcgAllListDataReqL(TUint32& aTotalAmount, RPointerArray& aEcgList); + + /** + * Handle content details size request. + */ + void HandleVodContentGetContentDetailsSizeReqL(); + + /** + * Handle content details data request. + */ + void HandleVodContentGetContentDetailsDataReqL(CIptvVodContentContentFullDetails& aContentFullDetails); + + /** + * Send cancel request. + */ + void SendCancelRequest(); + + /** + * Send cancel update request. + */ + void SendCancelUpdateRequest(); + + /** + * Handle update time. + */ + void HandleVodContentGetUpdateTimeL( TTime& aTime ); + + /** + * Send get update time request. + */ + void SendUpdateTimeRequestL( TRequestStatus& aStatus ); + + /** + * CleanupL + */ + void CleanupL(); + + void HandleVodContentGetCAListSizeReqL(); + void HandleVodContentGetCAListDataReqL(RPointerArray& aCAList); + void SendLastPositionL(TInt aMessage, TUint32 aContentId, TUint32 aIndex, TUint32 aPosition, TRequestStatus& aStatus); + + /** + * Write mpx id to ecg database. + * @param aContentId Content id + * @param aCaIndex Content access index + * @param aMpxId Mpx id. + * @param aStatus Request status. + */ + void SendMpxIdL( TInt aMessage, + TUint32 aContentId, + TUint32 aCaIndex, + TUint32 aMpxId, + TRequestStatus& aStatus ); + + /** + * Send update check request. + * + */ + void SendUpdateCheckRequestL( TRequestStatus& aStatus ); + + /** + * Handle vod content update check + * @param aAvailable On return, ETrue if update is available and needed, + * otherwise EFalse. + */ + void HandleVodContentUpdateCheckL( TBool& aAvailable ); + + private: // Data + + // Reference to observer class implemented by the application. + MIptvVodContentClientObserver& iClientObserver; + + /** + * iSession, the server session. + */ + RIptvClientSession iSession; + + /** + * iMsg Heap object to restore memory for IPC messaging. + */ + HBufC8* iMsg; + + /** + * iMsgPtr Passed to RIptvClientSession object to store the sent and received data. + * Points to iData heap object. + */ + TPtr8 iMsgPtr; + + /** + * Service ID. + */ + TIptvServiceId iServiceId; + + /** + * Pointer to CIptvVodContentUpdateObserver. + */ + CIptvVodContentUpdateObserver* iObserver; + }; + +#endif // CIPTVVODCONTENTCLIENT_H