#ifndef qgraphicswkview_h #define qgraphicswkview_h #include "qwebkitglobal.h" #include <WebKit2/WKBase.h> #include <QGraphicsWidget> #include "qwkpage.h" QT_BEGIN_NAMESPACE class QCursor; QT_END_NAMESPACE class QWKContext; class QGraphicsWKViewPrivate; WKStringRef WKStringCreateWithQString(const QString& qString); QString WKStringCopyQString(WKStringRef stringRef); class QWEBKIT_EXPORT QGraphicsWKView : public QGraphicsWidget { Q_OBJECT Q_PROPERTY(QString title READ title) Q_PROPERTY(QUrl url READ url WRITE setUrl) public: enum BackingStoreType { Simple, Tiled }; QGraphicsWKView(QWKContext* context, BackingStoreType backingStoreType = Simple, QGraphicsItem* parent = 0); virtual ~QGraphicsWKView(); QWKPage* page() const; virtual void setGeometry(const QRectF&); void load(const QUrl&); void setUrl(const QUrl&); QUrl url() const; QString title() const; void triggerPageAction(QWKPage::WebAction action, bool checked = false); virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*); virtual QVariant itemChange(GraphicsItemChange, const QVariant&); virtual bool event(QEvent*); virtual QSizeF sizeHint(Qt::SizeHint, const QSizeF&) const; virtual QVariant inputMethodQuery(Qt::InputMethodQuery) const; void takeSnapshot(const QSize& size, const QRect& documentRect); // FIXME: should not be public virtual QRectF visibleRect() const; void prepareScaleChange(); void commitScaleChange(); public: Q_SIGNAL void titleChanged(const QString& title); Q_SIGNAL void loadStarted(); Q_SIGNAL void loadFinished(bool ok); Q_SIGNAL void loadProgress(int progress); Q_SIGNAL void initialLayoutCompleted(); Q_SIGNAL void urlChanged(const QUrl&); Q_SIGNAL void snapshotTaken(const QImage&); public Q_SLOTS: void back(); void forward(); void reload(); void stop(); void showContextMenu(QSharedPointer<QMenu>); protected: virtual void keyPressEvent(QKeyEvent*); virtual void keyReleaseEvent(QKeyEvent*); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent*); virtual void mousePressEvent(QGraphicsSceneMouseEvent*); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent*); virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent*); virtual void wheelEvent(QGraphicsSceneWheelEvent*); virtual void touchEvent(QTouchEvent*); virtual void hoverMoveEvent(QGraphicsSceneHoverEvent*); Q_SLOT void updateCursor(const QCursor&); Q_SLOT void focusNextPrevChildCallback(bool next); virtual bool focusNextPrevChild(bool next); virtual void focusInEvent(QFocusEvent*); virtual void focusOutEvent(QFocusEvent*); private: Q_PRIVATE_SLOT(d, void onScaleChanged()) Q_PRIVATE_SLOT(d, void onToolTipChanged(const QString&)) QGraphicsWKViewPrivate* d; friend class QGraphicsWKViewPrivate; friend class TiledDrawingAreaProxy; }; #endif /* qgraphicswkview_h */