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