2010-10-05 Sheriff Bot <webkit.review.bot@gmail.com>
[WebKit-https.git] / 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 #include <WebKit2/WKPageNamespace.h>
14
15 class QCursor;
16 class QWKGraphicsWidget;
17 class QWKPreferences;
18 class QWKPagePrivate;
19 class QtViewportConfigurationPrivate;
20
21 class QWEBKIT_EXPORT QWKPage : public QObject {
22     Q_OBJECT
23     Q_PROPERTY(QString title READ title)
24     Q_PROPERTY(QUrl url READ url WRITE setUrl)
25
26 public:
27     enum WebAction {
28         NoWebAction = - 1,
29
30         Back,
31         Forward,
32         Stop,
33         Reload,
34
35         WebActionCount
36     };
37
38     class ViewportConfiguration {
39     public:
40         ViewportConfiguration();
41         ViewportConfiguration(const QWKPage::ViewportConfiguration& other);
42
43         ~ViewportConfiguration();
44
45         QWKPage::ViewportConfiguration& operator=(const QWKPage::ViewportConfiguration& other);
46
47         inline qreal initialScaleFactor() const { return m_initialScaleFactor; };
48         inline qreal minimumScaleFactor() const { return m_minimumScaleFactor; };
49         inline qreal maximumScaleFactor() const { return m_maximumScaleFactor; };
50         inline qreal devicePixelRatio() const { return m_devicePixelRatio; };
51         inline bool isUserScalable() const { return m_isUserScalable; };
52         inline bool isValid() const { return m_isValid; };
53         inline QSize size() const { return m_size; };
54
55     private:
56         QSharedDataPointer<QtViewportConfigurationPrivate> d;
57         qreal m_initialScaleFactor;
58         qreal m_minimumScaleFactor;
59         qreal m_maximumScaleFactor;
60         qreal m_devicePixelRatio;
61         bool m_isUserScalable;
62         bool m_isValid;
63         QSize m_size;
64
65         friend class QWKPage;
66     };
67
68     QWKPage(WKPageNamespaceRef);
69     virtual ~QWKPage();
70
71     WKPageRef pageRef() const;
72
73     QWKPreferences* preferences() const;
74
75     void load(const QUrl& url);
76     void setUrl(const QUrl& url);
77     QUrl url() const;
78
79     QString title() const;
80
81     void setViewportSize(const QSize&);
82     ViewportConfiguration viewportConfigurationForSize(QSize availableSize) const;
83
84     QAction* action(WebAction action) const;
85     void triggerAction(WebAction action, bool checked = false);
86
87     typedef QWKPage* (*CreateNewPageFn)(QWKPage*);
88     void setCreateNewPageFunction(CreateNewPageFn function);
89
90 public:
91     Q_SIGNAL void statusBarMessage(const QString&);
92     Q_SIGNAL void titleChanged(const QString&);
93     Q_SIGNAL void loadStarted();
94     Q_SIGNAL void loadFinished(bool ok);
95     Q_SIGNAL void loadProgress(int progress);
96     Q_SIGNAL void initialLayoutCompleted();
97     Q_SIGNAL void urlChanged(const QUrl&);
98     Q_SIGNAL void contentsSizeChanged(const QSize&);
99     Q_SIGNAL void cursorChanged(const QCursor&);
100
101 protected:
102     void timerEvent(QTimerEvent*);
103
104 private:
105 #ifndef QT_NO_ACTION
106     Q_PRIVATE_SLOT(d, void _q_webActionTriggered(bool checked));
107 #endif
108     QWKPagePrivate* d;
109
110     friend class QGraphicsWKView;
111     friend class QGraphicsWKViewPrivate;
112     friend class QWKPagePrivate;
113 };
114
115 #endif /* qwkpage_h */