summaryrefslogtreecommitdiffstats
path: root/Source/WebKit2/UIProcess/API/qt/qwkpage.h
blob: cb7933aee508176728f8261f091d194c688bfbc3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#ifndef qwkpage_h
#define qwkpage_h

#include "qwebkitglobal.h"
#include <QAction>
#include <QObject>
#include <QPoint>
#include <QRect>
#include <QSize>
#include <QUrl>
#include <WebKit2/WKBase.h>
#include <WebKit2/WKPage.h>

class QCursor;
class QGraphicsItem;
class QWKContext;
class QWKGraphicsWidget;
class QWKPreferences;
class QWKPagePrivate;
class QtViewportAttributesPrivate;
class QWKHistory;

class QWEBKIT_EXPORT QWKPage : public QObject {
    Q_OBJECT
    Q_PROPERTY(QString title READ title)
    Q_PROPERTY(QUrl url READ url WRITE setUrl)

public:
    enum WebAction {
        NoWebAction = - 1,

        OpenLink,
        OpenLinkInNewWindow,
        CopyLinkToClipboard,
        OpenImageInNewWindow,

        Back,
        Forward,
        Stop,
        Reload,

        Cut,
        Copy,
        Paste,
        SelectAll,

        WebActionCount
    };

    class ViewportAttributes {
    public:
        ViewportAttributes();
        ViewportAttributes(const QWKPage::ViewportAttributes& other);

        ~ViewportAttributes();

        QWKPage::ViewportAttributes& operator=(const QWKPage::ViewportAttributes& other);

        inline qreal initialScaleFactor() const { return m_initialScaleFactor; };
        inline qreal minimumScaleFactor() const { return m_minimumScaleFactor; };
        inline qreal maximumScaleFactor() const { return m_maximumScaleFactor; };
        inline qreal devicePixelRatio() const { return m_devicePixelRatio; };
        inline bool isUserScalable() const { return m_isUserScalable; };
        inline bool isValid() const { return m_isValid; };
        inline QSize size() const { return m_size; };

    private:
        QSharedDataPointer<QtViewportAttributesPrivate> d;
        qreal m_initialScaleFactor;
        qreal m_minimumScaleFactor;
        qreal m_maximumScaleFactor;
        qreal m_devicePixelRatio;
        bool m_isUserScalable;
        bool m_isValid;
        QSize m_size;

        friend class QWKPage;
    };

    QWKPage(QWKContext*);
    virtual ~QWKPage();

    WKPageRef pageRef() const;

    QWKPreferences* preferences() const;

    void load(const QUrl& url);
    void setUrl(const QUrl& url);
    QUrl url() const;

    QString title() const;

    void setViewportSize(const QSize&);
    ViewportAttributes viewportAttributesForSize(const QSize& availableSize) const;

    void setActualVisibleContentsRect(const QRect& rect) const;

    void setResizesToContentsUsingLayoutSize(const QSize& targetLayoutSize);

    QAction* action(WebAction action) const;
    void triggerAction(WebAction action, bool checked = false);

    typedef QWKPage* (*CreateNewPageFn)(QWKPage*);
    void setCreateNewPageFunction(CreateNewPageFn function);

    void setCustomUserAgent(const QString&);
    QString customUserAgent() const;

    qreal textZoomFactor() const;
    qreal pageZoomFactor() const;
    void setTextZoomFactor(qreal zoomFactor);
    void setPageZoomFactor(qreal zoomFactor);
    void setPageAndTextZoomFactors(qreal pageZoomFactor, qreal textZoomFactor);

    QWKHistory* history() const;
    QWKContext* context() const;

    void findZoomableAreaForPoint(const QPoint&);

    bool isConnectedToEngine() const;

public:
    Q_SIGNAL void statusBarMessage(const QString&);
    Q_SIGNAL void titleChanged(const QString&);
    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 contentsSizeChanged(const QSize&);
    Q_SIGNAL void scrollRequested(int dx, int dy);
    Q_SIGNAL void cursorChanged(const QCursor&);
    Q_SIGNAL void viewportChangeRequested();
    Q_SIGNAL void windowCloseRequested();
    Q_SIGNAL void zoomableAreaFound(const QRect&);
    Q_SIGNAL void focusNextPrevChild(bool);
    Q_SIGNAL void showContextMenu(QMenu*);
    Q_SIGNAL void engineConnectionChanged(bool connected);

protected:
    void timerEvent(QTimerEvent*);

private:
#ifndef QT_NO_ACTION
    Q_PRIVATE_SLOT(d, void _q_webActionTriggered(bool checked));
#endif
    QWKPagePrivate* d;

    friend class QGraphicsWKView;
    friend class QGraphicsWKViewPrivate;
    friend class QWKPagePrivate;
};

#endif /* qwkpage_h */