diff -r 000000000000 -r 96612d01cf9f videofeeds/vcnsuiengine/inc/vcxnsuiengine.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/vcnsuiengine/inc/vcxnsuiengine.h Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,481 @@ +/* +* 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_VCXNSUIENGINE_H +#define C_VCXNSUIENGINE_H + +// INCLUDES +#include + +#include "iptvlastwatcheddata.h" + +// FORWARD DECLARATIONS +class CVcxNsServiceProvider; +class CVcxNsContentProvider; +class CVcxNsCategoryProvider; +class MVcxNsServiceProviderIf; +class MVcxNsContentProviderIf; +class MVcxNsCategoryProviderIf; +class CVcxNsServiceClientHandler; +class CVcxNsContentClientHandler; +class CVcxNsMpxCollectionClientHandler; +class CVcxNsEventRouter; +class CVcxNsContentSearchHandler; +class MVcxNsContentSearchIf; +class CVcxNsUpdateProgressHandler; +class MVcxNsUpdateProgressIf; +class CVcxConnectionUtility; +class CVcxNsStreamingHandler; +class CIptvLastWatchedApi; +class CMediatorEventProvider; +class CVcxNsContent; + +// ENUMS + +/** +* Video Center application states +*/ +typedef enum + { + EStateNoState = 0, + EStateServiceView, + EStateCategoryView, + EStateContentView, + EStateCustomView, + EStateSetting, + EStateMyVideos, + EStateBrowser, + EStatePlayback, + EStateOther + } TVcxNsAppState; + +// CLASS DECLARATION + +/** +* Video Center Ui Engine class +* +* @lib vcxnsuiengine.lib +*/ +class CVcxNsUiEngine : public CBase + { + +public: + + /** + * Get instance of VcxNs ui engine. + * + * Returns a pointer to existing, or else creates a new instance. + * NOTE: this increases automatically the reference count, so this should + * not be called multiple times without cleaning the references. + * + * @return Pointer to CVcxNsUiEngine. + */ + IMPORT_C static CVcxNsUiEngine* InstanceL(); + + /** + * Remove the reference to this ui engine instance. + * + * Decreases the reference count by one, this should + * be called when not needing ui engine anymore. When + * all references are removed, the ui engine is destructed. + */ + IMPORT_C void DecreaseReferenceCount(); + +// New functions + + /** + * Get pointer to app service provider object. Ownership not transferred. + * + * @return Pointer to CVcxNsServiceProvider. + */ + IMPORT_C MVcxNsServiceProviderIf* GetServiceProviderL(); + + /** + * Get pointer to app content provider object. Ownership not transferred. + * + * @return Pointer to CVcxNsContentProvider. + */ + IMPORT_C MVcxNsContentProviderIf* GetContentProviderL(); + + /** + * Get pointer to app category provider object. Ownership not transferred. + * + * @return Pointer to CVcxNsCategoryProvider. + */ + IMPORT_C MVcxNsCategoryProviderIf* GetCategoryProviderL(); + + /** + * Get pointer to app content search handler object. + * Ownership not transferred. + * + * @return Pointer to content search interface. + */ + IMPORT_C MVcxNsContentSearchIf* ContentSearchHandlerL(); + + /** + * Get pointer to content update progress handler + * Ownership not transferred. + * + * @return Pointer to update progress interface. + */ + IMPORT_C MVcxNsUpdateProgressIf* ProgressHandlerL(); + + /** + * Get the videocenter application state. + * + * @return Current videocenter application state + */ + IMPORT_C TVcxNsAppState VcAppState(); + + /** + * Set the videocenter application state. + * + * @param aAppState New videocenter application state + */ + IMPORT_C void SetVcAppState( TVcxNsAppState aAppState ); + + /** + * Handle back command. Activates previous application state. + * + * @return Was the back event consumed. If EFalse, + * the back event should be handled by caller. + */ + IMPORT_C TBool HandleBack(); + + /** + * Handle clieant app exit command. Clears application states. + */ + IMPORT_C void ResetStates(); + + /** + * Returns active Category id + * @return Id of the category + */ + IMPORT_C TUint32 ActiveCategory(); + + /** + * Get iap for connection + * @return IAP. + */ + IMPORT_C TUint32 GetAvailableIapL(); + + /** + * Get WAP id for the connection. + * @return WAP id matching the given IAP id. + */ + IMPORT_C TUint32 GetAvailableWapIdL(); + + /** + * Starts to play the given content + * + * NOTE: this Works only with MPX video player + * + * @param aContent Content to be played. + */ + IMPORT_C void PlayVideoL( CVcxNsContent* aContent ); + + /** + * Starts to play the given content + * + * NOTE: this Works only with MPX video player + * + * @param aContent Content to be played. Ownership not passed. + */ + IMPORT_C void PlayStreamL( CVcxNsContent* aContent ); + + /** + * Starts to play the last watched + * + * NOTE: this Works only with MPX video player + */ + IMPORT_C void PlayLastWatchedL(); + + /** + * Should be called when playback of video is starting. Updates 'Last + * Watched' information to Matrix and dat-file. + * + * @param aContent Content item representing played video. + */ + IMPORT_C void VideoPlaybackStartingL( CVcxNsContent* aContent ); + + /** + * Removes the topmost state from application state stack. + * Needed for vod view changes, where back navigation route changes. + * This is intended just for UI engine's internal use + */ + void PopAppStateStack(); + + /** + * Get service provider ptr, ownership not transferred. + * for ui engine internal use, pointer can be NULL + * + * @return Pointer to CVcxNsServiceProvider + */ + CVcxNsServiceProvider* ServiceProvider(); + + /** + * Get content provider ptr, ownership not transferred. + * for ui engine internal use, pointer can be NULL + * + * @return Pointer to CVcxNsContentProvider + */ + CVcxNsContentProvider* ContentProvider(); + + /** + * Get category provider ptr, ownership not transferred. + * for ui engine internal use, pointer can be NULL + * + * @return Pointer to CVcxNsContentProvider + */ + CVcxNsCategoryProvider* CategoryProvider(); + + /** + * Get pointer to service client handler class + * + * @return Pointer to CVcxNsServiceClientHandler. + * ownership not transferred. + */ + CVcxNsServiceClientHandler* GetServiceClientHandlerL(); + + /** + * Get pointer to content client handler class + * + * @return Pointer to CVcxNsContentClientHandler. + * ownership not transferred. + */ + CVcxNsContentClientHandler* GetContentClientHandlerL(); + + /** + * Get pointer to Mpx collection client handle + * + * @return Pointer to CVcxNsContentClientHandler. + * ownership not transferred. + */ + CVcxNsMpxCollectionClientHandler* GetMpxCollectionClientHandlerL(); + + /** + * Get pointer to search handler. + * + * @return Pointer to CVcxNsContentSearchHandler. + * ownership not transferred. + */ + CVcxNsContentSearchHandler* GetContentSearchHandlerL(); + + /** + * Get pointer to event handler class + * + * @return Pointer to CVcxNsEventRouter. + * ownership not transferred. + */ + CVcxNsEventRouter* GetEventRouter(); + + /** + * Get pointer to progress update handler + * + * @return Pointer to progress handler. + * Ownership not transferred. + */ + CVcxNsUpdateProgressHandler* GetProgressHandler(); + + /** + * Returns active Service id + * + * @return Active service's id + */ + TUint32 ActiveService(); + + /** + * Set active Service id + * + * @param aServiceId Active service's id + */ + void SetActiveService( TUint32 aServiceId ); + + /** + * Returns active Service group + * + * @return Active service group id + */ + TUint32 ActiveServiceGroup(); + + /** + * Set active Service group id + * + * @param aServiceId Active service group id + */ + void SetActiveServiceGroup( TUint32 aServiceId ); + + /** + * Set active Category id + * @param aCategoryId Active gategory's id + */ + void SetActiveCategory( TUint32 aCategoryId ); + +// from MvcxNsPlayerObserver + + /** + * MnpwoLastPlaybackPosition + * @param aContentUri Content Uri + * @return Play position + */ + TInt MnpwoLastPlaybackPosition( const TDesC& aContentUri ); + + /** + * MnpwoSetLastPlaybackPosition + * @param aContentUri Content Uri + * @param aPos Play position + */ + void MnpwoSetLastPlaybackPosition( const TDesC& aContentUri, TInt aPos ); + +private: + + /** + * Deletes the ui engine instance. + * @param aThis class pointer + */ + static void DeleteInstance( CVcxNsUiEngine* aThis ); + + /** + * Increases the reference count to this ui engine instance. + */ + void IncreaseReferenceCount(); + + CVcxNsUiEngine(); + + void ConstructL(); + + virtual ~CVcxNsUiEngine(); + + void RaisePlayEventL( CVcxNsContent* aContent ); + + void WriteLastWatchedL( CVcxNsContent* aContent ); + + /** + * @return The content. Ownership is transferred to caller. + */ + CVcxNsContent* LastWatchedToContentL(); + +private: + +// Data + + /** + * Service provider + */ + CVcxNsServiceProvider* iServiceProvider; + + /** + * Content provider + */ + CVcxNsContentProvider* iContentProvider; + + /** + * Category provider + */ + CVcxNsCategoryProvider* iCategoryProvider; + + /** + * Count of references to this ui engine object. + */ + TInt iReferenceCount; + + /** + * Service client handler + */ + CVcxNsServiceClientHandler* iServiceClientHandler; + + /** + * Content client handler + */ + CVcxNsContentClientHandler* iContentClientHandler; + + /** + * Mpx collection client handler + */ + CVcxNsMpxCollectionClientHandler* iMpxCollectionClientHandler; + + /** + * Application state + */ + TVcxNsAppState iApplicationState; + + /** + * Event router + */ + CVcxNsEventRouter* iEventRouter; + + /** + * Application state history, needed for handling back commands. + */ + RArray iAppStateStack; + + /** + * Active Service id + */ + TUint32 iActiveService; + + /** + * Active Service Group id + */ + TUint32 iActiveServiceGroup; + + /** + * Active Category id + */ + TUint32 iActiveCategory; + + /** + * Content search handler. + * Own. + */ + CVcxNsContentSearchHandler* iContentSearchHandler; + + /** + * Connection utility + */ + CVcxConnectionUtility* iConnUtil; + + /** + * Content update progress handler. + * Own. + */ + CVcxNsUpdateProgressHandler* iProgressHandler; + + /** + * Pointer to 'Last Watched' API. + * Own. + */ + CIptvLastWatchedApi* iLastWatchedApi; + + /** + * Pointer to Mediator Event class. + * Own. + */ + CMediatorEventProvider* iMediatorEventProvider; + + /** + * Pointer to Streaming Handler. + * Own. + */ + CVcxNsStreamingHandler* iStreamingHandler; + + }; + +#endif // C_VCXNSUIENGINE_H