--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AvKon/aknhlist/inc/akntreeiterator.h Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,181 @@
+/*
+* 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: Iterator class for traversing the tree structure.
+*
+*/
+
+
+#ifndef T_AKNTREEITERATOR_H
+#define T_AKNTREEITERATOR_H
+
+
+#include <e32def.h>
+
+class CAknTreeItem;
+class CAknTreeNode;
+
+/** Flag indicating that the content of collapsed nodes is not to be
+ included in the iteration sequence. */
+const TUint KAknSkipCollapsedNodeContents = 0x01;
+
+
+/**
+ * Iterator class for traversing a tree structure.
+ *
+ * The @c CAknTree class is responsible for constructing the iterators for
+ * tree instances. The @c CAknTree::Iterator() method can be used in
+ * retrieving an iterator for the expanded tree structure, or
+ * @c CAknTree::Iterator( CAknTreeNode*, TUint ) method can be used in
+ * retrieving iterator with specified properties for some specified node.
+ *
+ * Each iterator instance stores the root node which is being iterated,
+ * item denoting the current position in the iteration sequence, and flags
+ * affecting the iteration.
+ *
+ * @lib aknhlist.lib
+ * @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TAknTreeIterator )
+ {
+
+ friend class CAknTree;
+
+public:
+
+ /**
+ * Copy constructor.
+ *
+ * @param aIterator Copied iterator.
+ */
+ TAknTreeIterator( const TAknTreeIterator& aIterator );
+
+ /**
+ * Returns whether the iterator has next tree item.
+ *
+ * @return @c ETrue, if there is a next item.
+ */
+ TBool HasNext() const;
+
+ /**
+ * Returns a pointer to the next tree item. The returned value is @c NULL,
+ * when there is no more items. This changes also the iterator to point
+ * to the returned item.
+ *
+ * @return Pointer to the next tree item.
+ */
+ CAknTreeItem* Next();
+
+ /**
+ * Returns whether the iterator has previous tree item.
+ *
+ * @return @c ETrue, if there is a previous item.
+ */
+ TBool HasPrevious() const;
+
+ /**
+ * Returns a pointer to the previous tree item. The returned value is
+ * @c NULL, if there is no previous tree item. This changes also the
+ * iterator to point to the returned item.
+ *
+ * @return Pointer to the previous tree item.
+ */
+ CAknTreeItem* Previous();
+
+ /**
+ * Return pointer to the first item in the sequence.
+ *
+ * @return First item.
+ */
+ CAknTreeItem* First() const;
+
+ /**
+ * Returns pointer to the las item in the sequence.
+ *
+ * @return Last item.
+ */
+ CAknTreeItem* Last() const;
+
+ /**
+ * Changes the position of the iterator.
+ *
+ * Note: This method does not check that the specified position is
+ * included in the iterated subtree.
+ *
+ * @param aCurrent Pointer to the new position of the iterator.
+ */
+ void SetCurrent( CAknTreeItem* aCurrent );
+
+private:
+
+ /**
+ * Default C++ constructor.
+ *
+ * @param aRoot Root node for the iterated tree (or subtree).
+ */
+ TAknTreeIterator( CAknTreeNode* aRoot, TUint aFlags );
+
+ /**
+ * Assignment operator.
+ *
+ * @param aIterator Iterator.
+ */
+ TAknTreeIterator& operator=( const TAknTreeIterator& aIterator );
+
+ /**
+ * Returns pointer to the next tree item.
+ *
+ * @return Pointer to the next tree item. @c NULL, if the next item is not
+ * found.
+ */
+ CAknTreeItem* FindNext() const;
+
+ /**
+ * Returns pointer ot the previous tree item.
+ *
+ * @return Pointer to the previous tree item. @c NULL, if previous item is
+ * not found.
+ */
+ CAknTreeItem* FindPrevious() const;
+
+private: // data
+
+ /**
+ * Current item.
+ */
+ CAknTreeItem* iCurrent;
+
+ /**
+ * Root of the tree (or subtree).
+ */
+ CAknTreeNode* iRoot;
+
+ /**
+ * Next item. Contains a pointer to the cached next item.
+ */
+ mutable CAknTreeItem* iNext;
+
+ /**
+ * Previous item. Contains a pointer to the cached previous item.
+ */
+ mutable CAknTreeItem* iPrevious;
+
+ /**
+ * Flags for the iterator.
+ */
+ mutable TUint iFlags;
+
+ };
+
+
+#endif // T_AKNTREEITERATOR_H