1/*
2    Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
3
4    This library is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Library General Public
6    License as published by the Free Software Foundation; either
7    version 2 of the License, or (at your option) any later version.
8
9    This library is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Library General Public License for more details.
13
14    You should have received a copy of the GNU Library General Public License
15    along with this library; see the file COPYING.LIB.  If not, write to
16    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17    Boston, MA 02110-1301, USA.
18*/
19
20#ifndef QWEBHISTORY_H
21#define QWEBHISTORY_H
22
23#include <QtCore/qurl.h>
24#include <QtCore/qstring.h>
25#include <QtGui/qicon.h>
26#include <QtCore/qdatetime.h>
27#include <QtCore/qshareddata.h>
28
29#include "qwebkitglobal.h"
30
31class QWebPage;
32
33namespace WebCore {
34    class FrameLoaderClientQt;
35}
36
37class QWebHistoryItemPrivate;
38
39class QWEBKIT_EXPORT QWebHistoryItem {
40public:
41    QWebHistoryItem(const QWebHistoryItem &other);
42    QWebHistoryItem &operator=(const QWebHistoryItem &other);
43    ~QWebHistoryItem();
44
45    QUrl originalUrl() const;
46    QUrl url() const;
47
48    QString title() const;
49    QDateTime lastVisited() const;
50
51    QIcon icon() const;
52
53    QVariant userData() const;
54    void setUserData(const QVariant& userData);
55
56    bool isValid() const;
57
58private:
59    QWebHistoryItem(QWebHistoryItemPrivate *priv);
60    friend class QWebHistory;
61    friend class QWebPage;
62    friend class WebCore::FrameLoaderClientQt;
63    friend class QWebHistoryItemPrivate;
64    friend class DumpRenderTreeSupportQt;
65    //friend QDataStream & operator<<(QDataStream& out,const QWebHistoryItem& hist);
66    //friend QDataStream & operator>>(QDataStream& in,QWebHistoryItem& hist);
67    QExplicitlySharedDataPointer<QWebHistoryItemPrivate> d;
68};
69
70
71class QWebHistoryPrivate;
72class QWEBKIT_EXPORT QWebHistory {
73public:
74    void clear();
75
76    QList<QWebHistoryItem> items() const;
77    QList<QWebHistoryItem> backItems(int maxItems) const;
78    QList<QWebHistoryItem> forwardItems(int maxItems) const;
79
80    bool canGoBack() const;
81    bool canGoForward() const;
82
83    void back();
84    void forward();
85    void goToItem(const QWebHistoryItem &item);
86
87    QWebHistoryItem backItem() const;
88    QWebHistoryItem currentItem() const;
89    QWebHistoryItem forwardItem() const;
90    QWebHistoryItem itemAt(int i) const;
91
92    int currentItemIndex() const;
93
94    int count() const;
95
96    int maximumItemCount() const;
97    void setMaximumItemCount(int count);
98
99private:
100    QWebHistory();
101    ~QWebHistory();
102
103    friend class QWebPage;
104    friend class QWebPagePrivate;
105    friend QWEBKIT_EXPORT QDataStream& operator>>(QDataStream&, QWebHistory&);
106    friend QWEBKIT_EXPORT QDataStream& operator<<(QDataStream&, const QWebHistory&);
107
108    Q_DISABLE_COPY(QWebHistory)
109
110    QWebHistoryPrivate *d;
111};
112
113QWEBKIT_EXPORT QDataStream& operator<<(QDataStream& stream, const QWebHistory& history);
114QWEBKIT_EXPORT QDataStream& operator>>(QDataStream& stream, QWebHistory& history);
115
116#endif
117