diff -r d189ee25cf9d -r 3533d4323edc emailuis/uicomponents/inc/fstreelist.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/uicomponents/inc/fstreelist.h Wed Sep 01 12:28:57 2010 +0100
@@ -0,0 +1,971 @@
+/*
+* 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: Freestyle tree list component
+ *
+*/
+
+
+#ifndef C_FSTREELIST_H
+#define C_FSTREELIST_H
+
+
+/////SYSTEM INCLUDES
+
+//////TOOLKIT INCLUDES
+// SF
+#include
+//
+
+//////PROJECT INCLUDES
+// removed __FS_ALFRED_SUPPORT flag
+//#include
+// removed __FS_ALFRED_SUPPORT flag
+
+#include "fstreelistconstants.h"
+#include "fstreevisualizerbase.h"
+#include "fstreevisualizerobserver.h"
+
+//////TOOLKIT CLASSES
+class CAlfEnv;
+class CAlfTexture;
+
+//////PROJECT CLASSES
+class CFsTree;
+class CFsTreeControl;
+class MFsTreeListObserver;
+class MFsTreeItemData;
+class MFsTreeItemVisualizer;
+class MFsTreeNodeVisualizer;
+class CFsAlfTextStyleManager;
+
+/** An array of tree list observers */
+typedef RPointerArray RFsTreeListObservers;
+
+/**
+ * Batch updates for the tree.
+ */
+class MFsTreeBatchProcessing
+ {
+public:
+ /**
+ * Begin batch update. During batch update changes to the world
+ * will not be updated on screen until the EndUpdateL is called.
+ */
+ virtual void BeginUpdate() = 0;
+
+ /**
+ * End batch update. All changes done between BeginUpdate and EndUpdateL
+ * will be shown on screen.
+ */
+ virtual void EndUpdateL() = 0;
+ };
+
+/**
+ * CFsTreeList is a component for creating and displaying hierarchical list
+ * using tree data structure.
+ *
+ * @code
+ *
+ * @endcode
+ *
+ * @lib
+ */
+class CFsTreeList : public CBase, MFsTreeVisualizerObserver, MFsTreeBatchProcessing
+ {
+public: // from MFsTreeBatchProcessing
+
+ /**
+ * @see MFsTreeBatchProcessing::BeginUpdate
+ */
+ void BeginUpdate();
+
+ /**
+ * @see MFsTreeBatchProcessing::EndUpdateL
+ */
+ void EndUpdateL();
+
+public: // Construction
+
+
+ /** Pre-defined types of markability in list */
+ enum TFsTreeListMarkType
+ {
+ EFsTreeListNonMarkable,
+ EFsTreeListMarkable,
+ EFsTreeListMultiMarkable
+ };
+
+ /** Pre-defined types of scrolling in list
+ * OLD API - to be removed.
+ * */
+ enum TFsTreeListScrollbars
+ {
+ EFsTreeListNoScrollbars,
+ EFsTreeListVerticalScrollbar
+ };
+
+ /**
+ * Two-phased constructor
+ *
+ * @param aTreeV Pointer to the class responsible for visualizing tree
+ * structure
+ * @param aEnv Reference to the UI toolkit environment
+ */
+ IMPORT_C static CFsTreeList* NewL( CFsTreeVisualizerBase& aTreeV,
+ CAlfEnv& aEnv );
+
+ /**
+ * C++ destructor
+ */
+ IMPORT_C virtual ~CFsTreeList();
+
+ /**
+ * Adds observer to the list of observers
+ *
+ * @param aTreeListObserver Reference to the list observer
+ */
+ IMPORT_C void AddObserverL( MFsTreeListObserver& aTreeListObserver );
+
+ /**
+ * Removes observer from the list of observers
+ *
+ * @param aTreeListObserver Reference to the list observer
+ *
+ * @panic ETreeListPanicObserverNotFound The given observer was not
+ * registered previously
+ */
+ IMPORT_C void RemoveObserver( MFsTreeListObserver& aTreeListObserver );
+
+public: // Tree list configuration
+
+ /**
+ * Returns a hitckcock control associated with the component.
+ */
+ IMPORT_C CAlfControl* TreeControl( ) const;
+
+ /**
+ * The function sets duration of the slide-in effect.
+ *
+ * @param aTimeMiliseconds Slide in time in milliseconds.
+ */
+ IMPORT_C void SetSlideInDuration ( TInt aTimeMiliseconds );
+
+ /**
+ * The function returns slide in effect's duration.
+ *
+ * @return Slide in duration in miliseconds.
+ */
+ IMPORT_C TInt SlideInDuration ( ) const;
+
+ /**
+ * The function sets direction of the slide in effect.
+ *
+ * @param aDirection A direction of the slide in effect.
+ */
+ IMPORT_C void SetSlideInDirection (
+ MFsTreeVisualizer::TFsSlideEffect aDirection );
+
+ /**
+ * The function returns direction of the slide in effect.
+ *
+ * @return A direction of the slide in effect.
+ */
+ IMPORT_C MFsTreeVisualizer::TFsSlideEffect SlideInDirection ( ) const;
+
+ /**
+ * The function sets duration of the slide-out effect.
+ *
+ * @param aTimeMiliseconds Slide out time in milliseconds.
+ */
+ IMPORT_C void SetSlideOutDuration ( TInt aTimeMiliseconds );
+
+ /**
+ * The function returns slide out effect's duration.
+ *
+ * @return Slide out duration in miliseconds.
+ */
+ IMPORT_C TInt SlideOutDuration ( ) const;
+
+ /**
+ * The function sets direction of the slide out effect.
+ *
+ * @param aDirection A direction of the slide out effect.
+ */
+ IMPORT_C void SetSlideOutDirection (
+ MFsTreeVisualizer::TFsSlideEffect aDirection );
+
+ /**
+ * The function returns direction of the slide out effect.
+ *
+ * @return A direction of the slide out effect.
+ */
+ IMPORT_C MFsTreeVisualizer::TFsSlideEffect SlideOutDirection ( ) const;
+
+ /**
+ * Returns information about looping type of the list.
+ *
+ * @return Type of list looping. EFsTreeListLoopingDisabled when looping
+ * is turned off.
+ */
+ IMPORT_C TFsTreeListLoopingType LoopingType() const;
+
+ /**
+ * Returns information whether list is markable, non-markable or
+ * multi-markable
+ *
+ * @return Returns markability of the list
+ */
+ IMPORT_C TFsTreeListMarkType MarkType() const;
+
+ /**
+ * OLD API - to be removed.
+ * Returns information about scrollbars used by list visual
+ *
+ * @return Returns a type of scrollbars that the list uses
+ */
+ IMPORT_C TFsTreeListScrollbars HasScrollBars() const;
+
+ /**
+ * Old API - to be removed
+ *
+ * @param aFlag Scrollbar type for the list
+ */
+ IMPORT_C void SetScrollBarsL( const TFsTreeListScrollbars aFlag );
+
+
+ /**
+ * Returns information about scrollbars used by list visual
+ *
+ * @return Returns a type of scrollbars that the list uses
+ */
+ IMPORT_C TFsScrollbarVisibility ScrollbarVisibility() const;
+
+ /**
+ * Enables or disables scrollbars
+ *
+ * @param aFlag Scrollbar type for the list
+ */
+ IMPORT_C void SetScrollbarVisibilityL(const TFsScrollbarVisibility aVisibility);
+
+ /**
+ * Sets type of list's looping.
+ *
+ * @param aLoopingType type of list looping.
+ */
+ IMPORT_C void SetLoopingType( const TFsTreeListLoopingType aLoopingType );
+
+
+ /**
+ * The functions sets fade-in's effect duration.
+ * @param aFadeTime A time in miliseconds for fade in effect.
+ */
+ IMPORT_C void SetFadeInEffectTime( TInt aFadeTime );
+
+ /**
+ * The functions returns fade-in's effect duration.
+ * @return A time in miliseconds for fade in effect.
+ */
+ IMPORT_C TInt FadeInEffectTime( );
+
+ /**
+ * The functions sets fade-out's effect duration.
+ * @param aFadeTime A time in miliseconds for fade-out effect.
+ */
+ IMPORT_C void SetFadeOutEffectTime( TInt aFadeTime );
+
+ /**
+ * The functions returns fade-out's effect duration.
+ * @return A time in miliseconds for fade-out effect.
+ */
+ IMPORT_C TInt FadeOutEffectTime( );
+
+ /**
+ * Function sets the time of list scroll per item and the scroll
+ * acceleration rate.
+ * @param aScrollTime Time (in miliseconds) at which the list items are
+ * scrolled.
+ * @param aScrollAcceleration Rate of scroll acceleration when the up/down
+ * key is pressed for a long time. This is
+ * multiplied by the number of up/down key
+ * repeats. Acceleration rate should be in
+ * 0.0-1.0 range.
+ */
+ IMPORT_C void SetScrollTime ( TInt aScrollTime,
+ TReal aScrollAcceleration = 0.0 );
+
+ /**
+ * Function gets the values of scroll speed and its acceleration rate.
+ *
+ * @param aScrollTime Time (in miliseconds) at which the list items are
+ * scrolled.
+ *
+ * @param aScrollAcceleration Rate of scroll acceleration when the up/down
+ * key is pressed for a long time.
+ */
+ IMPORT_C void GetScrollTime( TInt& aScrollTime,
+ TReal& aScrollAcceleration );
+
+ /**
+ * Enables or disables marking of list items
+ *
+ * @param aFlag Type of markability for the list
+ */
+ IMPORT_C void SetMarkTypeL( const TFsTreeListMarkType aFlag );
+
+ /**
+ * Returns information whether list enables indention or not
+ *
+ * @return ETrue if indention is enabled, EFalse otherwise
+ */
+ IMPORT_C TInt Indentation() const;
+
+ /**
+ * Enables or disables indention for list
+ *
+ * @param aIndentation Indentation in pixels.
+ */
+ IMPORT_C void SetIndentationL( const TInt aIndentation );
+
+ /**
+ * The functions sets wether all item in the list should be always in
+ * extended state or in normal state.
+ * The list view is refreshed.
+ *
+ * @param aAlwaysExtended ETrue if items should be always extended. EFalse
+ * if items should be in normal state.
+ */
+ IMPORT_C void SetItemsAlwaysExtendedL ( TBool aAlwaysExtended );
+
+ /*
+ * The function returns if items are always in extended state or in
+ * normal.
+ *
+ * @return ETrue if items are always in extended state, EFalse if items
+ * are in normal state.
+ */
+ IMPORT_C TBool IsItemsAlwaysExtended ( );
+
+public: // Tree management
+
+ /**
+ * Inserts new item as a child of parent given by Id with the given
+ * position
+ *
+ * @param aItemD Pointer to item's data
+ * @param aItemV Pointer to item's visualizer
+ * @param aParentId Id of parent node
+ * @param aIndex Position of new item in the list of parent's children (if
+ * omitted, the item is inserted as last)
+ * @param aAllowRefresh Blocks/Allows view update after an item has been added
+ * to the tree list. Currently works only with scrollbar update.
+ *
+ * @return Id of the inserted item
+ *
+ * @panic EFsListPanicParentIdNotFound The specified parent id was not
+ * found
+ * @panic EFsListPanicIndexOutOfRange Specified index exceeds node's
+ * number of children
+ */
+ IMPORT_C TFsTreeItemId InsertItemL( MFsTreeItemData& aItemD,
+ MFsTreeItemVisualizer& aItemV,
+ const TFsTreeItemId aParentId,
+ const TInt aIndex = -1,
+ const TBool aAllowRefresh = ETrue);
+
+ /**
+ * Inserts new node as a child of parent given by Id with the given
+ * position
+ *
+ * @param aItemD Pointer to node's data
+ * @param aItemV Pointer to node's visualizer
+ * @param aParentId Id of parent node
+ * @param aIndex Position of new node in the list of parent's children (if
+ * omitted, the node is inserted as last)
+ *
+ * @return Id of the inserted node
+ *
+ * @panic EFsListPanicParentIdNotFound The specified parent id was not
+ * found
+ * @panic EFsListPanicIndexOutOfRange Specified index exceeds node's
+ * number of children
+ */
+ IMPORT_C TFsTreeItemId InsertNodeL( MFsTreeItemData& aItemD,
+ MFsTreeNodeVisualizer& aNodeV,
+ const TFsTreeItemId aParentId,
+ const TInt aIndex = -1,
+ const TBool aAllowRefresh = ETrue );
+
+ /**
+ * Removes the item with given Id from the list. If aItemId is a node all
+ * its children will be removed as well.
+ *
+ * @param aItemId Id of the item to be removed
+ *
+ * @panic EFsListPanicInvalidItemId The specified item id was not found in
+ * the list
+ */
+ IMPORT_C void RemoveL( const TFsTreeItemId aItemId );
+
+ /**
+ * Removes all items from the list.
+ */
+ IMPORT_C void RemoveAllL( );
+
+ /**
+ * Removes all children of the given node.
+ *
+ * @param aNodeId Id of the node
+ *
+ * @panic EFsListPanicInvalidItemId The specified item id was not found in
+ * the list
+ * @panic EFsListPanicInvalidItemType Item id was passed instead of the
+ * node id
+ */
+ IMPORT_C void RemoveChildrenL( const TFsTreeItemId aNodeId );
+
+ /**
+ * Moves the item with given Id to the list of children of parent with
+ * given id
+ *
+ * @param aItemId Id of the item to be moved
+ * @param aTargetNode Id of the new parent node
+ * @param aIndex Position of the item in the list of new parent's children
+ * (if omitted, the item/node is inserted as last)
+ *
+ * @panic EFsListPanicInvalidItemId The specified item id was not found in
+ * the list
+ * @panic EFsListPanicParentIdNotFound The specified parent id was not
+ * found
+ * @panic EFsListPanicInvalidItemType Item id was passed as a second param
+ * instead of the node id
+ * @panic EFsListPanicIndexOutOfRange Specified index exceeds node's
+ * number of children
+ */
+ IMPORT_C void MoveItemL( const TFsTreeItemId aItemId,
+ const TFsTreeItemId aTargetNode, const TInt aIndex = -1 );
+
+ /**
+ * Checks if a node has children, if parameter is omitted, root of the
+ * list is checked to indicate if the list is empty
+ *
+ * @param aNodeId Id of a node
+ *
+ * @return Etrue if a node has children, EFalse if it does not
+ *
+ * @panic EFsListPanicInvalidItemId The specified item id was not found in
+ * the list
+ * @panic EFsListPanicInvalidItemType Item id was passed instead of the
+ * node id
+ */
+ IMPORT_C TBool IsEmpty(const TFsTreeItemId aNodeId = KFsTreeRootID) const;
+
+ /**
+ * Returns the level of an item in tree.
+ *
+ * @param aItemId Id of an item.
+ *
+ * @return Level of an item.
+ */
+ IMPORT_C TUint Level( const TFsTreeItemId aItemId ) const;
+
+ /**
+ * Counts elements in the list
+ *
+ * @return Number of list items
+ */
+ IMPORT_C TUint Count() const;
+
+ /**
+ * Gets the number of children of the given node
+ *
+ * @param aNodeId Id of the node
+ *
+ * @return Number of node's children
+ *
+ * @panic EFsListPanicInvalidItemId The specified item id was not found in
+ * the list
+ * @panic EFsListPanicInvalidItemType Item id was passed instead of the
+ * node id
+ */
+ IMPORT_C TUint CountChildren( const TFsTreeItemId aNodeId ) const;
+
+ /**
+ * Gets the id of a child of the specified node with the position given
+ *
+ * @param aNodeId Id of a node
+ * @param aIndex Index of the child
+ *
+ * @return Id of a child
+ *
+ * @panic EFsListPanicInvalidItemId The specified item id was not found in
+ * the list
+ * @panic EFsListPanicInvalidItemType Item id was passed instead of the
+ * node id
+ * @panic EFsListPanicIndexOutOfRange Specified index exceeds node's
+ * number of children
+ */
+ IMPORT_C TFsTreeItemId Child( const TFsTreeItemId aNodeId,
+ const TUint aIndex ) const;
+
+ /**
+ * Returns the index of a child for a given parent
+ *
+ * @param aNodeId Id of a node
+ * @param aItemId Id of a child
+ *
+ * @return Index of a child
+ *
+ * @panic EFsListPanicInvalidItemId The specified item id was not found
+ * in the list
+ * @panic EFsListPanicInvalidItemType Item id was passed instead of
+ * the node id
+ * @panic EFsListPanicIndexOutOfRange Specified index exceeds node's
+ * number of children
+ */
+ IMPORT_C TUint ChildIndex( const TFsTreeItemId aNodeId,
+ const TFsTreeItemId aItemId ) const;
+
+ /**
+ * Gets the parent's id for the specified item. If KFsTreeRootID is passed
+ * then KFsTreeNoneID is returned.
+ *
+ * @param aItemId Id of an item
+ *
+ * @return Id of item's parent
+ *
+ * @panic EFsListPanicInvalidItemId The specified item id was not found
+ * in the list
+ */
+ IMPORT_C TFsTreeItemId Parent( const TFsTreeItemId aItemId ) const;
+
+ /**
+ * Checks whether the item with specified id belongs to the list
+ *
+ * @param aItemId Id of an item
+ *
+ * @return ETrue if the item is in the list, EFalse otherwise
+ */
+ IMPORT_C TBool Contains( const TFsTreeItemId aItemId ) const;
+
+ /**
+ * Checks whether the item with specified id is a node
+ *
+ * @param aItemId Id of an item
+ *
+ * @return ETrue if the item is a node, EFalse otherwise
+ *
+ * @panic EFsListPanicInvalidItemId The specified item id was not found
+ * in the list
+ */
+ IMPORT_C TBool IsNode( const TFsTreeItemId aItemId ) const;
+
+ /**
+ * Sets focus state of list component
+ * @param aFocused status of the focus to be set
+ */
+ IMPORT_C void SetFocusedL( const TBool aFocused );
+
+ /**
+ * Returns state of the focus
+ * @return State of the focus
+ */
+ IMPORT_C TBool IsFocused() const;
+
+ /**
+ * Returns item visualizer for given item id.
+ */
+ IMPORT_C CFsTreeList* ItemMenu( TFsTreeItemId aItemId );
+
+public: // Visualization management
+
+ /**
+ * Displays the list.
+ *
+ * @param aFadeIn Defines if list visual should or shouldn't fade in to
+ * the screen.
+ * @param aSlideIn ETrue if slide in effect should be used, EFalse if not.
+ */
+ IMPORT_C void ShowListL( const TBool aFadeIn = EFalse,
+ const TBool aSlideIn = EFalse );
+
+
+ /**
+ * Sets direct touch mode.
+ *
+ * @param aDirectTouchMode ETrue if list should work as in direct touch, EFalse
+ * otherwise.
+ */
+ IMPORT_C void SetDirectTouchMode( const TBool aDirectTouchMode );
+
+ /**
+ * Hides the list.
+ *
+ * @param aFadeOut Defines if list visual should or shouldn't fade out
+ * from the screen.
+ * @param aSlideOut ETrue if slide out effect should be used,EFalse if not
+ */
+ IMPORT_C void HideListL( const TBool aFadeOut = EFalse,
+ const TBool aSlideOut = EFalse );
+
+ /**
+ * Gets the currently focused (highlighted) item id
+ *
+ * @return Id of the item being focused (highlighted)
+ */
+ IMPORT_C TFsTreeItemId FocusedItem() const;
+
+ /**
+ * Sets the focus (highlight) upon the item with given id
+ *
+ * @param aItemId Id of the item that is to be focused (highlighted)
+ *
+ * @panic EFsListPanicInvalidItemId The specified item id was not found
+ * in the list
+ */
+ IMPORT_C void SetFocusedItemL( const TFsTreeItemId aItemId );
+
+ /**
+ * Checks whether the item with specified id is marked.
+ *
+ * @param aItemId Id of an item.
+ *
+ * @return ETrue if the item is marked, EFalse otherwise.
+ *
+ * @panic EFsListPanicInvalidItemId The specified item id was not found
+ * in the list.
+ */
+ IMPORT_C TBool IsMarked( const TFsTreeItemId aItemId ) const;
+
+ /**
+ * Checks whether the node with specified id is expanded.
+ *
+ * @param aNodeId Id of a node
+ *
+ * @return ETrue if the node is expanded, EFalse otherwise
+ *
+ * @panic EFsListPanicInvalidItemId The specified item id was not found
+ * in the list
+ * @panic EFsListPanicInvalidItemType Item id was passed instead of
+ * the node id
+ */
+ IMPORT_C TBool IsExpanded( const TFsTreeItemId aNodeId );
+
+ /**
+ * Marks the item.
+ *
+ * @param aItemId Id of an item
+ *
+ * @param aMarked ETrue to set item marked, EFalse to unmarked.
+ *
+ * @panic EFsListPanicInvalidItemId The specified item id was not found
+ * in the list
+ * @panic EFsListPanicIsNonMarkable The list is non-markable
+ */
+ IMPORT_C void MarkItemL( const TFsTreeItemId aItemId, TBool aMarked );
+
+ /**
+ * Expands the node. Does nothing when the node is already expanded.
+ *
+ * @param aNodeId Id of a node
+ *
+ * @panic EFsListPanicInvalidItemId The specified item id was not found
+ * in the list
+ * @panic EFsListPanicInvalidItemType Item id was passed instead of
+ * the node id
+ */
+ IMPORT_C void ExpandNodeL( const TFsTreeItemId aNodeId );
+
+ /**
+ * Collapses the node. Does nothing when the node is already collapsed.
+ *
+ * @param aNodeId Id of a node
+ *
+ * @panic EFsListPanicInvalidItemId The specified item id was not found
+ * in the list
+ * @panic EFsListPanicInvalidItemType Item id was passed instead of
+ * the node id
+ */
+ IMPORT_C void CollapseNodeL( const TFsTreeItemId aNodeId );
+
+ /**
+ * Gets the list of marked items
+ *
+ * @param aMarkedItems Reference to the array that the list will copy
+ * array of marked items' ids to
+ */
+ IMPORT_C void GetMarkedItemsL( RFsTreeItemIdList& aMarkedItems ) const;
+
+ /**
+ * Gets the reference to the item/node data (const)
+ *
+ * @param aItemId Id of the item/node
+ *
+ * @return Reference to the item/node data (const)
+ *
+ * @panic EFsListPanicInvalidItemId The specified item id was not found
+ * in the list
+ */
+ IMPORT_C MFsTreeItemData& ItemData(const TFsTreeItemId aItemId) const;
+
+ /**
+ * Sets the reference to the item/node data
+ *
+ * @param aData Reference to the item/node data
+ * @param aItemId Id of the item/node
+ *
+ * @panic EFsListPanicInvalidItemId The specified item id was not found
+ * in the list
+ */
+ IMPORT_C void SetItemDataL( MFsTreeItemData& aData,
+ const TFsTreeItemId aItemId );
+
+ /**
+ * Gets the reference to the item visualizer (const)
+ *
+ * @param aItemId Id of the item
+ *
+ * @return Reference to the item visualizer (const)
+ *
+ * @panic EFsListPanicInvalidItemId The specified item id was not found
+ * in the list
+ */
+ IMPORT_C MFsTreeItemVisualizer& ItemVisualizer(
+ const TFsTreeItemId aItemId ) const;
+
+ /**
+ * Sets the reference to the item visualizer
+ *
+ * @param aVisualizer Reference to the new item's visualizer
+ * @param aItemId Id of the item
+ *
+ * @panic EFsListPanicInvalidItemId The specified item id was not found
+ * in the list
+ */
+ IMPORT_C void SetItemVisualizerL( MFsTreeItemVisualizer& aVisualizer,
+ const TFsTreeItemId aItemId );
+
+ /**
+ * Gets the reference to the tree visualizer
+ *
+ * @return Reference to the tree visualizer currently used by the tree
+ * list.
+ */
+ IMPORT_C CFsTreeVisualizerBase& TreeVisualizer() const;
+
+ /**
+ * Sets a tree visualizer for the list
+ *
+ * @param aTreeV Reference to the tree visualizer that the tree list will
+ * be using
+ */
+ IMPORT_C void SetTreeVisualizer( CFsTreeVisualizerBase& aTreeV );
+
+ /**
+ * Sets visiblity of the border
+ */
+ IMPORT_C virtual void SetBorderL( const TBool aVisible,
+ CAlfTexture* aBorderTexture = 0 );
+
+ /**
+ * Sets visiblity of the shadow
+ */
+ IMPORT_C void SetShadowL( const TBool aVisible );
+
+ /**
+ * Returns the items's target bounding rectangle in display coordinates if the item is visible.
+ * Display coordinates are defined relative to the display's visible area.
+ *
+ * @param aItemId Item's ID.
+ * @param aRect Out parameter. If successfull, contains item's target rectangle.
+ * @return KErrNone if successfull,
+ * KErrNotFound 1. the list does not contain item with given ID.
+ * 2. item is not visible
+ */
+ IMPORT_C TInt GetItemDisplayRectTarget ( const TFsTreeItemId aItemId, TAlfRealRect& aRect );
+
+ //From MFsTreeVisualizerObserver
+
+ /**
+ *
+ */
+ IMPORT_C virtual void TreeVisualizerEventL(
+ const TFsTreeVisualizerEvent aEvent,
+ const TFsTreeItemId aId,
+ const TPoint& aPoint ) const;
+
+ /**
+ * Gets the reference to the text style manager.
+ *
+ * @return Reference to the text style manager.
+ */
+ IMPORT_C CFsAlfTextStyleManager& TextStyleManager() const;
+
+ /**
+ * Sets the type of text marquee.
+ *
+ * @param aMarquee Type of marquee.
+ */
+ IMPORT_C void SetTextMarqueeType(const TFsTextMarqueeType aMarquee);
+
+ /**
+ * Returns the type of text marquee.
+ *
+ * @return Type of marquee.
+ */
+ IMPORT_C TFsTextMarqueeType TextMarqueeType() const;
+
+ /**
+ * Sets the speed of marquee.
+ *
+ * @param aPixelsPerSec How many pixels per second.
+ */
+ IMPORT_C void SetTextMarqueeSpeed ( const TInt aPixelsPerSec );
+
+ /**
+ * Returns the speed of marquee.
+ *
+ * @return How many pixels per second.
+ */
+ IMPORT_C TInt TextMarqueeSpeed ( ) const;
+
+ /**
+ * Sets delay for text marquee start.
+ *
+ * @param aStartDelay Time after which the text marquee starts (in miliseconds).
+ */
+ IMPORT_C void SetTextMarqueeStartDelay ( const TInt aStartDelay );
+
+ /**
+ * Returns delay for text marquee.
+ *
+ * @return Time after which the text marquee starts (in miliseconds).
+ */
+ IMPORT_C TInt TextMarqueeStartDelay () const;
+
+ /**
+ * Sets a delay for each cycle start.
+ *
+ * @param aCycleStartDelay Time after which the text marquee cycle starts (in miliseconds).
+ */
+ IMPORT_C void SetTextMarqueeCycleStartDelay ( const TInt aCycleStartDelay );
+
+ /**
+ * Returns a delay for each cycle start.
+ *
+ * @return Time after which the text marquee cycle starts (in miliseconds).
+ */
+ IMPORT_C TInt TextMarqueeCycleStartDelay () const;
+
+ /**
+ * Sets repetitions number of marquee cycle.
+ *
+ * @param aRepetitions Number of marquee cycles. Negetive values - infinite loop.
+ */
+ IMPORT_C void SetTextMarqueeRepetitions ( const TInt aMarqueeRepetitions );
+
+ /**
+ * Returns repetitions number of marquee cycle.
+ *
+ * @return Number of marquee cycles. Negetive values - infinite loop.
+ */
+ IMPORT_C TInt TextMarqueeRepetitions ( ) const;
+
+ /**
+ * Disables kinetic scrolling (Drag events will not scroll the list).
+ *
+ * @param aDisable ETrue if kinetic scrolling should be disabled.
+ */
+ IMPORT_C void DisableKineticScrolling( TBool aDisable );
+
+protected: //Construction
+
+ /**
+ * C++ constructor
+ */
+ IMPORT_C CFsTreeList( CAlfEnv& aEnv, CFsTreeVisualizerBase& aTreeV );
+
+ /**
+ * Second phase constructor
+ *
+ * @param aEnv Reference to the UI toolkit environment
+ */
+ IMPORT_C void ConstructL( CAlfEnv& aEnv );
+
+protected: //Data members
+
+ /**
+ * Alf env
+ */
+ CAlfEnv* iEnv;
+
+ /**
+ * Visualizer class
+ * Not own
+ */
+ CFsTreeVisualizerBase* iTreeVisualizer;
+
+ /**
+ * Tree data structure clas
+ * Own
+ */
+ CFsTree* iTree;
+
+ /**
+ * Controller class for the list
+ * Own
+ */
+ CFsTreeControl* iTreeControl;
+
+ /**
+ * Loop flag
+ */
+ TBool iIsLooping;
+
+ /**
+ * part of OLD API - to be removed.
+ * SScrollbar flag
+ */
+ TFsTreeListScrollbars iHasScrollBars;
+
+
+ /**
+ * Id of the focused item
+ */
+ TFsTreeItemId iFocusedItem;
+
+ /**
+ * Type of markability
+ */
+ TFsTreeListMarkType iMarkType;
+
+ /**
+ * Array of observers
+ */
+ RFsTreeListObservers iObservers;
+
+ /**
+ * Text style manager.
+ * Own
+ */
+ CFsAlfTextStyleManager* iTextStyleManager;
+
+ /**
+ * The list has focus or not.
+ */
+ TBool iListFocused;
+
+ };
+
+#endif // C_FSTREELIST_H
+