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