qwebpage.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:9k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /*
  2.     Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
  3.     Copyright (C) 2007 Staikos Computing Services Inc.
  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.     This library is distributed in the hope that it will be useful,
  9.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  11.     Library General Public License for more details.
  12.     You should have received a copy of the GNU Library General Public License
  13.     along with this library; see the file COPYING.LIB.  If not, write to
  14.     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
  15.     Boston, MA 02110-1301, USA.
  16. */
  17. #ifndef QWEBPAGE_H
  18. #define QWEBPAGE_H
  19. #include "qwebsettings.h"
  20. #include "qwebkitglobal.h"
  21. #include <QtCore/qobject.h>
  22. #include <QtGui/qwidget.h>
  23. QT_BEGIN_NAMESPACE
  24. class QNetworkProxy;
  25. class QUndoStack;
  26. class QUrl;
  27. class QNetworkRequest;
  28. class QNetworkReply;
  29. class QNetworkAccessManager;
  30. QT_END_NAMESPACE
  31. class QWebFrame;
  32. class QWebNetworkRequest;
  33. class QWebHistory;
  34. class QWebPagePrivate;
  35. class QWebFrameData;
  36. class QWebNetworkInterface;
  37. class QWebHitTestResult;
  38. class QWebPluginFactory;
  39. namespace WebCore {
  40.     class ChromeClientQt;
  41.     class EditorClientQt;
  42.     class FrameLoaderClientQt;
  43.     class FrameLoadRequest;
  44.     class InspectorClientQt;
  45.     class ResourceHandle;
  46.     class HitTestResult;
  47.     class FrameView;
  48. }
  49. class QWEBKIT_EXPORT QWebPage : public QObject
  50. {
  51.     Q_OBJECT
  52.     Q_PROPERTY(bool modified READ isModified)
  53.     Q_PROPERTY(QString selectedText READ selectedText)
  54.     Q_PROPERTY(QSize viewportSize READ viewportSize WRITE setViewportSize)
  55.     Q_PROPERTY(bool forwardUnsupportedContent READ forwardUnsupportedContent WRITE setForwardUnsupportedContent)
  56.     Q_PROPERTY(LinkDelegationPolicy linkDelegationPolicy READ linkDelegationPolicy WRITE setLinkDelegationPolicy)
  57.     Q_PROPERTY(QPalette palette READ palette WRITE setPalette)
  58.     Q_ENUMS(LinkDelegationPolicy NavigationType WebAction)
  59. public:
  60.     enum NavigationType {
  61.         NavigationTypeLinkClicked,
  62.         NavigationTypeFormSubmitted,
  63.         NavigationTypeBackOrForward,
  64.         NavigationTypeReload,
  65.         NavigationTypeFormResubmitted,
  66.         NavigationTypeOther
  67.     };
  68.     enum WebAction {
  69.         NoWebAction = - 1,
  70.         OpenLink,
  71.         OpenLinkInNewWindow,
  72.         OpenFrameInNewWindow,
  73.         DownloadLinkToDisk,
  74.         CopyLinkToClipboard,
  75.         OpenImageInNewWindow,
  76.         DownloadImageToDisk,
  77.         CopyImageToClipboard,
  78.         Back,
  79.         Forward,
  80.         Stop,
  81.         Reload,
  82.         Cut,
  83.         Copy,
  84.         Paste,
  85.         Undo,
  86.         Redo,
  87.         MoveToNextChar,
  88.         MoveToPreviousChar,
  89.         MoveToNextWord,
  90.         MoveToPreviousWord,
  91.         MoveToNextLine,
  92.         MoveToPreviousLine,
  93.         MoveToStartOfLine,
  94.         MoveToEndOfLine,
  95.         MoveToStartOfBlock,
  96.         MoveToEndOfBlock,
  97.         MoveToStartOfDocument,
  98.         MoveToEndOfDocument,
  99.         SelectNextChar,
  100.         SelectPreviousChar,
  101.         SelectNextWord,
  102.         SelectPreviousWord,
  103.         SelectNextLine,
  104.         SelectPreviousLine,
  105.         SelectStartOfLine,
  106.         SelectEndOfLine,
  107.         SelectStartOfBlock,
  108.         SelectEndOfBlock,
  109.         SelectStartOfDocument,
  110.         SelectEndOfDocument,
  111.         DeleteStartOfWord,
  112.         DeleteEndOfWord,
  113.         SetTextDirectionDefault,
  114.         SetTextDirectionLeftToRight,
  115.         SetTextDirectionRightToLeft,
  116.         ToggleBold,
  117.         ToggleItalic,
  118.         ToggleUnderline,
  119.         InspectElement,
  120.         WebActionCount
  121.     };
  122.     enum FindFlag {
  123.         FindBackward = 1,
  124.         FindCaseSensitively = 2,
  125.         FindWrapsAroundDocument = 4
  126.     };
  127.     Q_DECLARE_FLAGS(FindFlags, FindFlag)
  128.     enum LinkDelegationPolicy {
  129.         DontDelegateLinks,
  130.         DelegateExternalLinks,
  131.         DelegateAllLinks
  132.     };
  133.     enum WebWindowType {
  134.         WebBrowserWindow,
  135.         WebModalDialog
  136.     };
  137.     explicit QWebPage(QObject *parent = 0);
  138.     ~QWebPage();
  139.     QWebFrame *mainFrame() const;
  140.     QWebFrame *currentFrame() const;
  141.     QWebHistory *history() const;
  142.     QWebSettings *settings() const;
  143.     void setView(QWidget *view);
  144.     QWidget *view() const;
  145.     bool isModified() const;
  146. #ifndef QT_NO_UNDOSTACK
  147.     QUndoStack *undoStack() const;
  148. #endif
  149. #if QT_VERSION < 0x040400 && !defined(qdoc)
  150.     void setNetworkInterface(QWebNetworkInterface *interface);
  151.     QWebNetworkInterface *networkInterface() const;
  152.     // #### why is this in the page itself?
  153. #ifndef QT_NO_NETWORKPROXY
  154.     void setNetworkProxy(const QNetworkProxy& proxy);
  155.     QNetworkProxy networkProxy() const;
  156. #endif
  157. #else
  158.     void setNetworkAccessManager(QNetworkAccessManager *manager);
  159.     QNetworkAccessManager *networkAccessManager() const;
  160. #endif
  161.     void setPluginFactory(QWebPluginFactory *factory);
  162.     QWebPluginFactory *pluginFactory() const;
  163.     quint64 totalBytes() const;
  164.     quint64 bytesReceived() const;
  165.     QString selectedText() const;
  166.     QAction *action(WebAction action) const;
  167.     virtual void triggerAction(WebAction action, bool checked = false);
  168.     QSize viewportSize() const;
  169.     void setViewportSize(const QSize &size) const;
  170.     virtual bool event(QEvent*);
  171.     bool focusNextPrevChild(bool next);
  172.     QVariant inputMethodQuery(Qt::InputMethodQuery property) const;
  173.     bool findText(const QString &subString, FindFlags options = 0);
  174.     void setForwardUnsupportedContent(bool forward);
  175.     bool forwardUnsupportedContent() const;
  176.     void setLinkDelegationPolicy(LinkDelegationPolicy policy);
  177.     LinkDelegationPolicy linkDelegationPolicy() const;
  178.     void setPalette(const QPalette &palette);
  179.     QPalette palette() const;
  180. #ifndef QT_NO_CONTEXTMENU
  181.     bool swallowContextMenuEvent(QContextMenuEvent *event);
  182. #endif
  183.     void updatePositionDependentActions(const QPoint &pos);
  184.     enum Extension {
  185.     };
  186.     class ExtensionOption
  187.     {};
  188.     class ExtensionReturn
  189.     {};
  190.     virtual bool extension(Extension extension, const ExtensionOption *option = 0, ExtensionReturn *output = 0);
  191.     virtual bool supportsExtension(Extension extension) const;
  192. Q_SIGNALS:
  193.     void loadStarted();
  194.     void loadProgress(int progress);
  195.     void loadFinished(bool ok);
  196.     void linkHovered(const QString &link, const QString &title, const QString &textContent);
  197.     void statusBarMessage(const QString& text);
  198.     void selectionChanged();
  199.     void frameCreated(QWebFrame *frame);
  200.     void geometryChangeRequested(const QRect& geom);
  201.     void repaintRequested(const QRect& dirtyRect);
  202.     void scrollRequested(int dx, int dy, const QRect& scrollViewRect);
  203.     void windowCloseRequested();
  204.     void printRequested(QWebFrame *frame);
  205.     void linkClicked(const QUrl &url);
  206.     void toolBarVisibilityChangeRequested(bool visible);
  207.     void statusBarVisibilityChangeRequested(bool visible);
  208.     void menuBarVisibilityChangeRequested(bool visible);
  209. #if QT_VERSION >= 0x040400
  210.     void unsupportedContent(QNetworkReply *reply);
  211.     void downloadRequested(const QNetworkRequest &request);
  212. #endif
  213.     void microFocusChanged();
  214. protected:
  215.     virtual QWebPage *createWindow(WebWindowType type);
  216.     virtual QObject *createPlugin(const QString &classid, const QUrl &url, const QStringList &paramNames, const QStringList &paramValues);
  217. #if QT_VERSION >= 0x040400
  218.     virtual bool acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, NavigationType type);
  219. #else
  220.     virtual bool acceptNavigationRequest(QWebFrame *frame, const QWebNetworkRequest &request, NavigationType type);
  221. #endif
  222.     virtual QString chooseFile(QWebFrame *originatingFrame, const QString& oldFile);
  223.     virtual void javaScriptAlert(QWebFrame *originatingFrame, const QString& msg);
  224.     virtual bool javaScriptConfirm(QWebFrame *originatingFrame, const QString& msg);
  225.     virtual bool javaScriptPrompt(QWebFrame *originatingFrame, const QString& msg, const QString& defaultValue, QString* result);
  226.     virtual void javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID);
  227.     virtual QString userAgentForUrl(const QUrl& url) const;
  228. private:
  229.     Q_PRIVATE_SLOT(d, void _q_onLoadProgressChanged(int))
  230.     Q_PRIVATE_SLOT(d, void _q_webActionTriggered(bool checked))
  231.     QWebPagePrivate *d;
  232.     friend class QWebFrame;
  233.     friend class QWebPagePrivate;
  234.     friend class QWebView;
  235.     friend class WebCore::ChromeClientQt;
  236.     friend class WebCore::EditorClientQt;
  237.     friend class WebCore::FrameLoaderClientQt;
  238.     friend class WebCore::InspectorClientQt;
  239.     friend class WebCore::ResourceHandle;
  240.     friend class WebCore::FrameView;
  241. };
  242. Q_DECLARE_OPERATORS_FOR_FLAGS(QWebPage::FindFlags)
  243. #endif