webengine/wmlengine/src/hed/include/HistoryStack.h
changeset 0 dd21522fd290
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/wmlengine/src/hed/include/HistoryStack.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,234 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:  Stack of HistoryEntry objects containing info about previously 
+*       viewed pages.  Allows for the navigation (forward and back) of 
+*       those pages and for the maintenance (add/remove) of the pages
+*
+*/
+
+
+#ifndef HISTORYSTACK_H
+#define HISTORYSTACK_H
+
+// INCLUDES
+#include <e32base.h>
+//#include "historyentry.h"
+#include "HistoryInterface.h"
+#include "HistoryController.h"
+
+// CONSTANTS
+
+/*
+   static const TUint KHistoryStackSize = 20;
+
+// MACROS
+
+// DATA TYPES
+
+enum THistoryStackDirection
+{
+
+    EHistoryStackDirectionPrevious,
+    EHistoryStackDirectionCurrent,
+    EHistoryStackDirectionNext
+};
+
+
+enum THistoryStackLocation
+{
+
+    EHistoryStackLocationAtBeginning,
+    EHistoryStackLocationInMiddle,
+    EHistoryStackLocationAtEnd
+};
+*/
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class CHistoryMemCollector;
+class CUrlRequestInfo;
+
+// CLASS DECLARATION
+
+/**
+* CHistoryStack
+* 
+*  @lib ?library
+*  @since ?Series60_version
+*/
+class CHistoryStack : public CBase
+    {
+
+    public:
+
+        /**
+        * Two-phased constructor.
+        * @return CHistoryStack *
+        */
+        static CHistoryStack* NewL(TInt aHistoryStackStackSize);
+
+        /**
+        * Two-phased constructor.
+        * @return CHistoryStack *
+        */
+        static CHistoryStack* NewLC(TInt aHistoryStackStackSize);
+
+        /**
+        * Sets the new current page in the history relative to
+        * the current page.
+        * Leave if index out of bounds.
+        */
+        void SetCurrentL (THistoryStackDirection aDirection);
+
+        /**
+        * Sets the new current page in the history to
+        * the index.
+        * Leave if index out of bounds.
+        */
+        void SetCurrentByIndexL (TInt aIndex);
+
+        /**
+        * Return the entry in the direction relative to the current page
+        * @return CHistoryEntry const*
+        */
+//        CHistoryEntry* Entry (THistoryStackDirection aDirection) ;
+
+
+        /**
+        * Delete entire history
+        */
+        void DeleteAll ();
+
+        /**
+        * Returns the number of objects in the history list
+        * @return TInt
+        */
+//        TInt Length () const {return iHistoryList->Count();}
+
+        /**
+        * Retreive an entry by it's position (index) in the list
+        * @return CHistoryEntry const*
+        */
+//        CHistoryEntry* EntryByIndex (TInt aHistoryIndex);
+
+        /**
+        * Determine position in stack
+        * @return THistoryStackLocation 
+        */
+        THistoryStackLocation HistoryStackLocation () const;
+
+		// return current index
+		TInt CurrentIndex () const { return iCurrent; }
+		
+		// sets the current index
+		void SetCurrentIndex(TInt aHistoryIndex) {iCurrent = aHistoryIndex;}
+
+        /**
+		* Insert
+		* Add Url to History List
+		* @since 3.x
+        * @return void
+		*/
+		void Insert( const TDesC& aUrl, const CUrlRequestInfo* aRequestInfo);
+
+        /**
+		* Insert
+		* Add Url to History List
+		* @since 3.x
+        * @return void
+		*/
+//        void InsertL( const TDesC& aUrl, const TDesC& aRequestUrl, TBool aIsPost, TDesC8& aFormContentType, CPostDataParts* aPostData );
+
+        /**
+        * Implements virtual TBool ContainsItemForURL(const TDesC& aUrl) = 0;)
+        * @return TBool
+        * Return TRUE if URL request is in the history list
+        */
+        TBool containsItemForURL (const TDesC& aUrl);
+        
+        /**
+        * Delete the entry(s) from the list
+        */
+        void DeleteEntry (TInt aIndex, TInt aCount=1);
+        
+        /**
+        * Returns the stack size
+        */
+        TInt Size(){ return iHistoryStackStackSize; }
+        
+        /**
+        * Retreive the index of the entry relative to the current page
+        * @return TInt
+        */
+        TInt Index (THistoryStackDirection aDirection);
+
+	public:
+	
+	    void ClearThumbnails();
+
+		TBool IsOOMCollecting();
+
+        /**
+        * Destructor
+        */
+        ~CHistoryStack();
+
+    private:
+
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL(TInt aHistoryStackStackSize);
+
+        /**
+        * Insert entry into stack at the current position and 
+        * delete all entries above the current entry.
+        * Leave if out of memory.
+        */
+//        void PushEntryL (CHistoryEntry* aHistoryEntry);
+
+        /**
+        * Insert entry either at the beginning of the list
+        * or at the end of the list
+        * Leave if out of memory.
+        */
+//        void InsertEntryL (CHistoryEntry* aHistoryEntry, THistoryStackLocation aLocation);
+
+		/**
+		*  Default constructor
+		*/
+		CHistoryStack();
+
+        /*  Private Members  */
+
+    private :
+
+		/**
+		* List of pointers to History Entries
+		* Pointers are owned by this class
+		*/
+//        CArrayPtrFlat<CHistoryEntry>* iHistoryList;
+
+        TInt iCurrent;
+
+		TInt iHistoryStackStackSize;
+
+        CHistoryMemCollector* iMemCollector;
+
+    };
+#endif  // HISTORYSTACK_H
+
+// End of File