--- /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 <aknappui.h>
+#include <AknUtils.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+
+#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();
+ }
+
+