diff -r 000000000000 -r 8466d47a6819 emailuis/uicomponents/src/fstreelist.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/uicomponents/src/fstreelist.cpp Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,1168 @@ +/* +* 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 list component implementation +* +*/ + + + +//////SYSTEM INCLUDES + +//////TOOLKIT INCLUDES +// SF +#include "emailtrace.h" +#include +// + +//////PROJECT INCLUDES +// removed __FS_ALFRED_SUPPORT flag +//#include +// removed __FS_ALFRED_SUPPORT flag +#include "fstreelist.h" +#include "fstreecontrol.h" +#include "fstree.h" +#include "fstreeitem.h" +#include "fstreenode.h" +#include "fsgenericpanic.h" +#include "fstreeitemdata.h" +#include "fstreeitemvisualizer.h" +#include "fstreenodevisualizer.h" +#include "fstreelistobserver.h" +#include "fstreevisualizerbase.h" +#include "fstextstylemanager.h" +#include "fstreeobserver.h" +#include "fsalftextstylemanager.h" +#include "fsscrollbarset.h" + + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// Two-phased constructor. +// --------------------------------------------------------------------------- +// +EXPORT_C CFsTreeList* CFsTreeList::NewL( CFsTreeVisualizerBase& aTreeV, + CAlfEnv& aEnv ) + { + FUNC_LOG; + CFsTreeList* self = new( ELeave ) CFsTreeList( aEnv, aTreeV ); + CleanupStack::PushL( self ); + self->ConstructL( aEnv ); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// C++ destructor. +// --------------------------------------------------------------------------- +// +EXPORT_C CFsTreeList::~CFsTreeList() + { + FUNC_LOG; + delete iTree; + delete iTreeVisualizer; + delete iTextStyleManager; + iObservers.Close(); + } + +// --------------------------------------------------------------------------- +// Adds observer to the list of observers +// --------------------------------------------------------------------------- +EXPORT_C void CFsTreeList::AddObserverL( + MFsTreeListObserver& aTreeListObserver ) + { + FUNC_LOG; + iObservers.AppendL(&aTreeListObserver); + } + +// --------------------------------------------------------------------------- +// Removes observer from the list of observers +// --------------------------------------------------------------------------- + +EXPORT_C void CFsTreeList::RemoveObserver( + MFsTreeListObserver& aTreeListObserver ) + { + FUNC_LOG; + TInt ind = iObservers.Find( &aTreeListObserver ); + if ( ind >= 0 ) + { + iObservers.Remove( ind ); + } + } + +// --------------------------------------------------------------------------- +// Returns a control associated with the component. +// --------------------------------------------------------------------------- +// +EXPORT_C CAlfControl* CFsTreeList::TreeControl( ) const + { + FUNC_LOG; + return iTreeControl; + } + +// --------------------------------------------------------------------------- +// Inserts new item as a child of parent given by Id with the given position. +// --------------------------------------------------------------------------- +// +EXPORT_C TFsTreeItemId CFsTreeList::InsertItemL( MFsTreeItemData& aItemD, + MFsTreeItemVisualizer& aItemV, + const TFsTreeItemId aParent, + const TInt aIndex, + const TBool aAllowRefresh ) + { + FUNC_LOG; + iTreeVisualizer->SetAutoRefreshAtInsert( aAllowRefresh ); + return iTree->InsertItemL(aItemD,aItemV,aParent,aIndex); + } + +// --------------------------------------------------------------------------- +// Inserts new node as a child of parent given by Id with the given position. +// --------------------------------------------------------------------------- +// +EXPORT_C TFsTreeItemId CFsTreeList::InsertNodeL( MFsTreeItemData& aItemD, + MFsTreeNodeVisualizer& aNodeV, + const TFsTreeItemId aParent, + const TInt aIndex, + const TBool aAllowRefresh ) + { + FUNC_LOG; + iTreeVisualizer->SetAutoRefreshAtInsert( aAllowRefresh ); + return iTree->InsertNodeL(aItemD, aNodeV, aParent, aIndex); + } + +// --------------------------------------------------------------------------- +// Remove all items from the list. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::RemoveL( const TFsTreeItemId aItemId ) + { + FUNC_LOG; + iTree->RemoveL(aItemId); + } + +// --------------------------------------------------------------------------- +// Remove all items from the list. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::RemoveAllL() + { + FUNC_LOG; + iTree->RemoveL(KFsTreeRootID); + } + +// --------------------------------------------------------------------------- +// Remove all children of the selected node. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::RemoveChildrenL( const TFsTreeItemId aNodeId ) + { + FUNC_LOG; + for ( TInt childIndex = 0; childIndex < iTree->CountChildren(aNodeId); + childIndex++ ) + { + iTree->RemoveL(iTree->Child(aNodeId, childIndex)); + } + } + + +// --------------------------------------------------------------------------- +// Moves the item with given Id to the list of children of parent with +// given id +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::MoveItemL( const TFsTreeItemId aItemId, + const TFsTreeItemId aTargetNode, const TInt aIndex ) + { + FUNC_LOG; + TBool subtreeItem = EFalse; + TFsTreeItemId treeItem = aTargetNode; + while (treeItem!=KFsTreeRootID) + { + treeItem = iTree->Parent(treeItem); + if (treeItem==aItemId) + { + subtreeItem = ETrue; + break; + } + } + + if (subtreeItem) + { + User::Leave(EFsListPanicMovingNodeToItsChild); + } + else + { + iTree->MoveL( aItemId, aTargetNode, aIndex ); + } + } + +// --------------------------------------------------------------------------- +// Checks if a node has children, if parameter is omitted, root of the list +// is checked to indicate if the list is empty. +// --------------------------------------------------------------------------- +// +EXPORT_C TBool CFsTreeList::IsEmpty( const TFsTreeItemId aNodeId ) const + { + FUNC_LOG; + TBool result = ETrue; + + if (aNodeId == KFsTreeRootID) + { + if (iTree->Count() > 0) + { + result = EFalse; + } + } + else + { + if (iTree->CountChildren(aNodeId) > 0) + { + result = EFalse; + } + } + + return result; + } + +// --------------------------------------------------------------------------- +// Returns the level of an item in tree. +// --------------------------------------------------------------------------- +// +EXPORT_C TUint CFsTreeList::Level( const TFsTreeItemId aItemId ) const + { + FUNC_LOG; + return iTree->Level(aItemId); + } + +// --------------------------------------------------------------------------- +// Remove all children of the selected node. +// --------------------------------------------------------------------------- +// +EXPORT_C TUint CFsTreeList::Count() const + { + FUNC_LOG; + return iTree->Count(); + } + +// --------------------------------------------------------------------------- +// Gets the number of children of the given node +// --------------------------------------------------------------------------- +// +EXPORT_C TUint CFsTreeList::CountChildren( const TFsTreeItemId aNodeId ) const + { + FUNC_LOG; + return iTree->CountChildren( aNodeId ); + } + +// --------------------------------------------------------------------------- +// Gets the id of a child of the specified node with the position given +// --------------------------------------------------------------------------- +// +EXPORT_C TFsTreeItemId CFsTreeList::Child( const TFsTreeItemId aNodeId, + const TUint aIndex ) const + { + FUNC_LOG; + return iTree->Child( aNodeId, aIndex ); + } + +// --------------------------------------------------------------------------- +// Gets the index of a child with the specified id. +// --------------------------------------------------------------------------- +// +EXPORT_C TUint CFsTreeList::ChildIndex(const TFsTreeItemId aNodeId, + const TFsTreeItemId aItemId ) const + { + FUNC_LOG; + return iTree->ChildIndex(aNodeId, aItemId); + } + +// --------------------------------------------------------------------------- +// Gets the parent's id for the specified item. +// --------------------------------------------------------------------------- +// +EXPORT_C TFsTreeItemId CFsTreeList::Parent(const TFsTreeItemId aItemId) const + { + FUNC_LOG; + return iTree->Parent(aItemId); + } + +// --------------------------------------------------------------------------- +// Checks whether the item with specified id belongs to the list. +// --------------------------------------------------------------------------- +// +EXPORT_C TBool CFsTreeList::Contains( const TFsTreeItemId aItemId ) const + { + FUNC_LOG; + return iTree->Contains(aItemId); + } + +// --------------------------------------------------------------------------- +// Checks if item is node or not. +// --------------------------------------------------------------------------- +// +EXPORT_C TBool CFsTreeList::IsNode( const TFsTreeItemId aItemId ) const + { + FUNC_LOG; + return iTree->IsNode(aItemId); + } + +//--------------------------------------------------------------------------- +// Sets focus state of list component +//--------------------------------------------------------------------------- +EXPORT_C void CFsTreeList::SetFocusedL( const TBool aFocused ) + { + FUNC_LOG; + iListFocused = aFocused; + iTreeControl->SetFocused( iListFocused ); + iTreeVisualizer->SetFocusedL( iListFocused ); + } + +//--------------------------------------------------------------------------- +// Returns state of the focus +//--------------------------------------------------------------------------- +EXPORT_C TBool CFsTreeList::IsFocused() const + { + FUNC_LOG; + return iListFocused; + } + +// --------------------------------------------------------------------------- +// The function sets duration of the slide-in effect. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetSlideInDuration ( TInt aTimeMiliseconds ) + { + FUNC_LOG; + iTreeVisualizer->SetSlideInDuration ( aTimeMiliseconds ); + } + +// --------------------------------------------------------------------------- +// The function returns slide in effect's duration. +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CFsTreeList::SlideInDuration ( ) const + { + FUNC_LOG; + return iTreeVisualizer->SlideInDuration ( ); + } + +// --------------------------------------------------------------------------- +// The function sets direction of the slide in effect. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetSlideInDirection ( + MFsTreeVisualizer::TFsSlideEffect aDirection ) + { + FUNC_LOG; + iTreeVisualizer->SetSlideInDirection ( aDirection ); + } + +// --------------------------------------------------------------------------- +// The function returns direction of the slide in effect. +// --------------------------------------------------------------------------- +// +EXPORT_C MFsTreeVisualizer::TFsSlideEffect + CFsTreeList::SlideInDirection ( ) const + { + FUNC_LOG; + return iTreeVisualizer->SlideInDirection ( ); + } + +// --------------------------------------------------------------------------- +// The function sets duration of the slide-out effect. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetSlideOutDuration ( TInt aTimeMiliseconds ) + { + FUNC_LOG; + iTreeVisualizer->SetSlideOutDuration ( aTimeMiliseconds ); + } + +// --------------------------------------------------------------------------- +// The function returns slide out effect's duration. +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CFsTreeList::SlideOutDuration ( ) const + { + FUNC_LOG; + return iTreeVisualizer->SlideOutDuration ( ); + } + +// --------------------------------------------------------------------------- +// The function sets direction of the slide out effect. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetSlideOutDirection ( + MFsTreeVisualizer::TFsSlideEffect aDirection ) + { + FUNC_LOG; + iTreeVisualizer->SetSlideOutDirection ( aDirection ); + } + +// --------------------------------------------------------------------------- +// The function returns direction of the slide out effect. +// --------------------------------------------------------------------------- +// +EXPORT_C MFsTreeVisualizer::TFsSlideEffect + CFsTreeList::SlideOutDirection ( ) const + { + FUNC_LOG; + return iTreeVisualizer->SlideOutDirection ( ); + } + +// --------------------------------------------------------------------------- +// Returns information about looping type of the list. +// --------------------------------------------------------------------------- +// +EXPORT_C TFsTreeListLoopingType CFsTreeList::LoopingType() const + { + FUNC_LOG; + TFsTreeListLoopingType loopingType = EFsTreeListLoopingDisabled; + + if ( iTreeVisualizer ) + { + loopingType = iTreeVisualizer->LoopingType(); + } + + return loopingType; + } + +// --------------------------------------------------------------------------- +// Returns information whether list is markable, non-markable or +// multi-markable +// --------------------------------------------------------------------------- +// +EXPORT_C CFsTreeList::TFsTreeListMarkType CFsTreeList::MarkType() const + { + FUNC_LOG; + return iMarkType; + } + +// --------------------------------------------------------------------------- +// OLD API - to be removed. +// Returns information about scrollbars used by list visual +// --------------------------------------------------------------------------- +// +EXPORT_C CFsTreeList::TFsTreeListScrollbars CFsTreeList::HasScrollBars() const + { + FUNC_LOG; + return iHasScrollBars; + } + +// --------------------------------------------------------------------------- +// Old API - to be removed +// Enables or disables scrollbars +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetScrollBarsL( const TFsTreeListScrollbars aFlag ) + { + FUNC_LOG; + iHasScrollBars = aFlag; + if ( aFlag == EFsTreeListNoScrollbars ) + { + iTreeVisualizer->SetVScrollBarL( EFalse ); + } + else if ( aFlag == EFsTreeListVerticalScrollbar ) + { + iTreeVisualizer->SetVScrollBarL( ETrue ); + } + } + +// --------------------------------------------------------------------------- +// Returns information about scrollbars used by list visual +// --------------------------------------------------------------------------- +// +EXPORT_C TFsScrollbarVisibility CFsTreeList::ScrollbarVisibility() const + { + FUNC_LOG; + return iTreeVisualizer->ScrollbarVisibility(); + } + +// --------------------------------------------------------------------------- +// Enables or disables scrollbars +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetScrollbarVisibilityL(const TFsScrollbarVisibility aVisibility) + { + FUNC_LOG; + iTreeVisualizer->SetScrollBarVisibilityL(aVisibility); + } + +// --------------------------------------------------------------------------- +// Sets type of list's looping. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetLoopingType( + const TFsTreeListLoopingType aLoopingType ) + { + FUNC_LOG; + if ( iTreeVisualizer ) + { + iTreeVisualizer->SetLoopingType( aLoopingType ); + } + } + +// --------------------------------------------------------------------------- +// The functions sets fade-in's effect duration. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetFadeInEffectTime( TInt aFadeTime ) + { + FUNC_LOG; + iTreeVisualizer->SetFadeInEffectTime( aFadeTime ); + } + +// --------------------------------------------------------------------------- +// The functions returns fade-in's effect duration. +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CFsTreeList::FadeInEffectTime( ) + { + FUNC_LOG; + return iTreeVisualizer->FadeInEffectTime( ); + } + +// --------------------------------------------------------------------------- +// The functions sets fade-out's effect duration. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetFadeOutEffectTime( TInt aFadeTime ) + { + FUNC_LOG; + iTreeVisualizer->SetFadeOutEffectTime ( aFadeTime ); + } + +// --------------------------------------------------------------------------- +// The functions returns fade-out's effect duration. +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CFsTreeList::FadeOutEffectTime( ) + { + FUNC_LOG; + return iTreeVisualizer->FadeOutEffectTime(); + } + +// --------------------------------------------------------------------------- +// Function sets the time of list scroll per item and the scroll +// acceleration rate. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetScrollTime ( TInt aScrollTime, + TReal aScrollAcceleration ) + { + FUNC_LOG; + iTreeVisualizer->SetScrollTime( aScrollTime, aScrollAcceleration ); + } + +// --------------------------------------------------------------------------- +// Function gets the values of scroll speed and its acceleration rate. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::GetScrollTime( TInt& aScrollTime, + TReal& aScrollAcceleration ) + { + FUNC_LOG; + iTreeVisualizer->GetScrollTime( aScrollTime, aScrollAcceleration ); + } + +// --------------------------------------------------------------------------- +// Gets the currently focused (highlighted) item id. +// --------------------------------------------------------------------------- +// +EXPORT_C TFsTreeItemId CFsTreeList::FocusedItem() const + { + FUNC_LOG; + return iTreeVisualizer->FocusedItem(); + } + +// --------------------------------------------------------------------------- +// Sets the focus (highlight) upon the item with given id. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetFocusedItemL( const TFsTreeItemId aItemId ) + { + FUNC_LOG; + iTreeVisualizer->SetFocusedItemL(aItemId); + } + +// --------------------------------------------------------------------------- +// Checks whether the item with specified id is marked. +// --------------------------------------------------------------------------- +// +EXPORT_C TBool CFsTreeList::IsMarked( const TFsTreeItemId aItemId ) const + { + FUNC_LOG; + return iTreeVisualizer->IsMarked( aItemId ); + } + +// --------------------------------------------------------------------------- +// Marks the item. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::MarkItemL( const TFsTreeItemId aItemId, TBool aMarked ) + { + FUNC_LOG; + iTreeVisualizer-> MarkItemL( aItemId, aMarked ); + } + +// --------------------------------------------------------------------------- +// Enables or disables marking of list items. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetMarkTypeL( const TFsTreeListMarkType aFlag ) + { + FUNC_LOG; + iMarkType = aFlag; + + switch ( iMarkType ) + { + case EFsTreeListNonMarkable: + { + iTreeVisualizer->MarkAllItemsL( EFalse ); + break; + } + case EFsTreeListMarkable: + { + RArray markedItems; + iTreeVisualizer->GetMarkedItemsL( markedItems ); + iTreeVisualizer->MarkAllItemsL( EFalse ); + if ( markedItems.Count() > 0 ) + { + iTreeVisualizer->MarkItemL( markedItems[0], ETrue ); + } + break; + } + case EFsTreeListMultiMarkable: + { + break; + } + } + } + +// --------------------------------------------------------------------------- +// Get items indentation in pixels. +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CFsTreeList::Indentation() const + { + FUNC_LOG; + return iTreeVisualizer->Indentation(); + } + +// --------------------------------------------------------------------------- +// Set items indentation in pixels. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetIndentationL( const TInt aIndentation ) + { + FUNC_LOG; + iTreeVisualizer->SetIndentationL( aIndentation ); + } + +// --------------------------------------------------------------------------- +// The functions sets wether all item in the list should be always in +// extended state or in normal state. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetItemsAlwaysExtendedL ( TBool aAlwaysExtended ) + { + FUNC_LOG; + iTreeVisualizer->SetItemsAlwaysExtendedL ( aAlwaysExtended ); + } + +// --------------------------------------------------------------------------- +// The function returns if items are always in extended state or in normal. +// --------------------------------------------------------------------------- +// +EXPORT_C TBool CFsTreeList::IsItemsAlwaysExtended ( ) + { + FUNC_LOG; + TBool alwaysExtended = EFalse; + alwaysExtended = iTreeVisualizer->IsItemsAlwaysExtended(); + return alwaysExtended; + } + +// --------------------------------------------------------------------------- +// C++ constructor. +// --------------------------------------------------------------------------- +// +EXPORT_C CFsTreeList::CFsTreeList( CAlfEnv& aEnv, CFsTreeVisualizerBase& aTreeV ) + : iEnv(&aEnv), + iListFocused (ETrue) + { + FUNC_LOG; + iTreeVisualizer = &aTreeV; + } + +// --------------------------------------------------------------------------- +// Second phase constructor. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::ConstructL( CAlfEnv& aEnv ) + { + FUNC_LOG; + iTextStyleManager = CFsAlfTextStyleManager::NewL( aEnv.TextStyleManager() ); + iTree = CFsTree::NewL(*iTreeVisualizer, *(iTreeVisualizer->RootItemData()), + *(iTreeVisualizer->RootNodeVisualizer())); + iTreeVisualizer->SetTreeData(*iTree); + iTreeControl = CFsTreeControl::NewL(aEnv, *iTree, *iTreeVisualizer); + iTreeVisualizer->ShowListL( EFalse ); + iTreeVisualizer->SetVisualizerObserver( this ); + } + +// --------------------------------------------------------------------------- +// Expand the node. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::ExpandNodeL( const TFsTreeItemId aNodeId ) + { + FUNC_LOG; + iTreeVisualizer->ExpandNodeL(aNodeId); + } + +// --------------------------------------------------------------------------- +// Collapse the node. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::CollapseNodeL( const TFsTreeItemId aNodeId ) + { + FUNC_LOG; + iTreeVisualizer->CollapseNodeL(aNodeId); + } + +// --------------------------------------------------------------------------- +// Copy the list of marked items. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::GetMarkedItemsL( + RFsTreeItemIdList& aMarkedItems ) const + { + FUNC_LOG; + iTreeVisualizer->GetMarkedItemsL(aMarkedItems); + } + +// --------------------------------------------------------------------------- +// Gets the reference to the item/node data (const). +// --------------------------------------------------------------------------- +// +EXPORT_C MFsTreeItemData& CFsTreeList::ItemData( + const TFsTreeItemId aItemId) const + { + FUNC_LOG; + return iTree->ItemData(aItemId); + } + +// --------------------------------------------------------------------------- +// Sets the reference to the item/node data. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetItemDataL( MFsTreeItemData& aData, + const TFsTreeItemId aItemId ) + { + FUNC_LOG; + MFsTreeItemData* data = &iTree->ItemData(aItemId); + delete data; + iTree->SetItemData(aData, aItemId); + iTreeVisualizer->TreeEventL( + MFsTreeObserver::EFsTreeItemDataChanged, + MFsTreeObserver::TFsTreeEventParams(aItemId, KFsTreeNoneID, -1) ); + } + +// --------------------------------------------------------------------------- +// Gets the reference to the item visualizer (const). +// --------------------------------------------------------------------------- +// +EXPORT_C MFsTreeItemVisualizer& CFsTreeList::ItemVisualizer( + const TFsTreeItemId aItemId ) const + { + FUNC_LOG; + return *iTree->ItemVisualizer(aItemId); + } + +// --------------------------------------------------------------------------- +// Sets the pointer to the item visualizer and refreshes item. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetItemVisualizerL( + MFsTreeItemVisualizer& aVisualizer, + const TFsTreeItemId aItemId ) + { + FUNC_LOG; + MFsTreeItemVisualizer* visualizer = iTree->ItemVisualizer(aItemId); + visualizer->Hide(iTreeVisualizer->ItemExpansionDelay()); + delete visualizer; + iTree->SetItemVisualizer(aVisualizer, aItemId); + iTreeVisualizer->TreeEventL( + MFsTreeObserver::EFsTreeItemVisualizerChanged, + MFsTreeObserver::TFsTreeEventParams(aItemId, KFsTreeNoneID, -1)); + } + +// --------------------------------------------------------------------------- +// Check whether the node is expanded or collapsed. +// --------------------------------------------------------------------------- +// +EXPORT_C TBool CFsTreeList::IsExpanded( const TFsTreeItemId aNodeId ) + { + FUNC_LOG; + return iTree->NodeVisualizer(aNodeId)->IsExpanded(); + } + +// --------------------------------------------------------------------------- +// Gets the reference to the tree visualizer +// --------------------------------------------------------------------------- +// +EXPORT_C CFsTreeVisualizerBase& CFsTreeList::TreeVisualizer() const + { + FUNC_LOG; + return *iTreeVisualizer; + } + +// --------------------------------------------------------------------------- +// Sets a tree visualizer for the list +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetTreeVisualizer( CFsTreeVisualizerBase& aTreeV ) + { + FUNC_LOG; + iTreeVisualizer = &aTreeV; + + if (iTree) + { + iTreeVisualizer->SetTreeData(*iTree); + } + + } + +// --------------------------------------------------------------------------- +// Shows the list visual +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::ShowListL( const TBool aFadeIn, + const TBool aSlideIn ) + { + FUNC_LOG; + //SetFocusedL(ETrue); + iTreeVisualizer->ShowListL( aFadeIn, aSlideIn ); + } + +// --------------------------------------------------------------------------- +// Shows the list visual +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetDirectTouchMode( const TBool aDirectTouchMode ) + { + FUNC_LOG; + iTreeVisualizer->SetDirectTouchMode( aDirectTouchMode ); + } + + +// --------------------------------------------------------------------------- +// Hides the list visual +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::HideListL( const TBool aFadeOut, + const TBool aSlideOut ) + { + FUNC_LOG; + //SetFocusedL(EFalse); + iTreeVisualizer->HideList( aFadeOut, aSlideOut ); + } + +// --------------------------------------------------------------------------- +// Sets visiblity of the border +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetBorderL( const TBool aVisible, + CAlfTexture* aBorderTexture ) + { + FUNC_LOG; + iTreeVisualizer->SetBorderL( aVisible, aBorderTexture ); + } + +// --------------------------------------------------------------------------- +// Sets visiblity of the border +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetShadowL( const TBool aVisible ) + { + FUNC_LOG; + iTreeVisualizer->SetShadowL( aVisible ); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CFsTreeList::GetItemDisplayRectTarget ( const TFsTreeItemId aItemId, TAlfRealRect& aRect ) + { + FUNC_LOG; + TInt retVal(KErrNotFound); + if (iTree->Contains( aItemId )) + { + retVal = iTreeVisualizer->GetItemDisplayRectTarget( aItemId, aRect ); + } + return retVal; + } + +// --------------------------------------------------------------------------- +// Returns pointer to the menu list assigned to the item +// --------------------------------------------------------------------------- +// +EXPORT_C CFsTreeList* CFsTreeList::ItemMenu( + TFsTreeItemId aItemId ) + { + FUNC_LOG; + return iTree->ItemVisualizer(aItemId)->Menu(); + } + +// --------------------------------------------------------------------------- +// Retrieves events from tree visualizer +// --------------------------------------------------------------------------- +// +// Touch +EXPORT_C void CFsTreeList::TreeVisualizerEventL( + const TFsTreeVisualizerEvent aEvent, + const TFsTreeItemId aId ) const +// + { + FUNC_LOG; + MFsTreeListObserver::TFsTreeListEvent listEvent; + + switch ( aEvent ) + { + // "Base class modifications for using touch" + case MFsTreeVisualizerObserver::EFsTreeItemTouchAction: + { + listEvent = MFsTreeListObserver::EFsTreeListItemTouchAction; + break; + } + case MFsTreeVisualizerObserver::EFsTreeItemTouchLongTap: + { + listEvent = MFsTreeListObserver::EFsTreeListItemTouchLongTap; + break; + } + case MFsTreeVisualizerObserver::EFsTreeItemTouchFocused: + { + listEvent = MFsTreeListObserver::EFsTreeListItemTouchFocused; + break; + } + + // + + case MFsTreeVisualizerObserver::EFsTreeItemSelected: + { + listEvent = MFsTreeListObserver::EFsTreeItemSelected; + break; + } + case MFsTreeVisualizerObserver::EFsTreeItemWithMenuSelected: + { + listEvent = MFsTreeListObserver::EFsTreeItemWithMenuSelected; + break; + } + case MFsTreeVisualizerObserver::EFsTreeKeyRightArrow: + { + listEvent = MFsTreeListObserver::EFsTreeListKeyRightArrow; + break; + } + case MFsTreeVisualizerObserver::EFsTreeKeyLeftArrow: + { + listEvent = MFsTreeListObserver::EFsTreeListKeyLeftArrow; + break; + } + case MFsTreeVisualizerObserver::EFsTreeListVisualizerShown: + { + listEvent = MFsTreeListObserver::EFsTreeListShown; + break; + } + case MFsTreeVisualizerObserver::EFsTreeListVisualizerHidden: + { + listEvent = MFsTreeListObserver::EFsTreeListHidden; + break; + } + case MFsTreeVisualizerObserver::EFsTreeItemWillGetFocused: + { + listEvent = MFsTreeListObserver::EFsTreeListItemWillGetFocused; + break; + } + + // + // Pass on the collapse/expand events. + case MFsTreeVisualizerObserver::EFsTreeListItemCollapsed: + { + listEvent = MFsTreeListObserver::EFsTreeListItemCollapsed; + break; + } + case MFsTreeVisualizerObserver::EFsTreeListItemExpanded: + { + listEvent = MFsTreeListObserver::EFsTreeListItemExpanded; + break; + } + case MFsTreeVisualizerObserver::EFsTreeListCollapsedAll: + { + listEvent = MFsTreeListObserver::EFsTreeListCollapsedAll; + break; + } + case MFsTreeVisualizerObserver::EFsTreeListExpandedAll: + { + listEvent = MFsTreeListObserver::EFsTreeListExpandedAll; + break; + } + // + + default: + { + return; + } + } + + for ( TInt c = 0; c < iObservers.Count(); c++ ) + { + // Touch + iObservers[c]->TreeListEventL( + listEvent, + aId); + // + } + } + +// --------------------------------------------------------------------------- +// Gets the reference to the text style manager. +// --------------------------------------------------------------------------- +EXPORT_C CFsAlfTextStyleManager& CFsTreeList::TextStyleManager() const + { + FUNC_LOG; + return *iTextStyleManager; + } + + +// --------------------------------------------------------------------------- +// Sets the type of text marquee. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetTextMarqueeType(const TFsTextMarqueeType aMarquee) + { + FUNC_LOG; + iTreeVisualizer->SetTextMarqueeType( aMarquee ); + } + + +// --------------------------------------------------------------------------- +// Returns the type of text marquee. +// --------------------------------------------------------------------------- +// +EXPORT_C TFsTextMarqueeType CFsTreeList::TextMarqueeType() const + { + FUNC_LOG; + return iTreeVisualizer->TextMarqueeType(); + } + + +// --------------------------------------------------------------------------- +// Sets the speed of marquee. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetTextMarqueeSpeed ( const TInt aPixelsPerSec ) + { + FUNC_LOG; + iTreeVisualizer->SetTextMarqueeSpeed ( aPixelsPerSec ); + } + + +// --------------------------------------------------------------------------- +// Returns the speed of marquee. +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CFsTreeList::TextMarqueeSpeed ( ) const + { + FUNC_LOG; + return iTreeVisualizer->TextMarqueeSpeed( ); + } + + +// --------------------------------------------------------------------------- +// Sets delay for text marquee start. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetTextMarqueeStartDelay ( const TInt aStartDelay ) + { + FUNC_LOG; + iTreeVisualizer->SetTextMarqueeStartDelay ( aStartDelay ); + } + + +// --------------------------------------------------------------------------- +// Returns delay for text marquee. +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CFsTreeList::TextMarqueeStartDelay () const + { + FUNC_LOG; + return iTreeVisualizer->TextMarqueeStartDelay( ); + } + + +// --------------------------------------------------------------------------- +// Sets a delay for each cycle start. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetTextMarqueeCycleStartDelay ( const TInt aCycleStartDelay ) + { + FUNC_LOG; + iTreeVisualizer->SetTextMarqueeCycleStartDelay ( aCycleStartDelay ); + } + + +// --------------------------------------------------------------------------- +// Returns a delay for each cycle start. +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CFsTreeList::TextMarqueeCycleStartDelay () const + { + FUNC_LOG; + return iTreeVisualizer->TextMarqueeCycleStartDelay( ); + } + + +// --------------------------------------------------------------------------- +// Sets number of marquee cycles. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::SetTextMarqueeRepetitions ( const TInt aMarqueeRepetitions ) + { + FUNC_LOG; + iTreeVisualizer->SetTextMarqueeRepetitions ( aMarqueeRepetitions ); + } + + +// --------------------------------------------------------------------------- +// Returns number of marquee cycles. +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CFsTreeList::TextMarqueeRepetitions ( ) const + { + FUNC_LOG; + return iTreeVisualizer->TextMarqueeRepetitions( ); + } + +// --------------------------------------------------------------------------- +// Returns number of marquee cycles. +// --------------------------------------------------------------------------- +// +EXPORT_C void CFsTreeList::DisableKineticScrolling( TBool aDisable ) + { + iTreeVisualizer->DisableKineticScrolling( aDisable ); + } + +//EOF +