videofeeds/hgvodui/inc/vcxhgvodmainview.h
changeset 0 96612d01cf9f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videofeeds/hgvodui/inc/vcxhgvodmainview.h	Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,423 @@
+/*
+* 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:    HG VOD Feed view implementation*
+*/
+
+
+// Version : %version: tr1ido#REL6_12 %
+
+#ifndef VCXHGVODMAINVIEW_H
+#define VCXHGVODMAINVIEW_H
+
+#include <aknview.h>
+#include <videoplayeractivationmessage.h>
+#include "vcxviewmessageutility.h"
+
+class CAknTitlePane;
+class CAknNavigationControlContainer;
+class CEikonEnv;
+class CAknsBasicBackgroundControlContext;
+class CGulIcon;
+class CRepository;
+class CVcxHgVodMainViewContainer;
+class CIptvResourceLoader;
+class MEikMenuObserver;
+class CVcxNsPlayerWrapper;
+class CVcxNsUiEngine;
+class MMPXViewUtility;
+class CVcxNsContent;
+class CVcxHgVodServiceListImpl;
+class CVcxHgVodCategoryListImpl;
+class CVcxHgVodContentListImpl;
+class CVcxHgVodServiceGroupListImpl;
+class CVcxHgVodListImplBase;
+class CVcxHgVodTelephonyClient;
+class TViaPlayerCustomMessage;
+class CHgDoubleGraphicList;
+class CHgDoubleTextList;
+
+// CLASS DECLARATION
+/**
+ *  Main view
+ *  
+ *
+ *  @code
+ *   
+ *  @endcode
+ *
+ *  @lib vcxhgvodui.lib
+ *  @since S60 v5.0
+ */
+class CVcxHgVodMainView : public CAknView,
+                          public MVcxViewMessageObserver
+    {
+
+public:
+    
+    //list type
+    enum TVcxHgVodListType
+        {
+        EVcxNsServiceList,
+        EVcxNsCategoryList,
+        EVcxNsContentList,
+        EVcxNsCustomList
+        };
+    
+    /**
+     * Two-phased constructor.
+     */
+    IMPORT_C static CVcxHgVodMainView* NewL( );
+    
+    /**
+     * Two-phased constructor.
+     */
+    IMPORT_C static CVcxHgVodMainView* NewLC( );
+
+    /**
+    * Destructor.
+    */
+    IMPORT_C virtual ~CVcxHgVodMainView();
+    
+    /** 
+     * Accessor for the application's AppUi.
+     *
+     * @return Pointer to AppUi.
+     */
+    CAknViewAppUi* AppUi() const { return CAknView::AppUi(); }
+    
+    /**
+    * Get pointer to title pane
+    * @return Pointer to CAknTitlePane
+    */
+    CAknTitlePane* TitlePaneL();
+    
+    /**
+    * Get pointer to navi pane
+    * @return Pointer to CAknNavigationControlContainer
+    */
+    CAknNavigationControlContainer* NaviPaneL();
+
+    /**
+     * Accessor for player wrapper.
+     * 
+     * @return Pointer to player wrapper.
+     */
+    CVcxNsPlayerWrapper* PlayerWrapper();
+
+    /**
+     * Command handling function
+     * @param aCommand ID of the command to respond to 
+     */
+    void HandleCommandL( TInt aCommand );
+    
+    /**
+     * Accessor for view container
+     * 
+     */
+    CVcxHgVodMainViewContainer* Container();
+
+    /**
+     * Handles key events from container.
+     * 
+     * @param aKeyEvent Key event.
+     * @param aType Key event type.
+     * @return Response, tells if key was handled or not.
+     */
+    TKeyResponse HandleKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );    
+
+    /**
+     * Create list widget and related classes 
+     * @param aType List type
+     */
+    void CreateListL( TVcxHgVodListType aType );
+    
+    /**
+    * Change list inside main view. 
+    * No actual view change, just switch to different list type.
+    */
+    void ChangeListViewL();
+    
+    /**
+    * Open settings view via mpx view utility
+    * @param aCommand Command for the state where settings is opened
+    */
+    void OpenSettingsL( TInt aCommand );
+    
+    /**
+    * Open schedule settings for the service.
+    */
+    void OpenScheduleSettingsL();
+
+    /**
+    * Get pointer to active list in view
+    * @return Pointer to active list. 
+    */
+    CVcxHgVodListImplBase* ActiveList();
+    
+    /**
+     * PlayInternalVideoL
+     * 
+     * @param aContent Content that contains video data.
+     */
+    void PlayInternalVideoL( CVcxNsContent* aContent );
+    
+    /**
+     * Play stream
+     * @param aUrl Url
+     */
+    void PlayStreamL( const TDesC& aUrl );
+
+    /**
+     * From MVcxViewMessageObserver
+     * Handles a custom view message.
+     * @param aMessageUid    UID for custom message
+     * @param aCustomMessage Message contents
+     */
+    void HandleCustomViewMessageL(
+            const TUid aMessageUid, 
+            const TDesC8 &aCustomMessage );
+    
+    /**
+     * Called by list impelementation(s) when layout is changed.
+     */
+    void LayoutChanged();
+    
+    /**
+     * Return eikon env.
+     * 
+     * @return Reference to eikon env
+     */
+    CEikonEnv& EikonEnv();
+    
+    /**
+     * Return view's cba.
+     */
+    CEikButtonGroupContainer* ViewCba(); 
+    
+    /**
+     * Return touch support flag.
+     * ETrue if touch supported.
+     */
+    TBool IsTouchSupported();
+        
+private:
+    
+    /**
+     * Set active list 
+     * @param aList 
+     */
+    void SetActiveList( CVcxHgVodListImplBase* aList );
+    
+    /**
+     * From CAknView returns Uid of View
+     * @return TUid uid of the view
+     */
+    TUid Id() const;
+
+    /**
+     * From CAknView activate the view
+     *
+     * @since S60 v3.0
+     * @param aPrevViewId
+     * @param aCustomMessageId
+     * @param aCustomMessage
+     */
+    void DoActivateL( const TVwsViewId& aPrevViewId,
+                      TUid  aCustomMessageId,
+                      const TDesC8& aCustomMessage );
+
+    /**
+     * From CAknView deactivate the view (free resources)
+     *
+     * @since S60 v3.0
+     */
+    void DoDeactivate();
+	
+    /**
+     * Default constructor
+     *
+     */
+    CVcxHgVodMainView( );
+
+    /**
+     * Constructor
+     *
+     */
+    void ConstructL();
+    
+    //From MEikMenuObserver
+
+    /**
+    * Menu item handling method
+    * @param aResourceId Menu pane resource id
+    * @param aMenuPane Pointer to menu pane
+    */
+    void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+    
+    /**
+     * Supplies objects to Mop childs.
+     * @param aId Type of object to supply.
+     * @return Type UID pointer containing supplied object, or @c NULL type UID
+     *   pointer if given type is not found.
+     */
+    TTypeUid::Ptr MopSupplyObject( TTypeUid aId );
+    
+    /**
+     * Handles the change of status pane.
+     */
+    void HandleStatusPaneSizeChange();
+
+    /**
+     * Handles the foreground event.
+     * @param aForeground Is foreground state gained or not.
+     */
+    void HandleForegroundEventL( TBool aForeground );
+    
+    /**
+     * Checks parental control for a video, and asks lock code.
+     *
+     * @leave KErrPermissionDenied If not allowed to play.
+     * @param aAgeProfile Age profile for the video to be checked.
+     */
+    void CheckParentalControlL( TUint32 aAgeProfile );
+            
+    /*
+     * Process custom activation message.
+     * 
+     * @param aCustomMessage The message.
+     */
+    void ProcessCustomMessageL( const TDesC8& aCustomMessage );
+    
+    /*
+     * Handles custom activation message.
+     */ 
+    void HandleCustomViewMessageL();
+    
+    /**
+     * Locates the mif file searching from y: to a: and then z: last
+     *
+     * @param aFileName Full path to mif file.
+     */
+    void LocateMifFileL( TFileName& aFileName );
+        
+private: // data
+
+    /**
+     * View id
+     */
+    TUid iViewId; 
+    
+    /**
+    * Flag for touch support
+    */
+    TBool iTouchSupport;
+    
+    /**
+     * View container
+     * Own.
+     */
+    CVcxHgVodMainViewContainer* iContainer;
+    
+    /**
+    * Resource loader
+    * Own.
+    */        
+    CIptvResourceLoader* iResourceLoader;
+    
+    /**
+     * Background context.
+     * Own.
+     */
+    CAknsBasicBackgroundControlContext* iBgContext;
+    
+    /**
+     * Ui engine.
+     * Own.
+     */
+    CVcxNsUiEngine* iModel;
+    
+    /**
+     * Service list view implementation
+     * Own. 
+     */
+    CVcxHgVodServiceListImpl* iServiceList;
+
+    /**
+     * Category list view implementation
+     * Own. 
+     */
+    CVcxHgVodCategoryListImpl* iCategoryList;
+    
+    /**
+     * Content list view implementation
+     * Own. 
+     */
+    CVcxHgVodContentListImpl* iContentList;
+
+    /**
+     * Service group list view implementation
+     * Own. 
+     */
+    CVcxHgVodServiceGroupListImpl* iServiceGroupList;
+    
+    /**
+     * Content list view implementation
+     * Own. 
+     */
+    CVcxHgVodListImplBase* iActiveList;
+    
+    /**
+    * Mpx view Utility
+    */
+    MMPXViewUtility* iViewUtility;
+    
+    /**
+     * Scroller for double graphics hg list.
+     * Own.
+     */
+    CHgDoubleGraphicList* iGraphicScroller;
+
+    /**
+     * Scroller for double text hg list.
+     * Own.
+     */
+    CHgDoubleTextList* iTextScroller;
+    
+    /**
+     * Default icon for services.
+     * Own.
+     */
+    CGulIcon* iServiceDefaultIcon;
+    
+    /**
+     * Default icon for content.
+     * Own.
+     */
+    CGulIcon* iContentDefaultIcon;
+    
+    /**
+     * Telephony client for lock code queries
+     * Own.
+     */
+    CVcxHgVodTelephonyClient* iTelephonyClient;
+    
+    /**
+     * Central repository access needed for parental control setting.
+     * Own.
+     */
+    CRepository* iCenRep;
+    
+    };
+
+#endif // VCXHGVODMAINVIEW_H