classicui_plat/ganes_api/inc/ganes/HgScroller.h
changeset 47 2f0c06423c72
parent 46 0e1e0022bd03
child 53 3c67ea82fafc
--- a/classicui_plat/ganes_api/inc/ganes/HgScroller.h	Thu Jul 29 14:21:56 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,504 +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 HGSCROLLER_H_
-#define HGSCROLLER_H_
-
-// INCLUDES
-#include <coecntrl.h>
-#include <coemain.h>
-
-#include <aknphysicsobserveriface.h>
-#include <aknlongtapdetector.h>
-#include <akncollection.h>
-#include <ganes/HgBufferOwnerIface.h>
-#include <ganes/HgScrollbarObserverIface.h>
-
-// FORWARD DECLARATIONS
-class CAknPhysics;
-class MHgScrollBufferObserver;
-class MHgSelectionObserver;
-class MHgMarkingObserver;
-class CHgItem;
-class CHgScrollbar;
-class CGulIcon;
-class CHgScrollBufferManager;
-class THgPopupDrawer;
-class CHgIndicatorManager;
-class CHgDrawUtils;
-class CHgKeyUtils;
-class CHgTextFind;
-class CAknItemActionMenu;
-
-// CLASS DECLARATION
-class CHgScroller : 
-    public CCoeControl, 
-    public MHgBufferOwner,
-    public MHgScrollbarObserver,
-    public MCoeForegroundObserver,
-    public MAknPhysicsObserver,
-    public MAknLongTapDetectorCallBack,
-    public MAknCollection
-    {
-public:
-    
-    // Flags that define possible scroller modes
-    enum THgScrollerMode
-        {
-        EHgScrollerSelectionMode = 0x0001,
-        EHgScrollerSearchWithQWERTY = 0x0002,
-        EHgScrollerKeyMarkingDisabled = 0x0004,
-        EHgScrollerScreenFreeze = 0x0008,
-        EHgScrollerForceDoubleClick = 0x0010,
-        EHgScrollerFlatStatusPane = 0x0020
-        };
-
-    // Scrollbar types
-    enum THgScrollBarType
-        {
-        EHgScrollerScrollBar = 0,
-        EHgScrollerLetterStrip,
-        EHgScrollerTimeStrip,
-        EHgScrollerLetterStripLite
-        };
-    
-public: // Destructor.
-    IMPORT_C virtual ~CHgScroller();
-    
-public: // CCoeControl
-    void Draw(const TRect& aRect ) const;
-    void SizeChanged();
-    void HandlePointerEventL( const TPointerEvent& aEvent );
-    TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
-    virtual TCoeInputCapabilities InputCapabilities() const;
-    virtual void FocusChanged(TDrawNow aDrawNow);
-    virtual void HandleResourceChange(TInt aType);
-
-protected: // MAknPhysicsObserver
-    void ViewPositionChanged( const TPoint& aNewPosition,
-                                  TBool aDrawNow,
-                                  TUint aFlags );
-    void PhysicEmulationEnded();
-    TPoint ViewPosition() const;
-    
-private: // MHgBufferOwner
-    void Release(TInt aReleaseStart, TInt aReleaseEnd);
-
-private: // MHgScrollbarObserver
-    void ScrollBarPositionChanged( const TPoint& aNewPosition );
-    void HandleNaviStripChar( const TChar& aChar );
-
-protected: // MAknLongTapDetectorCallBack
-    void HandleLongTapEventL( const TPoint& aPenEventLocation,
-                            const TPoint& aPenEventScreenLocation);
-    
-protected: // MAknCollection
-    TUint CollectionState() const;
-    void ItemActionMenuClosed();
-    TInt CollectionExtension( TUint aExtensionId, TAny*& a0, TAny* a1 );
-
-public: // NEW FUNCTIONS
-    /**
-     * Re-inits the grid display area. DSA version.
-     * 
-     * @param aRect New display rect
-     * @param aSession Window server session for DSA
-     */
-    IMPORT_C void InitScreenL( const TRect& aRect, RWsSession& aSession );
-    
-    /**
-     * Re-inits the grid display area. Non-DSA version.
-     * 
-     * @param aRect New display rect
-     */
-    IMPORT_C void InitScreenL( const TRect& aRect );
-    
-    /**
-     * Refreshes screen.
-     * @param aIndex Index that was modified.
-     */
-    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 CHgItem& 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(CHgItem* aItem, TInt aIndex);
-
-    /**
-     * Adds Item.
-     * 
-     * @param aItem New item. Ownership transferred.
-     */
-    IMPORT_C void AddItem(CHgItem* aItem);
-
-    /**
-     * Inserts item at index postion.
-     * 
-     * @param aItem New item. Ownership transferred.
-     * @param aIndex The index of the item.
-     */
-    IMPORT_C void InsertItem(CHgItem* 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);
-
-    /**
-     * @return Selected index (KErrNotFound if nothing is selected)
-     */
-    IMPORT_C TInt SelectedIndex();
-
-    /**
-     * Sets selected index.
-     * @param aIndex new selected index. Selection is also made visible.
-     */
-    IMPORT_C void SetSelectedIndex( TInt aIndex );
-    
-    /**
-     * Marks item at index position.
-     * @param aIndex Index of the item that is marked.
-     */
-    IMPORT_C void Mark( TInt aIndex );
-
-    /**
-     * Unmarks item at index position.
-     * @param aIndex Index of the item that is unmarked.
-     */
-    IMPORT_C void UnMark( TInt aIndex );
-    
-    /**
-     * Marks all items.
-     */
-    IMPORT_C void MarkAll();
-
-    /**
-     * Unmarks all items.
-     */
-    IMPORT_C void UnMarkAll();
-    
-    /**
-     * Gets all marked item indexes.
-     * @param aIndexes On return contains the indexes of marked items.
-     */
-    IMPORT_C void GetMarkedItemsL( RArray<TInt>& aIndexes );
-    
-    /**
-     * 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 );
-
-    /**
-     * Sets marking observer.
-     * @param aObserver marking observer.
-     */
-    IMPORT_C void SetMarkingObserver( MHgMarkingObserver& 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;
-    
-    /**
-     * Set scrollbar type.
-     * @param aType ScrollBar type
-     */
-    IMPORT_C void SetScrollBarTypeL( THgScrollBarType aType );
-    
-    /**
-     * Set mode flags. Possible values are defined in THgScrollerMode.
-     * @param aFlags flags to bet set.
-     */
-    IMPORT_C void SetFlags( TInt aFlags );
-    
-    /**
-     * Clear mode flags. Possible values are defined in THgScrollerMode.
-     * @param aFlags flags to be cleared.
-     */
-    IMPORT_C void ClearFlags( TInt aFlags );
-    
-    /**
-     * Get flags. Possible values are defined in THgScrollerMode.
-     * @return Current flags.
-     */
-    IMPORT_C TInt Flags();
-    
-    /**
-     * Highlights item based on the descriptor given.
-     * @param aHighlightText Text to be searched.
-     * @return Was aHighlightText found.
-     */
-    IMPORT_C TBool HightlightItem( const TDesC& aHighlightText );
-    
-    /**
-     * 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();
-
-    // Selection modes. Used in internal key marking implemention.
-    enum TSelectionMode
-        {
-        ENoSelection = 0,
-        ESelectionPossible,
-        ESelectionMark,
-        ESelectionUnMark
-        };
-    
-    /**
-     * Set selection mode. Used in internal key marking implemention.
-     * @param aMode New selection mode.
-     */
-    void SetSelectionMode( TSelectionMode aMode );
-    
-    /**
-     * Get current selection mode. Used in internal key marking implemention.
-     * @return Current selection mode.
-     */
-    TSelectionMode SelectionMode() const;
-    
-protected: // Pure Virtual Functions
-    virtual TInt GetSelected( TPoint aPosition ) const = 0;
-    virtual void HandleSizeChanged() = 0;
-    virtual void InitItemsL() = 0;
-    virtual TSize TotalSize() const = 0;
-    virtual void DoDraw( const TRect& aRect ) const = 0;
-    virtual TBool DoHandleKeyEvent( const TKeyEvent& aKeyEvent ) = 0;
-    virtual void FitSelectionToView() = 0;
-    virtual TInt CurrentIndex() = 0;
-    virtual TBool IsDisplayed( TInt aIndex ) = 0;
-    virtual void FitTopItemToView( TInt aIndex ) = 0;
-    
-protected: // Constructors
-    CHgScroller( TInt aItemCount, 
-            CGulIcon* aDefaultIcon );
-
-    void ConstructL (const TRect& aRect, RWsSession* aSession );
-    
-protected:
-    void InitPhysicsL();
-    virtual void HandleViewPositionChanged( TBool aUpdateScrollbar = ETrue );
-    void InitDrawBuffer() const;
-    void SelectionChanged();
-    void FitRowToView( TInt aRow );
-    TBool HasHighlight() const;
-    static TInt MarqueeCallback( TAny* aSelf );
-
-private:
-    TKeyResponse HandleKeyEvent(const TKeyEvent& aKeyEvent);
-    
-    void HandleItemCountChanged();
-    void HandleSelectionL();
-
-    TBool HandleScrollbarEventL( const TPointerEvent& aEvent );
-    void HandleDownEventL( const TPointerEvent& aEvent );
-    void HandleDragEventL( const TPointerEvent& aEvent );
-    void HandleUpEventL( const TPointerEvent& aEvent );
-    
-    void KeyEventDown();
-    void KeyEventUp();
-    
-    void InitGraphicsL();
-    void InitScrollbarL();
-
-    void HandleGainingForeground();
-    void HandleLosingForeground();
-    
-    /**
-     * Launches the highlight timer.
-     */
-    void LaunchHighlightTimer();
-
-    /**
-     * Callback method for highlight timer.
-     *
-     * @param aPtr Pointer to an instance of CHgScroller class.
-     *
-     * @return System wide error code.
-     */
-    static TInt HighlightTimerCallback( TAny* aPtr );
-        
-    /**
-     * Sets highlight to focused item.
-     */
-    void SetHighlightL();
-
-    /**
-     * Callback method for key scrolling timer.
-     *
-     * @param aPtr Pointer to an instance of CHgScroller class.
-     *
-     * @return System wide error code.
-     */
-    static TInt KeyScrollingTimerCallback( TAny* aPtr );
-        
-    /**
-     * Move view based on key scolling mode.
-     */
-    void DoKeyScrolling();
-    
-    /**
-     * Sets item highlight and stops the scrolling timer.
-     */
-    void StopKeyScrolling();
-    
-protected:
-    CAknPhysics* iPhysics; // Physics engine. Own
-    CHgScrollBufferManager* iManager; // Own
-    CHgScrollbar* iScrollbar; // Scrollbar. Own
-    CHgIndicatorManager* iIndicatorManager; // Utility for drawing indicators. Own
-    CHgDrawUtils* iDrawUtils; // Drawing utility. Own
-    CHgTextFind* iTextFind; // Text find utility to communicate with FEP. Own
-    CAknLongTapDetector* iDetector; // Longtap detector for single click. Own
-    CAknItemActionMenu* iActionMenu; // Item action menu for single click. Not Own
-    
-    // Observers
-    MHgSelectionObserver* iSelectionObserver; // Not Own
-    MHgMarkingObserver* iMarkingObserver; // Not Own
-    
-    // Arrays
-    RPointerArray<CHgItem> iItems; // Items
-
-    // For dragging
-    TPoint iStart; // Drag start position
-    TTime iStartTime; // Drag start time
-    TPoint iPrev; // Previous pointer event position.
-
-    // The Rest.
-    CGulIcon* iDefaultIcon; // Default item icon
-        
-    TPoint iViewPosition; // Current view position
-    
-    TBool iLandscapeScrolling; // Scrolling landscape?
-    
-    TInt iWidth; // The width of the view
-    TInt iHeight; // The height of the view
-    TInt iRowHeight; // Row height (square images)
-    TInt iItemCount; // Total number of items
-    TInt iItemsOnScreen;
-    
-    TInt iCurrentRow; // The number of the first row that is drawn
-    TInt iSelectedIndex; // The index of the selected item
-
-    TInt iKeyRepeats; // How many key repeasts have been received
-    
-    TSize iImageSize; // Image Size
-    TSize iIndicatorSize; // Size of the indicator in list or grid
-    
-    enum TKeyScrollingState
-        {
-        ENoKeyScrolling = 0,
-        EKeyScrollingUp,
-        EKeyScrollingDown,
-        EKeyScrollingLeft,
-        EKeyScrollingRight
-        } iKeyScrollingState; // State of the key scrolling
-
-    TInt iFlags; // Possible mode flags
-    
-    HBufC* iEmptyText; // text for empty list or grid.
-
-    THgPopupDrawer* iPopupDrawer;
-    TBool iPanning;
-    TBool iShowHighlight;
-    
-    THgScrollBarType iScrollBarType; // Scrollbar type
-    
-    RBuf iUpperCaseTitle; // Used in search for uppercase conversion
-    RBuf iPopupText1;
-    RBuf iPopupText2;
-    
-    TBool iFirstTime; // Flag to indicating first time run.
-    TBool iPointerDown;
-
-    CPeriodic* iHighlightTimer; // Higlight timer, own.
-    TBool iSelectionToFocusedItem; // Is focused item clicked
-    TInt iFocusedIndex; // highlight timer updates this value
-    
-    CHgKeyUtils* iKeyUtils; // MSK key handler, own
-    
-    TSelectionMode iSelectionMode;
-    
-    CPeriodic* iKeyScrollingTimer; // Timer for key scrolling, own.
-    };
-
-#endif /*HGSCROLLER_H_*/