1 /* 2 Copyright (C) 2008,2009 Nokia Corporation and/or its subsidiary(-ies) 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 21 #ifndef QWEBFRAME_H 22 #define QWEBFRAME_H 23 24 #include <QtCore/qobject.h> 25 #include <QtCore/qurl.h> 26 #include <QtCore/qvariant.h> 27 #include <QtGui/qicon.h> 28 #include <QtScript/qscriptengine.h> 29 #include <QtNetwork/qnetworkaccessmanager.h> 30 #include "qwebkitglobal.h" 31 32 QT_BEGIN_NAMESPACE 33 class QRect; 34 class QPoint; 35 class QPainter; 36 class QPixmap; 37 class QMouseEvent; 38 class QWheelEvent; 39 class QNetworkRequest; 40 class QRegion; 41 class QPrinter; 42 QT_END_NAMESPACE 43 44 class QWebNetworkRequest; 45 class QWebFramePrivate; 46 class QWebPage; 47 class QWebHitTestResult; 48 class QWebHistoryItem; 49 class QWebSecurityOrigin; 50 class QWebElement; 51 class QWebElementCollection; 52 53 namespace WebCore { 54 class WidgetPrivate; 55 class FrameLoaderClientQt; 56 class ChromeClientQt; 57 } 58 class QWebFrameData; 59 class QWebHitTestResultPrivate; 60 class QWebFrame; 61 62 class QWEBKIT_EXPORT QWebHitTestResult { 63 public: 64 QWebHitTestResult(); 65 QWebHitTestResult(const QWebHitTestResult &other); 66 QWebHitTestResult &operator=(const QWebHitTestResult &other); 67 ~QWebHitTestResult(); 68 69 bool isNull() const; 70 71 QPoint pos() const; 72 QRect boundingRect() const; 73 QWebElement enclosingBlockElement() const; 74 QString title() const; 75 76 QString linkText() const; 77 QUrl linkUrl() const; 78 QUrl linkTitle() const; 79 QWebFrame *linkTargetFrame() const; 80 QWebElement linkElement() const; 81 82 QString alternateText() const; // for img, area, input and applet 83 84 QUrl imageUrl() const; 85 QPixmap pixmap() const; 86 87 bool isContentEditable() const; 88 bool isContentSelected() const; 89 90 QWebElement element() const; 91 92 QWebFrame *frame() const; 93 94 private: 95 QWebHitTestResult(QWebHitTestResultPrivate *priv); 96 QWebHitTestResultPrivate *d; 97 98 friend class QWebFrame; 99 friend class QWebPagePrivate; 100 friend class QWebPage; 101 }; 102 103 class QWEBKIT_EXPORT QWebFrame : public QObject { 104 Q_OBJECT 105 Q_PROPERTY(qreal textSizeMultiplier READ textSizeMultiplier WRITE setTextSizeMultiplier DESIGNABLE false) 106 Q_PROPERTY(qreal zoomFactor READ zoomFactor WRITE setZoomFactor) 107 Q_PROPERTY(QString title READ title) 108 Q_PROPERTY(QUrl url READ url WRITE setUrl) 109 Q_PROPERTY(QUrl requestedUrl READ requestedUrl) 110 Q_PROPERTY(QUrl baseUrl READ baseUrl) 111 Q_PROPERTY(QIcon icon READ icon) 112 Q_PROPERTY(QSize contentsSize READ contentsSize) 113 Q_PROPERTY(QPoint scrollPosition READ scrollPosition WRITE setScrollPosition) 114 Q_PROPERTY(bool focus READ hasFocus) 115 private: 116 QWebFrame(QWebPage *parent, QWebFrameData *frameData); 117 QWebFrame(QWebFrame *parent, QWebFrameData *frameData); 118 ~QWebFrame(); 119 120 public: 121 QWebPage *page() const; 122 123 void load(const QUrl &url); 124 void load(const QNetworkRequest &request, 125 QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation, 126 const QByteArray &body = QByteArray()); 127 void setHtml(const QString &html, const QUrl &baseUrl = QUrl()); 128 void setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl()); 129 130 void addToJavaScriptWindowObject(const QString &name, QObject *object); 131 void addToJavaScriptWindowObject(const QString &name, QObject *object, QScriptEngine::ValueOwnership ownership); 132 QString toHtml() const; 133 QString toPlainText() const; 134 QString renderTreeDump() const; 135 136 QString title() const; 137 void setUrl(const QUrl &url); 138 QUrl url() const; 139 QUrl requestedUrl() const; 140 QUrl baseUrl() const; 141 QIcon icon() const; 142 QMultiMap<QString, QString> metaData() const; 143 144 QString frameName() const; 145 146 QWebFrame *parentFrame() const; 147 QList<QWebFrame*> childFrames() const; 148 149 Qt::ScrollBarPolicy scrollBarPolicy(Qt::Orientation orientation) const; 150 void setScrollBarPolicy(Qt::Orientation orientation, Qt::ScrollBarPolicy policy); 151 152 void setScrollBarValue(Qt::Orientation orientation, int value); 153 int scrollBarValue(Qt::Orientation orientation) const; 154 int scrollBarMinimum(Qt::Orientation orientation) const; 155 int scrollBarMaximum(Qt::Orientation orientation) const; 156 QRect scrollBarGeometry(Qt::Orientation orientation) const; 157 158 void scroll(int, int); 159 bool scrollRecursively(int, int); 160 QPoint scrollPosition() const; 161 void setScrollPosition(const QPoint &pos); 162 163 enum RenderLayer { 164 ContentsLayer = 0x10, 165 ScrollBarLayer = 0x20, 166 PanIconLayer = 0x40, 167 168 AllLayers = 0xff 169 }; 170 171 void render(QPainter*); 172 void render(QPainter*, const QRegion& clip); 173 void render(QPainter*, RenderLayer layer, const QRegion& clip = QRegion()); 174 175 void setTextSizeMultiplier(qreal factor); 176 qreal textSizeMultiplier() const; 177 178 qreal zoomFactor() const; 179 void setZoomFactor(qreal factor); 180 181 bool hasFocus() const; 182 void setFocus(); 183 184 QPoint pos() const; 185 QRect geometry() const; 186 QSize contentsSize() const; 187 188 QWebElement documentElement() const; 189 QWebElementCollection findAllElements(const QString &selectorQuery) const; 190 QWebElement findFirstElement(const QString &selectorQuery) const; 191 192 QWebHitTestResult hitTestContent(const QPoint &pos) const; 193 194 virtual bool event(QEvent *); 195 196 QWebSecurityOrigin securityOrigin() const; 197 198 public Q_SLOTS: 199 QVariant evaluateJavaScript(const QString& scriptSource); 200 #ifndef QT_NO_PRINTER 201 void print(QPrinter *printer) const; 202 #endif 203 204 Q_SIGNALS: 205 void javaScriptWindowObjectCleared(); 206 207 void provisionalLoad(); 208 void titleChanged(const QString &title); 209 void urlChanged(const QUrl &url); 210 211 void initialLayoutCompleted(); 212 213 void iconChanged(); 214 215 void contentsSizeChanged(const QSize &size); 216 217 void loadStarted(); 218 void loadFinished(bool ok); 219 220 private: 221 friend class QWebPage; 222 friend class QWebPagePrivate; 223 friend class QWebFramePrivate; 224 friend class WebCore::WidgetPrivate; 225 friend class WebCore::FrameLoaderClientQt; 226 friend class WebCore::ChromeClientQt; 227 QWebFramePrivate *d; 228 }; 229 230 #endif 231