/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The contents of this file are subject to the Netscape Public License * Version 1.0 (the "NPL"); you may not use this file except in * compliance with the NPL. You may obtain a copy of the NPL at * http://www.mozilla.org/NPL/ * * Software distributed under the NPL is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL * for the specific language governing rights and limitations under the * NPL. * * The Initial Developer of this code under the NPL is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All Rights * Reserved. */ #ifndef __FEHistory_H #define __FEHistory_H // Self contained history operations. class CHistory { private: HISTORY *m_pHistory; public: CHistory(HISTORY *pUseThis = NULL, BOOL bClone = FALSE); ~CHistory(); void SetHISTORY(HISTORY *pUsurp, BOOL bClone = FALSE); public: HISTORY *GetHISTORY(); // Duping. public: static HISTORY *Clone(HISTORY *pTwin); static HST_ENT *Clone(HST_ENT *pTwin); // Comparison. public: static BOOL Compare(HISTORY *p1, HISTORY *p2); static BOOL Compare(HST_ENT *p1, HST_ENT *p2); // Management public: void Add(HST_ENT *pAdd); BOOL Remove(HST_ENT *pRemove); HST_ENT *Add(URL *pUrl); void AddCurrent(URL *pUrl) { SetCurrent(Add(pUrl)); } // State public: void SetCurrent(HST_ENT *pCurrent); void SetCurrentIndex(int iIndex); HST_ENT *GetCurrent(); HST_ENT *GetNext(); HST_ENT *GetPrev(); HST_ENT *GetIndex(int iIndex); // Command UI helpers. public: BOOL CanGoBack() { if(GetPrev()) { return(TRUE); } return(FALSE); } BOOL CanGoForward() { if(GetNext()) { return(TRUE); } return(FALSE); } // Indexing public: int GetIndex(HST_ENT *pEntry); int GetCurrentIndex() { return(GetIndex(GetCurrent())); } int GetNextIndex() { return(GetIndex(GetNext())); } int GetPrevIndex() { return(GetIndex(GetPrev())); } // URLs. public: static void SetUrl(HST_ENT *pHist, URL *pUrl); static URL *GetUrl(HST_ENT *pHist); URL *GetCurrentUrl() { return(GetUrl(GetCurrent())); } URL *GetNextUrl() { return(GetUrl(GetNext())); } URL *GetPrevUrl() { return(GetUrl(GetPrev())); } URL *GetIndexUrl(int iIndex) { return(GetUrl(GetIndex(iIndex))); } // Title. public: static int SetTitle(HST_ENT *pHist, const char *pTitle); int SetCurrentTitle(const char *pTitle) { return(SetTitle(GetCurrent(), pTitle)); } int SetNextTitle(const char *pTitle) { return(SetTitle(GetNext(), pTitle)); } int SetPrevTitle(const char *pTitle) { return(SetTitle(GetPrev(), pTitle)); } int SetIndexTitle(const char *pTitle, int iIndex) { return(SetTitle(GetIndex(iIndex), pTitle)); } static const char *GetTitle(HST_ENT *pHist); const char *GetCurrentTitle() { return(GetTitle(GetCurrent())); } const char *GetNextTitle() { return(GetTitle(GetNext())); } const char *GetPrevTitle() { return(GetTitle(GetPrev())); } const char *GetIndexTitle(int iIndex) { return(GetTitle(GetIndex(iIndex))); } // Form data. public: static int SetFormData(HST_ENT *pHist, void *pData); static void *GetFormData(HST_ENT *pHist); void *GetCurrentFormData() { return(GetFormData(GetCurrent())); } void *GetNextFormData() { return(GetFormData(GetNext())); } void *GetPrevFormData() { return(GetFormData(GetPrev())); } void *GetIndexFormData(int iIndex) { return(GetFormData(GetIndex(iIndex))); } // Embed data. public: static int SetEmbedData(HST_ENT *pHist, void *pData); static void *GetEmbedData(HST_ENT *pHist); void *GetCurrentEmbedData() { return(GetEmbedData(GetCurrent())); } void *GetNextEmbedData() { return(GetEmbedData(GetNext())); } void *GetPrevEmbedData() { return(GetEmbedData(GetPrev())); } void *GetIndexEmbedData(int iIndex) { return(GetEmbedData(GetIndex(iIndex))); } // Grid data. public: static int SetGridData(HST_ENT *pHist, void *pData); static void *GetGridData(HST_ENT *pHist); void *GetCurrentGridData() { return(GetGridData(GetCurrent())); } void *GetNextGridData() { return(GetGridData(GetNext())); } void *GetPrevGridData() { return(GetGridData(GetPrev())); } void *GetIndexGridData(int iIndex) { return(GetGridData(GetIndex(iIndex))); } // Window data. public: static int SetWindowData(HST_ENT *pHist, void *pData); static void *GetWindowData(HST_ENT *pHist); void *GetCurrentWindowData() { return(GetWindowData(GetCurrent())); } void *GetNextWindowData() { return(GetWindowData(GetNext())); } void *GetPrevWindowData() { return(GetWindowData(GetPrev())); } void *GetIndexWindowData(int iIndex) { return(GetWindowData(GetIndex(iIndex))); } // Applet data. public: static int SetAppletData(HST_ENT *pHist, void *pData); static void *GetAppletData(HST_ENT *pHist); void *GetCurrentAppletData() { return(GetAppletData(GetCurrent())); } void *GetNextAppletData() { return(GetAppletData(GetNext())); } void *GetPrevAppletData() { return(GetAppletData(GetPrev())); } void *GetIndexAppletData(int iIndex) { return(GetAppletData(GetIndex(iIndex))); } // Document position. public: static void SetPosition(HST_ENT *pHist, long lEleID); void SetCurrentPosition(long lEleID) { SetPosition(GetCurrent(), lEleID); } void SetNextPosition(long lEleID) { SetPosition(GetNext(), lEleID); } void SetPrevPosition(long lEleID) { SetPosition(GetPrev(), lEleID); } void SetIndexPosition(long lEleID, int iIndex) { SetPosition(GetIndex(iIndex), lEleID); } static long GetPosition(HST_ENT *pHist); long GetCurrentPosition() { return(GetPosition(GetCurrent())); } long GetNextPosition() { return(GetPosition(GetNext())); } long GetPrevPosition() { return(GetPosition(GetPrev())); } long GetIndexPosition(int iIndex) { return(GetPosition(GetIndex(iIndex))); } // History entry list manipulation. public: static HST_ENT *GetNext(HST_ENT *pEntry); static void SetNext(HST_ENT *pThis, HST_ENT *pNext); }; #endif // __FEHistory_H