--- 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_*/