2 Copyright (C) 2007 Trolltech ASA
3 Copyright (C) 2007 Staikos Computing Services Inc.
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.
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.
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.
24 #include "qwebsettings.h"
25 #include "qwebkitglobal.h"
27 #include <QtCore/qobject.h>
28 #include <QtGui/qwidget.h>
35 class QNetworkRequest;
37 class QNetworkAccessManager;
41 class QWebNetworkRequest;
44 class QWebPagePrivate;
46 class QWebNetworkInterface;
47 class QWebPluginFactory;
48 class QWebHitTestResult;
53 class FrameLoaderClientQt;
54 class FrameLoadRequest;
55 class InspectorClientQt;
60 class QWEBKIT_EXPORT QWebPage : public QObject
64 Q_PROPERTY(bool modified READ isModified)
65 Q_PROPERTY(QString selectedText READ selectedText)
66 Q_PROPERTY(QSize viewportSize READ viewportSize WRITE setViewportSize)
67 Q_PROPERTY(bool forwardUnsupportedContent READ forwardUnsupportedContent WRITE setForwardUnsupportedContent)
68 Q_PROPERTY(LinkDelegationPolicy linkDelegationPolicy READ linkDelegationPolicy WRITE setLinkDelegationPolicy)
69 Q_PROPERTY(QPalette palette READ palette WRITE setPalette)
70 Q_PROPERTY(bool editable READ isEditable WRITE setEditable)
71 Q_ENUMS(LinkDelegationPolicy NavigationType WebAction)
74 NavigationTypeLinkClicked,
75 NavigationTypeFormSubmitted,
76 NavigationTypeBackOrForward,
78 NavigationTypeFormResubmitted,
118 MoveToStartOfDocument,
130 SelectStartOfDocument,
135 SetTextDirectionDefault,
136 SetTextDirectionLeftToRight,
137 SetTextDirectionRightToLeft,
145 InsertParagraphSeparator,
153 FindCaseSensitively = 2,
154 FindWrapsAroundDocument = 4
156 Q_DECLARE_FLAGS(FindFlags, FindFlag)
158 enum LinkDelegationPolicy {
160 DelegateExternalLinks,
169 explicit QWebPage(QObject *parent = 0);
172 QWebFrame *mainFrame() const;
173 QWebFrame *currentFrame() const;
175 QWebHistory *history() const;
176 QWebSettings *settings() const;
178 void setView(QWidget *view);
179 QWidget *view() const;
181 bool isModified() const;
182 QUndoStack *undoStack() const;
184 #if QT_VERSION < 0x040400 && !defined(qdoc)
185 void setNetworkInterface(QWebNetworkInterface *interface);
186 QWebNetworkInterface *networkInterface() const;
188 // #### why is this in the page itself?
189 #ifndef QT_NO_NETWORKPROXY
190 void setNetworkProxy(const QNetworkProxy& proxy);
191 QNetworkProxy networkProxy() const;
195 void setNetworkAccessManager(QNetworkAccessManager *manager);
196 QNetworkAccessManager *networkAccessManager() const;
199 void setPluginFactory(QWebPluginFactory *factory);
200 QWebPluginFactory *pluginFactory() const;
202 quint64 totalBytes() const;
203 quint64 bytesReceived() const;
205 QString selectedText() const;
207 QAction *action(WebAction action) const;
208 virtual void triggerAction(WebAction action, bool checked = false);
210 QSize viewportSize() const;
211 void setViewportSize(const QSize &size) const;
213 virtual bool event(QEvent*);
214 bool focusNextPrevChild(bool next);
216 QVariant inputMethodQuery(Qt::InputMethodQuery property) const;
218 bool findText(const QString &subString, FindFlags options = 0);
220 void setForwardUnsupportedContent(bool forward);
221 bool forwardUnsupportedContent() const;
223 void setLinkDelegationPolicy(LinkDelegationPolicy policy);
224 LinkDelegationPolicy linkDelegationPolicy() const;
226 void setPalette(const QPalette &palette);
227 QPalette palette() const;
229 void setEditable(bool editable);
230 bool isEditable() const;
232 bool swallowContextMenuEvent(QContextMenuEvent *event);
233 void updatePositionDependentActions(const QPoint &pos);
235 QMenu *createStandardContextMenu();
239 class ExtensionOption
241 class ExtensionReturn
243 virtual bool extension(Extension extension, const ExtensionOption *option = 0, ExtensionReturn *output = 0);
244 virtual bool supportsExtension(Extension extension) const;
248 void loadProgress(int progress);
249 void loadFinished(bool ok);
251 void linkHovered(const QString &link, const QString &title, const QString &textContent);
252 void statusBarMessage(const QString& text);
253 void selectionChanged();
254 void frameCreated(QWebFrame *frame);
255 void geometryChangeRequested(const QRect& geom);
256 void repaintRequested(const QRect& dirtyRect);
257 void scrollRequested(int dx, int dy, const QRect& scrollViewRect);
258 void windowCloseRequested();
259 void printRequested(QWebFrame *frame);
260 void linkClicked(const QUrl &url);
262 void toolBarVisibilityChangeRequested(bool visible);
263 void statusBarVisibilityChangeRequested(bool visible);
264 void menuBarVisibilityChangeRequested(bool visible);
266 #if QT_VERSION >= 0x040400
267 void unsupportedContent(QNetworkReply *reply);
268 void downloadRequested(const QNetworkRequest &request);
271 void microFocusChanged();
274 virtual QWebPage *createWindow(WebWindowType type);
275 virtual QObject *createPlugin(const QString &classid, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues);
277 #if QT_VERSION >= 0x040400
278 virtual bool acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, NavigationType type);
280 virtual bool acceptNavigationRequest(QWebFrame *frame, const QWebNetworkRequest &request, NavigationType type);
282 virtual QString chooseFile(QWebFrame *originatingFrame, const QString& oldFile);
283 virtual void javaScriptAlert(QWebFrame *originatingFrame, const QString& msg);
284 virtual bool javaScriptConfirm(QWebFrame *originatingFrame, const QString& msg);
285 virtual bool javaScriptPrompt(QWebFrame *originatingFrame, const QString& msg, const QString& defaultValue, QString* result);
286 virtual void javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID);
288 virtual QString userAgentForUrl(const QUrl& url) const;
291 Q_PRIVATE_SLOT(d, void _q_onLoadProgressChanged(int))
292 Q_PRIVATE_SLOT(d, void _q_webActionTriggered(bool checked))
295 friend class QWebFrame;
296 friend class QWebPagePrivate;
297 friend class WebCore::ChromeClientQt;
298 friend class WebCore::EditorClientQt;
299 friend class WebCore::FrameLoaderClientQt;
300 friend class WebCore::InspectorClientQt;
301 friend class WebCore::ResourceHandle;
304 Q_DECLARE_OPERATORS_FOR_FLAGS(QWebPage::FindFlags)