WebKit2/UIProcess/API/qt/qgraphicswkview.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 04 Oct 2010 01:32:07 +0300
changeset 2 303757a437d3
parent 0 4f2f89ce4247
permissions -rw-r--r--
Revision: 201037 Kit: 201039

#ifndef qgraphicswkview_h
#define qgraphicswkview_h

#include "qwebkitglobal.h"

#include <WebKit2/WKBase.h>
#include <QGraphicsWidget>
#include "qwkpage.h"

class QGraphicsWKViewPrivate;

WKStringRef WKStringCreateWithQString(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(WKPageNamespaceRef namespaceRef, 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;

    // FIXME: should not be public
    virtual QRectF visibleRect() const;

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&);

public Q_SLOTS:
    void back();
    void forward();
    void reload();
    void stop();

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 hoverMoveEvent(QGraphicsSceneHoverEvent*);

private:
    QGraphicsWKViewPrivate* d;
    friend class QGraphicsWKViewPrivate;
};

#endif /* qgraphicswkview_h */