diff -r 6205fd287e8a -r 1abc632eb502 menufw/menufwui/mmwidgets/inc/mmlistbox.h --- a/menufw/menufwui/mmwidgets/inc/mmlistbox.h Thu Mar 18 14:45:17 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,454 +0,0 @@ -/* -* Copyright (c) 2007 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: CMmListBox -* Version : %version: MM_22.1.16 % << Don't touch! Updated by Synergy at check-out. -* -*/ - - -#ifndef C_MMLISTBOX_H -#define C_MMLISTBOX_H - -#include -#include -#include -#include - -class CMmListBoxModel; -class CMmListBoxItemDrawer; -class CMmMarqueeAdapter; -class CMmWidgetContainer; -class CMmTemplateLibrary; - -/** - * CMmListBox - * - * @code - * @endcode - * @lib mmwidgets - * @since S60 v3.0 - * @ingroup group_mmwidgets - */ -NONSHARABLE_CLASS( CMmListBox ) : public CEikFormattedCellListBoxTypedef - { -public: - /** - * Two-phased constructor. - * - * @since S60 v3.0 - * @param aParent Parent control. - * @param aFlags Flags. - * @param aTemplateLibrary Template library for drawer. - * @return List box. - */ - static CMmListBox* NewL( const CCoeControl* aParent, TInt aFlags, - CMmTemplateLibrary* aTemplateLibrary ); - - /** - * Two-phased constructor. - * - * @since S60 v3.0 - * @param aParent Parent control. - * @param aFlags Flags. - * @param aTemplateLibrary Template library for drawer. - * @return List box. - */ - static CMmListBox* NewLC( const CCoeControl* aParent, TInt aFlags, - CMmTemplateLibrary* aTemplateLibrary ); - - /** - * Destructor. - * - * @since S60 v3.0 - */ - virtual ~CMmListBox(); - - /** - * Gets the listbox model. - * - * @since S60 v3.0 - * @return Listbox model. - */ - CMmListBoxModel * MmModel(); - - /** - * Sets the listbox model. - * - * @since S60 v3.0 - * @param aMmModel The model to be set. - */ - void SetMmModel( CMmListBoxModel* aMmModel ); - - /** - * Creates the view class instance. - * - * @since S60 v3.0 - * @return Listbox view. - */ - CListBoxView* MakeViewClassInstanceL(); - - /** - * Creates the item drawer for listbox. - * - * @param aTemplateLibrary Template library for drawer. - * @since S60 v3.0 - */ - void CreateItemDrawerL( CMmTemplateLibrary* aTemplateLibrary ); - - /** - * Sets the flag. - * - * @since S60 v3.0 - * @param aFlag Avkon list flag - */ - void SetListFlag( TInt aFlag ); - - /** - * Clears the flag. - * - * @since S60 v3.0 - * @param aFlag Avkon list flag - */ - void ClearListFlag( TInt aFlag ); - - -public: // from base class CCoeControl. - - /** - * From CCoeControl. - * Handles pointer events. - * - * @since S60 v3.0 - * @param aPointerEvent Pointer event. - */ - void HandlePointerEventL( const TPointerEvent& aPointerEvent ); - - /** - * From base class. - * - * @since S60 v3.0 - * @param aKeyEvent Key event. - * @param aType Event code. - */ - TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, - TEventCode aType ); - - /** - * Adjusts the given rectangle. - * - * @since S60 v3.0 - * @param aRect Rectangle to be adjusted. - * @return Error code. - */ - TInt AdjustRectHeightToWholeNumberOfItems( TRect& aRect ) const; - - /** - * Sets item drawer and view background context. - * - * @since S60 v3.0 - * @param aBgContext Background context. - */ - void SetItemDrawerAndViewBgContext( - CAknsBasicBackgroundControlContext * aBgContext ); - - /** - * Updates scrollbar. - * - * @since S60 v3.0 - */ - void UpdateScrollBarsL(); - - /** - * Special version of Update scrollbar that never calls DrawNow() - */ - void UpdateScrollBarsNoRedrawL(); - - /** - * Checks if all items fit in view rectangle. - * - * @since S60 v3.0 - * @return Do all items fit in view rectangle. - */ - TBool AllItemsFitInViewRect(); - - /** - * Handles scrollbar visibility change. - * - * @since S60 v3.0 - * @return Is redraw needed. - */ - TBool HandleScrollbarVisibilityChangeL(); - - /** - * Sets marquee adapter. - * - * @since S60 v3.0 - * @param aAdapter Marquee adapter. - */ - void SetMarqueeAdapter( CMmMarqueeAdapter* aAdapter ); - - /** - * Notifies that marquee is being drawn. - * - * @since S60 v3.0 - * @param aIsMarqueeBeingDrawn Is marquee being drawn. - */ - void SetMarqueeDrawing( TBool aIsMarqueeBeingDrawn ); - - /** - * Handles item removal. redraws view, updates scrollbar. - * - * @since S60 v3.0 - */ - void HandleItemRemovalL(); - - /** - * Redraws items in view if it is necessary. - * - * @since S60 v3.0 - * @param aPreviousCurrent Previously current item index. - * @param aCurrent Current item index. - * - * @return true if anything was drawn. - */ - TBool RedrawIfNecessary( TInt aPreviousCurrent, TInt aCurrent ); - - /** - * Overridden from base class to allow for drawing scrollbar - * background in mirrored layout. - * - * @param aRect clipping rect - */ - void Draw(const TRect& aRect) const; - - /** - * Draws the listbox view. - * - * @since S60 v5.0 - */ - void DrawView(); - - /** - * Set the vertical item offset; - * @param aOffset The offset to set to the widget. - * - * @since S60 v5.0 - */ - void SetVerticalItemOffset( TInt aOffset ); - - /** - * Gets the current widget vertical item offset. - * - * @since S60 v5.0 - * @return The current widget vertical item offset. - */ - TInt VerticalItemOffset() const; - - /** - * Simply sets the item height members in widget and view. - */ - void SetItemHeight( TInt aItemHeight ); - - /** - * Updates scrollbar thumbs. - */ - void UpdateScrollBarThumbs(); - - /** - * Counts the number of component controls which this component owns. - */ - TInt CountComponentControls() const; - - /** - * Disables/enables child component (scrollbar) drawing. - */ - void SetDisableChildComponentDrawing( TBool aDisable ); - - /** - * Handles scrolling event. - * - * @since S60 v3.0 - * @param aScrollBar Scrollbar being scrolled. - * @param aEventType Type of scrollbar event. - */ - void HandleScrollEventL( CEikScrollBar* aScrollBar, - TEikScrollEvent aEventType ); - -private: - /** - * Default constructor. - * - * @since S60 v3.0 - */ - CMmListBox(); - - /** - * 2nd phase constructor. - * - * @since S60 v3.0 - * @param aParent Parent control. - * @param aFlags Flags. - * @param aTemplateLibrary Template library for drawer. - */ - void ConstructL( const CCoeControl* aParent, TInt aFlags, - CMmTemplateLibrary* aTemplateLibrary ); - - /** - * Handles pointer events when edit mode is enabled. - * - * This method is only called during edit mode. It selectively passes - * only some of the pointer events to CAknGrid::HandlePointerEventL - * in order to disable flicking and panning. - * - * @param aPointerEvent pointer event - */ - void HandlePointerEventInEditModeL( const TPointerEvent& aPointerEvent ); - - /** - * Scrolls the view if pointer is close to the top/bottom edge. - * - * This method is used only when edit mode is active. In a way it - * brings back the focus based scrolling behavior that was present - * in CAknGrid before ODE scrolling was introduced. - */ - void HandleScrollingInEditMode( const TPointerEvent& aPointerEvent ); - - /** - * Checks if pointer position is within the scroll-triggering area. - * - * @param aPointerEvent pointer event - * @return true if pointer above the top scrolling threshold. - */ - TBool IsPointerInTopScrollingThreshold( - const TPointerEvent& aPointerEvent ) const; - - /** - * Checks if pointer position is within the scroll-triggering area. - * - * @param aPointerEvent pointer event - * @return true if pointer below the bottom scrolling threshold. - */ - TBool IsPointerInBottomScrollingThreshold( - const TPointerEvent& aPointerEvent ) const; - - /** - * Scrolls the view if the pointer is near top/bottom edge of the screen. - * - * Assumes that current item index is the index of the item under the - * pointer. The time value returned is based on the distance of the pointer - * from the top/bottom edge of the grid view (this makes the scrolling speed - * dependent of how close the pointer is to the edge). - * If there is no need to continue scrolling because the beginning/end of - * the list has already been reached, 0 is returned. - * - * @param aPointerEvent pointer event - * @return time to wait before calling this method again (in microseconds) - * or 0 if already at the beginning/end of the list - */ - TInt ScrollIfNeeded( const TPointerEvent& aPointerEvent ); - - /** - * Ensures that elements are drawn correctly when mirrored layout is - * used and scrollbar is visible by shifting ViewRect to the right. - */ - void FixViewForMirroredLayout(); - - /** - * Redraws the background under the vertical scrollbar in mirrored layout. - * - * The reason such method is needed is that view rectangle is shifted - * to the right in mirrored layout and does not cover the scrollbar - * area. In normal (non-mirrored) mode this method does nothing. - */ - void RedrawScrollbarBackground() const; - - /** - * Does actual handling of scroll events. - * - * @param aScrollBar Scrollbar being scrolled. - * @param aEventType Type of scrollbar event. - */ - void ProcessScrollEventL( CEikScrollBar* aScrollBar, - TEikScrollEvent aEventType ); - - /** - * Handles periodic events from @c iRedrawTimer. - * Such events are generated at equal time intervals while - * the view is being scrolled using the scrollbar. - * This function typically calls @c ProcessScrollEventL, - * which actually scrolls the view and causes a redraw. - */ - void HandleRedrawTimerEvent(); - -private: - /** - * Callback function for @c iRedrawTimer. - * It simply calls @c HandleRedrawTimerEvent and returns 0. - * - * @param aPtr A pointer to CMmListBox object. - * @return 0 (always). - */ - static TInt RedrawTimerCallback( TAny* aPtr ); - -private: // Data - /** - * Item drawer. - */ - CMmListBoxItemDrawer* iMmDrawer; - - /** - * Multimedia Menu model. - */ - CMmListBoxModel* iMmModel; - - /** - * marquee adapter. - */ - CMmMarqueeAdapter* iMarqueeAdapter; - - /** - * Blocks scrollbar drawing. When this flag is set scrollbars components - * are blocked in the CountComponentControls() method; - */ - TBool iDisableChildComponentDrawing; - - /** - * This member is only used in edit mode to store the position of the pointer - * during EButton1Down event. - */ - TPoint iButton1DownPos; - - /** - * ETrue if the view is being scrolled with the scrollbar. - */ - TBool iScrollbarThumbIsBeingDragged; - - /** - * Stores the number of scrollbar events that were ignored. - * It is only used while scrolling the view using scrollbar, - * in such situation the scroll events that this object receives - * are ignored, and actual scrolling is done only when - * iRedrawTimer completes. - */ - TInt iSkippedScrollbarEventsCount; - - /** - * A timer that initiates redraws at certain time intervals. - * It is used to refresh the view while scrolling with - * the scrollbar. - */ - CPeriodic* iRedrawTimer; - }; - -#endif // MMLISTBOX_H