videofeeds/vcnsuiengine/inc/vcxnsuiengine.h
changeset 0 96612d01cf9f
--- /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 <e32base.h>
+
+#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<TVcxNsAppState> 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