1 #ifndef qgraphicswkview_h 2 #define qgraphicswkview_h 3 4 #include "qwebkitglobal.h" 5 6 #include <WebKit2/WKBase.h> 7 #include <QGraphicsWidget> 8 #include "qwkpage.h" 9 10 QT_BEGIN_NAMESPACE 11 class QCursor; 12 QT_END_NAMESPACE 13 14 class QWKContext; 15 class QGraphicsWKViewPrivate; 16 17 WKStringRef WKStringCreateWithQString(const QString& qString); 18 QString WKStringCopyQString(WKStringRef stringRef); 19 20 class QWEBKIT_EXPORT QGraphicsWKView : public QGraphicsWidget { 21 Q_OBJECT 22 Q_PROPERTY(QString title READ title) 23 Q_PROPERTY(QUrl url READ url WRITE setUrl) 24 25 public: 26 enum BackingStoreType { Simple, Tiled }; 27 QGraphicsWKView(QWKContext* context, BackingStoreType backingStoreType = Simple, QGraphicsItem* parent = 0); 28 29 virtual ~QGraphicsWKView(); 30 31 QWKPage* page() const; 32 33 virtual void setGeometry(const QRectF&); 34 35 void load(const QUrl&); 36 void setUrl(const QUrl&); 37 QUrl url() const; 38 39 QString title() const; 40 41 void triggerPageAction(QWKPage::WebAction action, bool checked = false); 42 43 virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*); 44 virtual QVariant itemChange(GraphicsItemChange, const QVariant&); 45 virtual bool event(QEvent*); 46 virtual QSizeF sizeHint(Qt::SizeHint, const QSizeF&) const; 47 virtual QVariant inputMethodQuery(Qt::InputMethodQuery) const; 48 49 void takeSnapshot(const QSize& size, const QRect& documentRect); 50 51 // FIXME: should not be public 52 virtual QRectF visibleRect() const; 53 54 void prepareScaleChange(); 55 void commitScaleChange(); 56 57 public: 58 Q_SIGNAL void titleChanged(const QString& title); 59 Q_SIGNAL void loadStarted(); 60 Q_SIGNAL void loadFinished(bool ok); 61 Q_SIGNAL void loadProgress(int progress); 62 Q_SIGNAL void initialLayoutCompleted(); 63 Q_SIGNAL void urlChanged(const QUrl&); 64 Q_SIGNAL void snapshotTaken(const QImage&); 65 66 public Q_SLOTS: 67 void back(); 68 void forward(); 69 void reload(); 70 void stop(); 71 void showContextMenu(QSharedPointer<QMenu>); 72 73 protected: 74 virtual void keyPressEvent(QKeyEvent*); 75 virtual void keyReleaseEvent(QKeyEvent*); 76 virtual void mouseMoveEvent(QGraphicsSceneMouseEvent*); 77 virtual void mousePressEvent(QGraphicsSceneMouseEvent*); 78 virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent*); 79 virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent*); 80 virtual void wheelEvent(QGraphicsSceneWheelEvent*); 81 virtual void touchEvent(QTouchEvent*); 82 83 virtual void hoverMoveEvent(QGraphicsSceneHoverEvent*); 84 85 Q_SLOT void updateCursor(const QCursor&); 86 Q_SLOT void focusNextPrevChildCallback(bool next); 87 88 virtual bool focusNextPrevChild(bool next); 89 virtual void focusInEvent(QFocusEvent*); 90 virtual void focusOutEvent(QFocusEvent*); 91 92 private: 93 Q_PRIVATE_SLOT(d, void onScaleChanged()) 94 Q_PRIVATE_SLOT(d, void onToolTipChanged(const QString&)) 95 96 QGraphicsWKViewPrivate* d; 97 friend class QGraphicsWKViewPrivate; 98 friend class TiledDrawingAreaProxy; 99 }; 100 101 #endif /* qgraphicswkview_h */ 102