diff -r 000000000000 -r 2f259fa3e83a uifw/AvKon/aknhlist/src/akntreeitem.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uifw/AvKon/aknhlist/src/akntreeitem.cpp Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,207 @@ +/* +* Copyright (c) 2006 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: Implementation for the CAknTreeItem class. +* +*/ + + +#include +#include +#include + +#include "akntreeitem.h" +#include "akntreenode.h" +#include "akntree.h" + + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// Destructor. +// --------------------------------------------------------------------------- +// +CAknTreeItem::~CAknTreeItem() + { + iParent = NULL; + } + + +// --------------------------------------------------------------------------- +// Returns pointer to the parent node. +// --------------------------------------------------------------------------- +// +const CAknTreeNode* CAknTreeItem::Parent() const + { + return iParent; + } + + +CAknTreeNode* CAknTreeItem::Parent() + { + return iParent; + } + + +// --------------------------------------------------------------------------- +// Sets the parent node. +// --------------------------------------------------------------------------- +// +void CAknTreeItem::SetParent( CAknTreeNode* aParent ) + { + __ASSERT_DEBUG( aParent != this, User::Invariant() ); + iParent = aParent; + } + + +// --------------------------------------------------------------------------- +// Returns pointer to the tree root. +// --------------------------------------------------------------------------- +// +CAknTree* CAknTreeItem::Root() const + { + return iParent ? iParent->Root() : NULL; + } + + +TInt CAknTreeItem::Level() const + { + return iParent ? iParent->Level() + 1 : 0; + } + + +// --------------------------------------------------------------------------- +// These virtual functions are intended for compensating the absence of +// dynamic casting. Default implementations return null pointers. +// --------------------------------------------------------------------------- +// +CAknTreeLeaf* CAknTreeItem::Leaf() + { + return NULL; + } + + +const CAknTreeLeaf* CAknTreeItem::Leaf() const + { + return NULL; + } + + +CAknTreeNode* CAknTreeItem::Node() + { + return NULL; + } + + +const CAknTreeNode* CAknTreeItem::Node() const + { + return NULL; + } + + +// --------------------------------------------------------------------------- +// Determines whether the object is an intance of CAknTreeLeaf with the +// virtual Leaf() method that should be overriden by CAknTreeLeaf class to +// return pointer to the object instead of null pointer. +// --------------------------------------------------------------------------- +// +TBool CAknTreeItem::IsLeaf() const + { + return Leaf() != NULL; + } + + +// --------------------------------------------------------------------------- +// Determines whether the object is an instance of CAknTreeNode with the +// virtual Node() method, that should be overriden by CAknTreeNode class to +// return pointer to the object instead of null pointer. +// --------------------------------------------------------------------------- +// +TBool CAknTreeItem::IsNode() const + { + return Node() != NULL; + } + + +// --------------------------------------------------------------------------- +// Gets the minimum size for the hierarchical list item from the layout data. +// --------------------------------------------------------------------------- +// +TSize CAknTreeItem::MinimumSize() const + { + TAknWindowLineLayout lineLayout = + AknLayoutScalable_Avkon::aid_size_min_hl_cp1().LayoutLine(); + TRect parentRect = iAvkonAppUi->ApplicationRect(); // Not according to LAF! + TAknLayoutRect layoutRect; + layoutRect.LayoutRect( parentRect, lineLayout ); + TRect minimumSize = layoutRect.Rect(); + return minimumSize.Size(); + } + + +// --------------------------------------------------------------------------- +// Empty implementation for pointer event handling. +// --------------------------------------------------------------------------- +// +void CAknTreeItem::HandlePointerEventL( const TPointerEvent& /*aPointerEvent*/, + const TRect& /*aItemRect*/ ) + { + } + + +// --------------------------------------------------------------------------- +// Static comparison function. +// --------------------------------------------------------------------------- +// +TInt CAknTreeItem::Compare( const CAknTreeItem& aFirst, + const CAknTreeItem& aSecond ) + { + CAknTree* root = aFirst.Root(); + if ( !root ) + { + root = aSecond.Root(); + } + + if ( root ) + { + return root->Compare( aFirst, aSecond ); + } + else + { + return NULL; + } + } + + +// --------------------------------------------------------------------------- +// Default C++ constructor. +// --------------------------------------------------------------------------- +// +CAknTreeItem::CAknTreeItem() + { + } + + +// --------------------------------------------------------------------------- +// Gets specified rectangle from the layout data. +// --------------------------------------------------------------------------- +// +TRect CAknTreeItem::RectFromLayout( const TRect& aParent, + const TAknWindowComponentLayout& aComponentLayout ) const + { + TAknLayoutRect layoutRect; + layoutRect.LayoutRect( aParent, aComponentLayout.LayoutLine() ); + return layoutRect.Rect(); + } + +