#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 */