48205334fb2d7cfafee9266377661d520b55bd8f
[WebKit-https.git] / WebKit / qt / Api / qwebframe.h
1 /*
2     Copyright (C) 2007 Trolltech ASA
3     Copyright (C) 2007 Staikos Computing Services Inc.
4
5     This library is free software; you can redistribute it and/or
6     modify it under the terms of the GNU Library General Public
7     License as published by the Free Software Foundation; either
8     version 2 of the License, or (at your option) any later version.
9
10     This library is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13     Library General Public License for more details.
14
15     You should have received a copy of the GNU Library General Public License
16     along with this library; see the file COPYING.LIB.  If not, write to
17     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18     Boston, MA 02110-1301, USA.
19
20     This class provides all functionality needed for loading images, style sheets and html
21     pages from the web. It has a memory cache for these objects.
22 */
23
24 #ifndef QWEBFRAME_H
25 #define QWEBFRAME_H
26
27 #include <QtCore/qobject.h>
28 #include <QtCore/qurl.h>
29 #include "qwebkitglobal.h"
30
31 class QRect;
32 class QPoint;
33 class QPainter;
34 class QPixmap;
35 class QMouseEvent;
36 class QWheelEvent;
37 class QWebNetworkRequest;
38 class QNetworkRequest;
39
40 class QWebFramePrivate;
41 class QWebPage;
42
43 namespace WebCore {
44     class WidgetPrivate;
45     class FrameLoaderClientQt;
46     class ChromeClientQt;
47 }
48 class QWebFrameData;
49
50 class QWEBKIT_EXPORT QWebFrame : public QObject
51 {
52     Q_OBJECT
53 protected:
54     QWebFrame(QWebPage *parent, QWebFrameData *frameData);
55     QWebFrame(QWebFrame *parent, QWebFrameData *frameData);
56     ~QWebFrame();
57
58 public:
59     QWebPage *page() const;
60
61     void load(const QUrl &url);
62 #if QT_VERSION < 0x040400
63     void load(const QWebNetworkRequest &request);
64 #else
65     void load(const QNetworkRequest &request);
66 #endif
67     void setHtml(const QString &html, const QUrl &baseUrl = QUrl());
68     void setHtml(const QByteArray &html, const QUrl &baseUrl = QUrl());
69     void setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl());
70
71     void addToJSWindowObject(const QString &name, QObject *object);
72     QString markup() const;
73     QString innerText() const;
74     QString renderTreeDump() const;
75
76     QString title() const;
77     QUrl url() const;
78     QPixmap icon() const;
79     
80     QString name() const;
81
82     QList<QWebFrame*> childFrames() const;
83
84     Qt::ScrollBarPolicy verticalScrollBarPolicy() const;
85     void setVerticalScrollBarPolicy(Qt::ScrollBarPolicy);
86     Qt::ScrollBarPolicy horizontalScrollBarPolicy() const;
87     void setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy);
88
89     void render(QPainter *painter, const QRect &source);
90     void layout();
91
92     QPoint pos() const;
93     QRect geometry() const;
94
95 public Q_SLOTS:
96     QString evaluateJavaScript(const QString& scriptSource);
97
98 Q_SIGNALS:
99     void cleared();
100     void loadDone(bool ok);
101     void provisionalLoad();
102     void titleChanged(const QString &title);
103     void hoveringOverLink(const QString &link, const QString &title, const QString &textContent);
104
105     void loadStarted();
106     void loadFinished();
107
108     /**
109       * Signal is emitted when the mainframe()'s initial layout is completed.
110      */
111     void initialLayoutComplete();
112     
113     /**
114      * Signal is emitted when an icon ("favicon") is loaded from the site.
115      */
116     void iconLoaded();
117
118 private:
119     friend class QWebPage;
120     friend class QWebPagePrivate;
121     friend class WebCore::WidgetPrivate;
122     friend class WebCore::FrameLoaderClientQt;
123     friend class WebCore::ChromeClientQt;
124     QWebFramePrivate *d;
125 };
126
127 #endif