e0bb4c370c6f8e5148e3b0f6872406724ab72496
[WebKit-https.git] / Source / WebKit2 / UIProcess / API / qt / qwkpage.h
1 #ifndef qwkpage_h
2 #define qwkpage_h
3
4 #include "qwebkitglobal.h"
5 #include <QAction>
6 #include <QObject>
7 #include <QPoint>
8 #include <QRect>
9 #include <QSize>
10 #include <QUrl>
11 #include <WebKit2/WKBase.h>
12 #include <WebKit2/WKPage.h>
13
14 class QCursor;
15 class QGraphicsItem;
16 class QWKContext;
17 class QWKGraphicsWidget;
18 class QWKPreferences;
19 class QWKPagePrivate;
20 class QtViewportAttributesPrivate;
21 class QWKHistory;
22
23 class QWEBKIT_EXPORT QWKPage : public QObject {
24     Q_OBJECT
25     Q_PROPERTY(QString title READ title)
26     Q_PROPERTY(QUrl url READ url WRITE setUrl)
27
28 public:
29     enum WebAction {
30         NoWebAction = - 1,
31
32         OpenLink,
33         OpenLinkInNewWindow,
34         CopyLinkToClipboard,
35         OpenImageInNewWindow,
36
37         Back,
38         Forward,
39         Stop,
40         Reload,
41
42         Cut,
43         Copy,
44         Paste,
45         SelectAll,
46
47         WebActionCount
48     };
49
50     class ViewportAttributes {
51     public:
52         ViewportAttributes();
53         ViewportAttributes(const QWKPage::ViewportAttributes& other);
54
55         ~ViewportAttributes();
56
57         QWKPage::ViewportAttributes& operator=(const QWKPage::ViewportAttributes& other);
58
59         inline qreal initialScaleFactor() const { return m_initialScaleFactor; };
60         inline qreal minimumScaleFactor() const { return m_minimumScaleFactor; };
61         inline qreal maximumScaleFactor() const { return m_maximumScaleFactor; };
62         inline qreal devicePixelRatio() const { return m_devicePixelRatio; };
63         inline bool isUserScalable() const { return m_isUserScalable; };
64         inline bool isValid() const { return m_isValid; };
65         inline QSize size() const { return m_size; };
66
67     private:
68         QSharedDataPointer<QtViewportAttributesPrivate> d;
69         qreal m_initialScaleFactor;
70         qreal m_minimumScaleFactor;
71         qreal m_maximumScaleFactor;
72         qreal m_devicePixelRatio;
73         bool m_isUserScalable;
74         bool m_isValid;
75         QSize m_size;
76
77         friend class QWKPage;
78     };
79
80     QWKPage(QWKContext*);
81     virtual ~QWKPage();
82
83     WKPageRef pageRef() const;
84
85     QWKPreferences* preferences() const;
86
87     void load(const QUrl& url);
88     void setUrl(const QUrl& url);
89     QUrl url() const;
90
91     QString title() const;
92
93     void setViewportSize(const QSize&);
94     ViewportAttributes viewportAttributesForSize(const QSize& availableSize) const;
95
96     void setActualVisibleContentsRect(const QRect& rect) const;
97
98     void setResizesToContentsUsingLayoutSize(const QSize& targetLayoutSize);
99
100     QAction* action(WebAction action) const;
101     void triggerAction(WebAction action, bool checked = false);
102
103     typedef QWKPage* (*CreateNewPageFn)(QWKPage*);
104     void setCreateNewPageFunction(CreateNewPageFn function);
105
106     void setCustomUserAgent(const QString&);
107     QString customUserAgent() const;
108
109     qreal textZoomFactor() const;
110     qreal pageZoomFactor() const;
111     void setTextZoomFactor(qreal zoomFactor);
112     void setPageZoomFactor(qreal zoomFactor);
113     void setPageAndTextZoomFactors(qreal pageZoomFactor, qreal textZoomFactor);
114
115     QWKHistory* history() const;
116     QWKContext* context() const;
117
118     void findZoomableAreaForPoint(const QPoint&);
119
120 public:
121     Q_SIGNAL void statusBarMessage(const QString&);
122     Q_SIGNAL void titleChanged(const QString&);
123     Q_SIGNAL void loadStarted();
124     Q_SIGNAL void loadFinished(bool ok);
125     Q_SIGNAL void loadProgress(int progress);
126     Q_SIGNAL void initialLayoutCompleted();
127     Q_SIGNAL void urlChanged(const QUrl&);
128     Q_SIGNAL void contentsSizeChanged(const QSize&);
129     Q_SIGNAL void scrollRequested(int dx, int dy);
130     Q_SIGNAL void cursorChanged(const QCursor&);
131     Q_SIGNAL void viewportChangeRequested();
132     Q_SIGNAL void windowCloseRequested();
133     Q_SIGNAL void zoomableAreaFound(const QRect&);
134     Q_SIGNAL void focusNextPrevChild(bool);
135     Q_SIGNAL void showContextMenu(QMenu*);
136
137 protected:
138     void timerEvent(QTimerEvent*);
139
140 private:
141 #ifndef QT_NO_ACTION
142     Q_PRIVATE_SLOT(d, void _q_webActionTriggered(bool checked));
143 #endif
144     QWKPagePrivate* d;
145
146     friend class QGraphicsWKView;
147     friend class QGraphicsWKViewPrivate;
148     friend class QWKPagePrivate;
149 };
150
151 #endif /* qwkpage_h */