diff -r 000000000000 -r dd21522fd290 webengine/osswebengine/WebKit/qt/Api/qwebpagehistory.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webengine/osswebengine/WebKit/qt/Api/qwebpagehistory.h Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,152 @@ +/* + Copyright (C) 2007 Trolltech ASA + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + + This class provides all functionality needed for loading images, style sheets and html + pages from the web. It has a memory cache for these objects. +*/ +#ifndef QWEBPAGEHISTORY_H +#define QWEBPAGEHISTORY_H + +#include +#include +#include +#include +#include + +#include + +#if QT_VERSION < 0x040300 +template class QExplicitlySharedDataPointer +{ +public: + typedef T Type; + + inline T &operator*() { return *d; } + inline const T &operator*() const { return *d; } + inline T *operator->() { return d; } + inline const T *operator->() const { return d; } + inline operator T *() { return d; } + inline operator const T *() const { return d; } + inline T *data() { return d; } + inline const T *data() const { return d; } + inline const T *constData() const { return d; } + + //inline operator bool () const { return d != 0; } + + inline bool operator==(const QExplicitlySharedDataPointer &other) const { return d == other.d; } + inline bool operator!=(const QExplicitlySharedDataPointer &other) const { return d != other.d; } + inline bool operator==(const T *ptr) const { return d == ptr; } + inline bool operator!=(const T *ptr) const { return d != ptr; } + + inline QExplicitlySharedDataPointer() { d = 0; } + inline ~QExplicitlySharedDataPointer() { if (d && !d->ref.deref()) delete d; } + + explicit QExplicitlySharedDataPointer(T *data); + inline QExplicitlySharedDataPointer(const QExplicitlySharedDataPointer &o) : d(o.d) { if (d) d->ref.ref(); } + inline QExplicitlySharedDataPointer & operator=(const QExplicitlySharedDataPointer &o) { + if (o.d != d) { + T *x = o.d; + if (x) x->ref.ref(); + x = qAtomicSetPtr(&d, x); + if (x && !x->ref.deref()) + delete x; + } + return *this; + } + inline QExplicitlySharedDataPointer &operator=(T *o) { + if (o != d) { + T *x = o; + if (x) x->ref.ref(); + x = qAtomicSetPtr(&d, x); + if (x && !x->ref.deref()) + delete x; + } + return *this; + } + + inline bool operator!() const { return !d; } + +private: + + T *d; +}; +template +Q_INLINE_TEMPLATE QExplicitlySharedDataPointer::QExplicitlySharedDataPointer(T *adata) : d(adata) +{ if (d) d->ref.ref(); } +#endif + +class QWebPage; + +class QWebHistoryItemPrivate; +class QWEBKIT_EXPORT QWebHistoryItem +{ +public: + QWebHistoryItem(const QWebHistoryItem &other); + QWebHistoryItem &operator=(const QWebHistoryItem &other); + ~QWebHistoryItem(); + + QList children() const; + + QUrl originalUrl() const; + QUrl currentUrl() const; + + QString title() const; + QDateTime lastVisited() const; + + QPixmap icon() const; + + QWebHistoryItem(QWebHistoryItemPrivate *priv); +private: + friend class QWebPageHistory; + friend class QWebPage; + QExplicitlySharedDataPointer d; +}; + +class QWebPageHistoryPrivate; +class QWEBKIT_EXPORT QWebPageHistory +{ +public: + QWebPageHistory(const QWebPageHistory &other); + QWebPageHistory &operator=(const QWebPageHistory &other); + ~QWebPageHistory(); + + void clear(); + + QList items() const; + QList backItems(int maxItems) const; + QList forwardItems(int maxItems) const; + + bool canGoBack() const; + bool canGoForward() const; + + void goBack(); + void goForward(); + void goToItem(QWebHistoryItem *item); + + QWebHistoryItem backItem() const; + QWebHistoryItem currentItem() const; + QWebHistoryItem forwardItem() const; + QWebHistoryItem itemAtIndex(int i) const; + + + QWebPageHistory(QWebPageHistoryPrivate *priv); +private: + QExplicitlySharedDataPointer d; +}; + +#endif