diff -r 000000000000 -r 96612d01cf9f videofeeds/vcnsuiengine/inc/vcxnscontentprovider.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/vcnsuiengine/inc/vcxnscontentprovider.h Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,366 @@ +/* +* 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 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: +* +*/ + + + + +#ifndef C_VCXNSCONTENTPROVIDER_H +#define C_VCXNSCONTENTPROVIDER_H + +// INCLUDES +#include +#include +#include "CIptvUtil.h" + +#include "vcxnscontentproviderif.h" +#include "vcxnscontentproviderobserver.h" +#include "vcxnscontent.h" + +// FORWARD DECLARATIONS +class MVcxNsContentProviderObserver; +class CVcxNsUiEngine; +class CVcxNsContentList; +class CIptvMediaContent; +class CIptvVodContentContentBriefDetails; + +// CLASS DECLARATION + +/** +* Class CVcxNsContentProvider handles application contents. +* +* @lib vcxnsuiengine.lib +*/ +class CVcxNsContentProvider : public CBase, + public MVcxNsContentProviderIf + { + +public: + + /** + * Constructor. + * @param aUiEngine Ui engine + */ + static CVcxNsContentProvider* NewL( CVcxNsUiEngine& aUiEngine ); + + virtual ~CVcxNsContentProvider(); + + /** + * RegisterObserver. + * @param aObserver Observer + */ + void RegisterObserver( MVcxNsContentProviderObserver* aObserver ); + + /** + * DeRegisterObserver. + * @param aObserver Observer + */ + void DeRegisterObserver( MVcxNsContentProviderObserver* aObserver ); + + /** + * Get contents with highlighted position + * @param aHighlight On return, highlight index for content list + * @return Array of contents. + */ + RPointerArray& GetContentsL( TInt& aHighlight ); + + /** + * Gets contents. + * + * @return Vod contents + */ + RPointerArray& GetContentsL(); + + /** + * Reset the contents with given service id. + * + * @param aServiceId Service id + */ + void RemoveServiceData( TUint32 aServiceId ); + + /** + * Reset the contents of specified category in service. + * Note: This is usually done only for search category when + * search results are cleared before new search. + * + * @param aServiceId Service id + * @param aCategoryId Category id + */ + void RemoveCategoryData( TUint32 aServiceId, TUint32 aCategoryId ); + + /** + * Handle the back command by choosing new application state. + * @return Was the back event consumed. If EFalse, + * the back event should be handled by caller. + */ + TBool HandleBack(); + + /** + * Starts the content update. + * + * @return KErrNone or one of the system wide error codes. + */ + TInt RefreshContentsL(); + + /** + * Starts download of given content item. + * @param aIndex Index of the content to be downloaded + * @return KErrNone or one of the system wide error codes. + */ + TInt StartDownloadL( TInt aIndex ); + + /** + * Pause download of given content item. + * + * @param aIndex Index of the content item. + * @return KErrNone or one of the system wide error codes. + */ + TInt PauseDownloadL( TInt aIndex ); + + /** + * Resume download of given content item. + * + * @param aIndex Index of the content item. + * @return KErrNone or one of the system wide error codes. + */ + TInt ResumeDownloadL( TInt aIndex ); + + /** + * Resume download of given content item. + * + * @param aContent Content details + * @return KErrNone or one of the system wide error codes. + */ + TInt ResumeDownloadL( CVcxNsContent& aContent ); + + /** + * Cancels downloading of given content item. + * + * @param aIndex Index of the content item. + * @return KErrNone or one of the system wide error codes. + */ + TInt CancelDownloadL( TInt aIndex ); + + /** + * Search content by uri. + * @param aUri uri of the content to be found + * @return Content which has the given uri or NULL if not found. + */ + CVcxNsContent* SearchContentByUri( const TDesC& aUri ); + + /** + * Search content by TMPXItemId. + * @param aItemId MPX item id + * @return Content which has the given TMPXItemId or NULL if not found. + */ + CVcxNsContent* SearchContentByMpxId( TMPXItemId aItemId ); + + /** + * Search content by id. + * @param aServiceId Service id + * @param aContentId Content id + * @return Content which has the given service and content id. + */ + CVcxNsContent* SearchContentById( TUint32 aServiceId, TUint32 aContentId ); + + /** + * Search content's index in ui model. + * @param aContent Content item + * @return Index of the content or KErrNotFound, if not visible. + */ + TInt ContentIndex( CVcxNsContent* aContent ); + + /** + * Tell UI layer that the given single content item needs to be updated. + * Event is forwarded to MVcxNsContentProviderObserver + * + * @param aContentdata Updated content data + */ + void UpdateContent( CVcxNsContent* aContentdata ); + + /** + * Fetches the icons path from epg database and + * updates them to current content array. + */ + void UpdateIconsPathL(); + + /** + * Get the content with given id by any means. + * @param aServiceId Service id + * @param aContentId Content id + * @return Content which has the given service and content id. + */ + CVcxNsContent* GetContentL( TUint32 aServiceId, TUint32 aContentId ); + +// From MVcxNsContentProviderObserver + + /** + * Content update notification. + * + * @param aIndex Updated item's index + */ + void ContentUpdated( TInt aIndex ); + + /** + * View needs to be refreshed. + */ + void RefreshView(); + + /** + * Application state needs to be updated. + */ + void HandleAppStateChangedL(); + + /** + * Epg update is ongoing, show the notification. + * When downloading and parsing the xml, both parameters are 0. + * + * @param aShow If ETrue, show the note, if EFalse, hide it. + * @param aDownloadedTbns count of downloaded thumbnails. + * @param aTotalTbns Total count of thumbnails to be downloaded. + */ + void ShowUpdatingNoteL( TBool aShow, TInt aDownloadedTbns, TInt aTotalTbns ); + + /** + * Store the last play position to epg db. + * This is intended to be used just with streams, + * video attributes are managed by MPX collection. + * @param aContent Content item + * @param aType Media content access type + * @param aPos Last play position to be set + */ + void StoreLastPlayPosL( CVcxNsContent* aContent, + CVcxNsContent::TVcxNsContentAccessType aType, + TReal32 aPos ); + + + /** + * Handle error, send error information to UI. + * + * @param aError Error code. + * @param aUpdate ETrue if error comes from epg update. + * EFalse if error is from download. + * @param aServiceId Service ID + */ + void HandleErrorL( TInt aError, TBool aUpdate, TUint32 aServiceId ); + + /** + * Handle dl error. + * + * @param aError Error code. + * @param aContent Details of the failed video content. + */ + void HandleDlErrorL( TIptvDlError aError, CVcxNsContent& aContent ); + + /** + * Checks if video has more details than just name + * + * @param aSelected Index of selected item + * @return Does the video have other details than just name + */ + TBool HasVideoDetailsL( TInt aSelected ); + + /** + * Fetches full video details + * + * @param aSelected Index of selected item + * @return Content full details + */ + CVcxNsContent* GetFullDetailsL( TInt aSelected ); + + /** + * Save content view highlight for currently active category. + * @param aHighlight Highlight index to save. + */ + void SetContentHighlight( TInt aHighlight ); + + /** + * Fetches full details for the given content item. + * + * @param aContent Content, which details to fetch + */ + void FetchFullDetailsL( CVcxNsContent* aContent ); + +private: + + /** + * Constructor. + * @param aUiEngine Ui engine + */ + CVcxNsContentProvider( CVcxNsUiEngine& aUiEngine ); + + /** + * Get content list from cache. + * @return Content list + */ + CVcxNsContentList* GetListFromCache(); + + /** + * Get the Content data from DB + * @return Content list + */ + CVcxNsContentList* LoadEpgDataL(); + + /** + * Adds contents which has mds ids to mpx client's downlolad list. + * @param aContentList Content list, which items to add to dl list + */ + void BuildDownloadListL( RPointerArray& aContentList ); + + /** + * Adds valid content accesses from the list to the content. + * @param aContent Content item + * @param aContentAccessList Content access list + */ + void AddContentAccessesL( CVcxNsContent& aContent, + RPointerArray& aContentAccessList ); + + /** + * Creates ns content item from server side videocenter content object. + * @param aData Source content data class + * @param aServiceId Content's service ID + * @return Newly constructed content item + */ + CVcxNsContent* ConstructContentItemL( CIptvVodContentContentBriefDetails* aData, + TUint32 aServiceId ); + +// Data + + /** + * Array of content event observers. Not Own. + */ + RPointerArray iContentObservers; + + /** + * UI engine. + */ + CVcxNsUiEngine& iUiEngine; + + /** + * Array of content lists. + */ + RPointerArray iContentListList; + + /** + * Pointer to previously fetched content list. + * + * Owned elsewhere. + */ + CVcxNsContentList* iPreviousList; + + }; + +#endif // C_VCXNSCONTENTPROVIDER_H