classicui_plat/ganes_api/inc/ganes/HgVgMediaWall.h
changeset 47 2f0c06423c72
parent 46 0e1e0022bd03
child 53 3c67ea82fafc
--- a/classicui_plat/ganes_api/inc/ganes/HgVgMediaWall.h	Thu Jul 29 14:21:56 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,781 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "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 HGVGMEDIAWALL_H_
-#define HGVGMEDIAWALL_H_
-
-// INCLUDES
-#include <coecntrl.h>
-#include <coemain.h>
-#include <EGL/egl.h>
-#include <VG/openvg.h>
-#include <ganes/HgBufferOwnerIface.h>
-#include <ganes/HgScrollbarObserverIface.h>
-#include <akntouchgesturefw.h>
-
-// FORWARD DECLARATIONS
-class MHgScrollBufferObserver;
-class MHgSelectionObserver;
-class CHgVgItem;
-class CGulIcon;
-class CHgScrollBufferManager;
-class CHgVgScrollBar;
-class CHgVgMediaWallRenderer;
-class CHgVgSkinRenderer;
-class CHgVgTimer;
-class CHgVgPopup;
-class CHgVgButton;
-class MHgVgMediaWallObserver;
-class CHgVgLabel;
-class CHgVgEGL;
-class THgVgSpring;
-class CAlfCompositionSource;
-class CFbsBitmap;
-
-// CLASS DECLARATION
-class CHgVgMediaWall : 
-    public CCoeControl, 
-    public MHgBufferOwner,
-    public MHgScrollbarObserver,
-    public MCoeForegroundObserver,
-    public AknTouchGestureFw::MAknTouchGestureFwObserver
-    {
-public:
-    
-    /**
-     * Style of the media wall to use.
-     */
-    enum THgVgMediaWallStyle
-        {
-        EHgVgMediaWallStyleCoverflowFullScreen,
-        EHgVgMediaWallStyleCoverflowTBonePortrait,
-        EHgVgMediaWallStyleCoverflowTBoneLandscape,
-        EHgVgMediaWallStyleGrid,
-        EHgVgMediaWallStyleUnknown
-        };
-    
-    /**
-     * Media walls current animation state.
-     */
-    enum THgVgAnimationState
-        {
-        EHgVgMediaWallAnimationStateIdle,
-        EHgVgMediaWallAnimationStateTransition,
-        EHgVgMediaWallAnimationStateFastTransition,
-        EHgVgMediaWallAnimationStateOpening,
-        EHgVgMediaWallAnimationStateClosing,
-        EHgVgMediaWallAnimationStateItemOpened
-        };
-    
-    /**
-     * Media walls selection animation type.
-     * Default behaviour is EHgSelectionAnimationFlipToFront.
-     */
-    enum THgVgOpeningAnimationType
-        {
-        EHgVgOpeningAnimationNone, // no animation takes place when item is tapped
-        EHgVgOpeningAnimationFlipToFront, // flips the opened item by flip angle and fits to set opened item rect.
-        EHgVgOpeningAnimationZoomToFront, // zooms the opened item to set opened item rect.
-        EHgVgOpeningAnimationZoomIn // zooms the item to the back of the camera.        
-        };
-    
-    /**
-     * Event types, CHgVgMediaWall may send through MHgVgMediaWallObserver interface.
-     */
-    enum THgVgMediaWallEvent
-        {
-        EHgVgMediaWallEventRequestHideSoftkeys,
-        EHgVgMediaWallEventRequestShowSoftkeys
-        };
-
-    /**
-     * Flags that define possible mediawall modes
-     */
-    enum THgVgMediaWallMode
-        {
-        EHgVgMediaWallDrawToWindowGC = 0x0001
-        };
-        
-public: 
-    
-    /**
-     * Creates new HgVgMediaWall.
-     * 
-     * @param aRect Rect that the control draws onto.
-     * @param aItemCount Total count of items in the mediawall.
-     * @param aStyle style of the mediawall.
-     * @param aEnableScrollBar ETrue to enable scrollbar.
-     * @param aDefaultIcon Default icon to be used.
-     * 
-     * @return HgVGMediaWall-object
-     */
-    IMPORT_C static CHgVgMediaWall* NewL ( const TRect& aRect, 
-          TInt aItemCount,
-          THgVgMediaWallStyle aStyle,
-          TBool aEnableScrollBar,
-          MObjectProvider* aParent,
-          CGulIcon* aDefaultIcon = NULL); 
-        
-    // Destructor.
-    IMPORT_C virtual ~CHgVgMediaWall();
-    
-public: // CCoeControl
-
-    void Draw(const TRect& aRect ) const;
-    void SizeChanged();
-    void HandlePointerEventL( const TPointerEvent& aEvent );
-    TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
-    void FocusChanged(TDrawNow aDrawNow);
-    void HandleResourceChange(TInt aType);
-    
-private: // MHgBufferOwner
-    void Release(TInt aReleaseStart, TInt aReleaseEnd);
-
-private: // MHgScrollbarObserver
-
-    void ScrollBarPositionChanged( const TPoint& aNewPosition );
-
-    void HandleNaviStripChar( const TChar& aChar );
-
-public: //MCoeForegroundObserver
-    void HandleGainingForeground();
-    void HandleLosingForeground();
-    
-private: // MAknTouchGestureFwObserver
-    
-    void HandleTouchGestureL( AknTouchGestureFw::MAknTouchGestureFwEvent& aEvent );    
-    
-public: // NEW FUNCTIONS
-    /**
-     * Re-inits rendering for new window rectangle.
-     * 
-     * @param aRect New display rect
-     */
-    IMPORT_C void InitScreenL( const TRect& aRect );
-    
-    /**
-     * Refreshes screen.
-     */
-    IMPORT_C void RefreshScreen( TInt aIndex );
-
-    /**
-     * Gives the first index on the screen.
-     * 
-     * Note: The index is not guaranteed to be in the range of the scroller items.
-     * Index can be negative if the scroller is scrolled to the way up or 
-     * over the count - 1 if scrolled way down.   
-     * 
-     * @return The index of the first item on the screen. 
-     */
-    IMPORT_C TInt FirstIndexOnScreen();
-    
-    /**
-     * How many items fit on one screen. 
-     * @return Item count.
-     */
-    IMPORT_C TInt ItemsOnScreen();
-    
-    /**
-     * Get item at specified index.
-     * 
-     * @param aIndex Index of the item that is returned
-     * @return Reference to item.
-     */
-    IMPORT_C CHgVgItem& ItemL( TInt aIndex );
-    
-    /**
-     * Resets item at the index position. Old item is deleted.
-     * 
-     * @param aItem New item. Ownership transferred.
-     * @param aIndex The index of the item.
-     */
-    IMPORT_C void SetItem(CHgVgItem* aItem, TInt aIndex);
-
-    /**
-     * Adds Item.
-     * 
-     * @param aItem New item. Ownership transferred.
-     */
-    IMPORT_C void AddItem(CHgVgItem* aItem);
-
-    /**
-     * Inserts item at index postion.
-     * 
-     * @param aItem New item. Ownership transferred.
-     * @param aIndex The index of the item.
-     */
-    IMPORT_C void InsertItem(CHgVgItem* aItem, TInt aIndex);
-
-    /**
-     * Removes item at index position. Removed item is deleted.
-     * 
-     * @param aIndex The index of the item.
-     */
-    IMPORT_C void RemoveItem(TInt aIndex);
-
-    /**
-     * Returns index of currently selected item in MediaWall. 
-     * In the case of EHgVgMediaWallStyleStyleGrid this method can only
-     * return indices of the items at top row. The index of the item picked
-     * by user is on grids case only passed through MHgSelectionObserver interface.
-     * 
-     * @return Selected index (KErrNotFound if nothing is selected)
-     */
-    IMPORT_C TInt SelectedIndex();
-
-    /**
-     * Sets selected index. Positions the mediwall into this index.
-     * In case of a grid. The mediawall is positioned into row = aIndex / RowCount.
-     * @param aIndex new selected index. Selection is also made visible.
-     */
-    IMPORT_C void SetSelectedIndex( TInt aIndex );
-    
-    /**
-     * Enables Buffering.
-     * @param aObserver Buffer change observer.
-     * @param aBufferSize The size of the buffer.
-     * @param aBufferTreshold The minimum change needed for buffer to be modified.
-     */
-    IMPORT_C void EnableScrollBufferL( MHgScrollBufferObserver& aObserver, 
-            TInt aBufferSize,
-            TInt aBufferTreshold );
-    
-    /**
-     * Sets selection observer.
-     * @param aObserver Selection observer.
-     */
-    IMPORT_C void SetSelectionObserver( MHgSelectionObserver& aObserver );
-
-    /**
-     * Removes all items and presents empty text
-     * */
-    IMPORT_C void Reset();
-    
-    /**
-     * Resizes Grid/List.
-     * @param aItemCount New Count of items.
-     */
-    IMPORT_C void ResizeL( TInt aItemCount );
-
-    /**
-     * Set text that is displayed when there are no items in the view.
-     * @param aEmptyText Empty text.
-     */
-    IMPORT_C void SetEmptyTextL( const TDesC& aEmptyText );
-    
-    /**
-     * Fetch item count.
-     * @return Total number of items.
-     */
-    IMPORT_C TInt ItemCount() const;
-                
-    /**
-     * Sets new default icon.
-     * @param aDefaultIcon New default icon to be used in scroller.
-     */
-    IMPORT_C void SetDefaultIconL( CGulIcon* aDefaultIcon );
-    
-    /**
-     * Disables Scrollbuffer.
-     */
-    IMPORT_C void DisableScrollBuffer();
-    
-    /**
-     *  Changes mediawalls style.
-     *  
-     *  @param aStyle style.
-     *  @param aRect new window rectangle.
-     *  @param aReuseSurface flag to indicate whether or not OpenVG surface should be reconstructed.
-     */
-    IMPORT_C void ChangeStyleL( THgVgMediaWallStyle aStyle, const TRect& aRect, TBool aReuseSurface );
-    
-    /**
-     * Sets button observer. Client can use this to register it self to be 
-     * notified when the user for example, presses hide softkeys button.
-     * 
-     * @param aObserver observer.
-     */
-    IMPORT_C void SetObserver(MHgVgMediaWallObserver* aObserver);
-    
-    /**
-     * Sets type of selection animation to perform, when an item
-     * is opened.
-     * Default behaviour is EHgSelectionAnimationFlipToFront.
-     * 
-     * @param aType type of opening animation.
-     */
-    IMPORT_C void SetOpeningAnimationType(THgVgOpeningAnimationType aType);
-    
-    /**
-     * Gets current MediaWall style.
-     * 
-     * @return THgVgMediaWallStyle.
-     */
-    IMPORT_C THgVgMediaWallStyle Style() const;
-    
-    /**
-     * Gets current opening animation type
-     * 
-     * @return THgVgOpeningAnimationType.
-     */
-    IMPORT_C THgVgOpeningAnimationType OpeningAnimationType() const;
-    
-    /**
-     * Starts opening animation to selected direction. After animation is complete,
-     * Open event is sent to selection observer.
-     * 
-     * @param aOpening if this is true, the selected item is opened, otherwise closed.
-     */
-    IMPORT_C void StartOpeningAnimationL(TBool aOpening);
-    
-    /**
-     * Set mode flags. Possible values are defined in THgVgMediaWallMode.
-     * @param aFlags flags to bet set.
-     */
-    IMPORT_C void SetFlags( TInt aFlags );
-    
-    /**
-     * Clear mode flags. Possible values are defined in THgVgMediaWallMode.
-     * @param aFlags flags to be cleared.
-     */
-    IMPORT_C void ClearFlags( TInt aFlags );
-    
-    /**
-     * Get flags. Possible values are defined in THgVgMediaWallMode.
-     * @return Current flags.
-     */
-    IMPORT_C TInt Flags();
-    
-    /**
-     * Sets item at index as selected and opened item. HandleOpenL not called for observers.
-     * If index is out of range, does nothing. Using this function sets item at index
-     * to the state where it is when it was selected and opened by the user.
-     * One can use for example. StartOpeningAnimationL to togle animation backwards from
-     * this state to normal. This can be useful for example. when returning from a 
-     * a different view and there is a need to pop the item back to the wall from front.
-     * 
-     * @param aIndex of the item to open.  
-     */
-    IMPORT_C void SetItemToOpenedState(TInt aIndex);
-    
-    /**
-     * Sets the rectangle where item fit at the end of opening animation.
-     * 
-     * @param aRect target rectangle where opened item is fitted at the end of opening animation.
-     */
-    IMPORT_C void SetOpenedItemRect(const TRect& aRect);
-                        
-protected: // Constructors
-    
-    CHgVgMediaWall( TInt aItemCount, 
-            CGulIcon* aDefaultIcon, THgVgMediaWallStyle aStyle, 
-            TBool aEnableScrollBar );
-
-    void ConstructL (const TRect& aRect, MObjectProvider* aParent );
-    
-private:
-
-    /**
-     * Handles viewposition change.
-     */
-    void HandleViewPositionChanged(TBool aDontUpdateObserver=EFalse);
-            
-    /**
-     * Initializes items.
-     */
-    void InitItemsL();
-    
-        
-    /**
-     * 
-     */
-    void HandleKeyDown();
-
-    /**
-     * Handles key events.
-     * 
-     * @param aKeyEvent TKeyEvent-object.
-     */
-    TKeyResponse HandleKeyEvent(const TKeyEvent& aKeyEvent);
-    
-    /**
-     * 
-     */
-    void HandleKeyUp();
-    
-    /**
-     * 
-     */
-    void StopKeyScrolling();
-    
-    /**
-     * 
-     */
-    void DoKeyScrolling();
-    
-    /**
-     * 
-     */
-    static TInt KeyScrollingTimerCallback( TAny* aPtr );
-        
-    /**
-     * Handles items count change.
-     */
-    void HandleItemCountChanged();
-                
-    /**
-     * Initializes default icon and
-     * creates VGImage for it.
-     */
-    void InitDefaultIconL();
-        
-    /**
-     * Draws using OpenVG
-     */
-    void DrawOpenVG() const;
-                                
-    /**
-     * Called by callback to do actual animation.
-     */
-    void DoAnimation();
-    
-    /**
-     * Does transition animation, called by DoAnimation.
-     */
-    void DoTransitionAnimation();
-        
-    /**
-     * Does selection animation
-     */
-    void DoSelectionAnimation();
-    
-    /**
-     * Callback method for animation
-     *
-     * @param aPtr Pointer to an instance of CHgVgMediaWall class.
-     *
-     * @return System wide error code.
-     */
-    static TInt AnimationTimerCallback( TAny* aPtr );
-                    
-    /**
-     * Updates bitmaps used to render album and artist titles.
-     */
-    void UpdateLabelsAndPopup();
-
-    /**
-     * Draws album and artist titles.
-     */
-    void DrawTitles(TReal aAlpha);
-        
-    
-    /**
-     * Initializes scroll bar.
-     */
-    void InitScrollBarL(TBool aResize);
-    
-    /**
-     * Initializes skin rendering.
-     */
-    void InitSkinRendererL();
-    
-    /**
-     * Initializes whole rendering functionality.
-     */
-    void InitRenderingL(TBool aRecreateSurface);
-    
-    /**
-     * Frees videomemory used by items.
-     */
-    void FreeItemsImages();
-    
-    /**
-     * Reloads images to items.
-     */
-    void ReloadItemsImages();
-    
-    /**
-     * 
-     */
-    void HandleTapEventL(const TPoint& aPosition);
-        
-    /**
-     * 
-     */
-    void HandleFlick(const TPoint& aSpeed);
- 
-    /**
-     *
-     */ 
-    void HandleDragging(const AknTouchGestureFw::MAknTouchGestureFwDragEvent& aEvent);
-    
-    /**
-     * 
-     */
-    TInt GetStepsFromSpeed(TInt aSpeed) const;
-    
-    /**
-     * 
-     */
-    void StartAnimationTimer();
-                       
-    /**
-     * 
-     */
-    TReal GetAsPercentageOfScreenWidth(TInt aPixels) const;
-    
-    /**
-     * 
-     */
-    TReal GetAsPercentageOfScreenHeight(TInt aPixels) const;
-        
-    /**
-     * 
-     */
-    void DrawScene();
-            
-    /**
-     * 
-     */
-    void HandleDragStart(const AknTouchGestureFw::MAknTouchGestureFwDragEvent& aEvent);
-    
-    /**
-     * 
-     */
-    void HandleDragOn(const AknTouchGestureFw::MAknTouchGestureFwDragEvent& aEvent);
-    
-    /**
-     * 
-     */
-    void HandleDragStop(const AknTouchGestureFw::MAknTouchGestureFwDragEvent& aEvent);
-        
-    /**
-     * 
-     */
-    void HandleTransitionAnimationStop();
-        
-    /**
-     * 
-     */
-    void DrawLetterStripAndTitles();
-    
-    /**
-     * 
-     */
-    void DrawButtonsAndScrollbar();
-       
-    /**
-     * 
-     */
-    void InitButtonsL();
-           
-    /**
-     * 
-     */
-    CGulIcon* CreateIconL(TInt aId1, TInt aId2, const TSize& aSize);
-
-    /**
-     * 
-     */
-    TBool HandleButtons(const TPointerEvent& aEvent);
-    
-    /**
-     * 
-     */
-    TInt MaxViewPosition() const;
-    
-    
-    /**
-     * 
-     */
-    TBool BeginSelection(TInt aIndex);
-    
-    /**
-     * 
-     */
-    void EndSelection();
-    
-    /**
-     * 
-     */
-    void DoStartOpeningAnimationL();
-    
-    /**
-     * 
-     */
-    void StartAnimationToPosition(TReal aX, TBool aUpdateScrollBar);
-       
-    /**
-     * 
-     */
-    void StartAnimationToPosition(TReal aX, TReal aY, TBool aUpdateScrollBar);
-
-    /**
-     * 
-     */
-    CFbsBitmap* DrawToBitmap();
-    
-    /**
-     * 
-     */
-    void DestroyRendering();
-    
-    /**
-     * 
-     */
-    TBool DrawAll();
-    
-    /**
-     * 
-     */
-    void InitMediaWallFullScreenLandscapeL();
-    
-    /**
-     * 
-     */
-    void InitMediaWallTBonePortraitL();
-    
-    /**
-     * 
-     */
-    void InitMediaWallGridLandscapeL();
-
-    /**
-     * 
-     */
-    void InitLabelsL(TInt aLayoutVariant);
-    
-    /**
-     * 
-     */
-    void InitPopupL(TInt aLayoutVariant);
-    
-protected:
-    CHgScrollBufferManager* iManager; // Own
-    
-    HBufC* iEmptyText; // text for empty list or grid.
-    
-    // Observers
-    MHgSelectionObserver* iSelectionObserver; // Not Own
-    
-    // Arrays
-    RPointerArray<CHgVgItem> iItems; // Items
-
-    // For dragging
-    TTime iPrevTime; // Previous pointer position time.
-                
-    TInt iItemCount; // Total number of items
-    
-    TInt iItemsOnScreen; // Max items on screen.    
-        
-    TInt iSelectedIndex; // The index of the selected item
-                                    
-    CGulIcon* iDefaultIcon; // Default item icon, owns
-                
-    THgVgAnimationState iAnimationState; // current animation state
-    TInt64 iAnimationDuration; // total length of the animation    
-    TTime iAnimationStartTime; // starting time of the animation   
-    TReal iAnimationAlpha; // value going from 0-1 during animation    
-    CHgVgTimer* iAnimationTimer;  
-             
-    TBool iScrollBarEnabled;
-    CHgVgScrollBar* iScrollBar; // Scrollbar, owns
-    TBool iScrollBarHit;
-    TBool iUpdateScrollBar;
-    
-    CHgVgMediaWallRenderer* iRenderer; // Renderer for current media wall style, owns
-            
-    CHgVgSkinRenderer* iSkinRenderer; // Renderer for drawing skin, owns.
-
-    THgVgMediaWallStyle iMediaWallStyle; // Style of mediawall.
-                                
-    //TTime iKeyPressStartTime;
- 
-    AknTouchGestureFw::CAknTouchGestureFw* iTouchFw; // touch gesture fw, own.
-    
-    TReal iViewPositionAtDragStart;
-    
-    CHgVgPopup* iLetterPopup; // letter popup show when using scrollbar, own.
-    
-    CHgVgButton* iHideSKButton; // button for hiding softkeys, own.
-    
-    MHgVgMediaWallObserver* iMediaWallObserver;
-    
-    TRect iRect;
-    
-    THgVgOpeningAnimationType iOpeningAnimationType;
-        
-    TInt iPreviousPointerDelta;
-
-    TBool iIsForeground;
-    TBool iUsingDefaultIcon;
-            
-    TBool iButtonsHit;
-        
-    TBool iPointerDown; 
-    
-    CHgVgLabel* iArtistLabel; // label for artist text, own.
-    CHgVgLabel* iAlbumLabel; // label for album text, own.
-    CHgVgLabel* iEmptyLabel; // label for empty text, own.
-
-    enum TKeyScrollingState
-        {
-        ENoKeyScrolling = 0,
-        EKeyScrollingUp,
-        EKeyScrollingDown,
-        EKeyScrollingLeft,
-        EKeyScrollingRight
-        } iKeyScrollingState; // State of the key scrolling
-    
-    TInt iKeyRepeats;
-    CPeriodic* iKeyScrollingTimer; // Timer for key scrolling, own.    
-
-    CHgVgEGL* iEGL; // encapsulated egl stuff, own.
-    
-    TInt iRowCount; // number of rows in grid style
-
-    TReal iCameraRotationFactor; // max amount of camera rotation in radians
-    TReal iCameraZoomFactor; // max amount of zoom out
-    TReal iSpringVelocityToAnimationFactor; // factor used to convert spring velocity to animation alpha
-    
-    RBuf iPopupText1; // text1 shown in popup 
-    RBuf iPopupText2; // text2 shown in popup
-                
-    TBool iSelectionMode; // used to indicate when user is selectin items in grid style
-    
-    THgVgSpring* iSpring; // spring physics simulator, own.
-    
-    TInt iBufferPosition;
-    
-    CHgVgItem* iTempItem;
-
-    TInt iPickedGridItem; // item picked from grid
-    
-    TInt iPrevGridItem; // prev item selected from grid
-    TInt iSelGridItem; // selected it from grid
-    
-    TReal iItemsToMoveOnFullScreenDrag;
-    
-    TInt iFlags;
-    
-    CAlfCompositionSource* iCompositionSource;    
-    
-    CFbsBitmap* iSurfaceBitmap;    
-    };
-
-       
-#endif /*HGVGMEDIAWALL_H_*/