165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#ifndef qgraphicswkview_h
265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#define qgraphicswkview_h
365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "qwebkitglobal.h"
565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <WebKit2/WKBase.h>
765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <QGraphicsWidget>
865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "qwkpage.h"
965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
1065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochQT_BEGIN_NAMESPACE
1165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass QCursor;
1265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochQT_END_NAMESPACE
1365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
1465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass QWKContext;
1565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass QGraphicsWKViewPrivate;
1665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
1765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochWKStringRef WKStringCreateWithQString(const QString& qString);
1865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochQString WKStringCopyQString(WKStringRef stringRef);
1965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
2065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass QWEBKIT_EXPORT QGraphicsWKView : public QGraphicsWidget {
2165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    Q_OBJECT
2265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    Q_PROPERTY(QString title READ title)
2365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    Q_PROPERTY(QUrl url READ url WRITE setUrl)
2465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
2565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochpublic:
2665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    enum BackingStoreType { Simple, Tiled };
2765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    QGraphicsWKView(QWKContext* context, BackingStoreType backingStoreType = Simple, QGraphicsItem* parent = 0);
2865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
2965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual ~QGraphicsWKView();
3065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
3165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    QWKPage* page() const;
3265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
3365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void setGeometry(const QRectF&);
3465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
3565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void load(const QUrl&);
3665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void setUrl(const QUrl&);
3765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    QUrl url() const;
3865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
3965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    QString title() const;
4065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
4165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void triggerPageAction(QWKPage::WebAction action, bool checked = false);
4265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
4365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*);
4465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual QVariant itemChange(GraphicsItemChange, const QVariant&);
4565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual bool event(QEvent*);
4665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual QSizeF sizeHint(Qt::SizeHint, const QSizeF&) const;
4765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual QVariant inputMethodQuery(Qt::InputMethodQuery) const;
4865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
4965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void takeSnapshot(const QSize& size, const QRect& documentRect);
5065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
5165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    // FIXME: should not be public
5265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual QRectF visibleRect() const;
5365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
5465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void prepareScaleChange();
5565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void commitScaleChange();
5665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
5765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochpublic:
5865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    Q_SIGNAL void titleChanged(const QString& title);
5965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    Q_SIGNAL void loadStarted();
6065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    Q_SIGNAL void loadFinished(bool ok);
6165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    Q_SIGNAL void loadProgress(int progress);
6265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    Q_SIGNAL void initialLayoutCompleted();
6365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    Q_SIGNAL void urlChanged(const QUrl&);
6465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    Q_SIGNAL void snapshotTaken(const QImage&);
6565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
6665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochpublic Q_SLOTS:
6765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void back();
6865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void forward();
6965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void reload();
7065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void stop();
7181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    void showContextMenu(QSharedPointer<QMenu>);
7265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
7365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochprotected:
7465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void keyPressEvent(QKeyEvent*);
7565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void keyReleaseEvent(QKeyEvent*);
7665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void mouseMoveEvent(QGraphicsSceneMouseEvent*);
7765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void mousePressEvent(QGraphicsSceneMouseEvent*);
7865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent*);
7965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent*);
8065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void wheelEvent(QGraphicsSceneWheelEvent*);
8165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void touchEvent(QTouchEvent*);
8265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
8365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void hoverMoveEvent(QGraphicsSceneHoverEvent*);
8465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
8565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    Q_SLOT void updateCursor(const QCursor&);
8665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    Q_SLOT void focusNextPrevChildCallback(bool next);
8765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
8865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual bool focusNextPrevChild(bool next);
8965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void focusInEvent(QFocusEvent*);
9065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void focusOutEvent(QFocusEvent*);
9165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
9265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochprivate:
932daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    Q_PRIVATE_SLOT(d, void onScaleChanged())
942daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    Q_PRIVATE_SLOT(d, void onToolTipChanged(const QString&))
9565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
9665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    QGraphicsWKViewPrivate* d;
9765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    friend class QGraphicsWKViewPrivate;
9865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    friend class TiledDrawingAreaProxy;
9965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch};
10065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
10165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif /* qgraphicswkview_h */
102