Renamed QWebPage::NumWebActions to QWebPage::WebActionCount (for consistency) and...
[WebKit-https.git] / WebKit / qt / Api / qwebpage_p.h
1 /*
2     Copyright (C) 2007 Trolltech ASA
3
4     This library is free software; you can redistribute it and/or
5     modify it under the terms of the GNU Library General Public
6     License as published by the Free Software Foundation; either
7     version 2 of the License, or (at your option) any later version.
8
9     This library is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12     Library General Public License for more details.
13
14     You should have received a copy of the GNU Library General Public License
15     along with this library; see the file COPYING.LIB.  If not, write to
16     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17     Boston, MA 02110-1301, USA.
18
19     This class provides all functionality needed for loading images, style sheets and html
20     pages from the web. It has a memory cache for these objects.
21 */
22 #ifndef QWEBPAGE_P_H
23 #define QWEBPAGE_P_H
24
25 #include <qnetworkproxy.h>
26 #include <qpointer.h>
27
28 #include "qwebpage.h"
29 #include "qwebframe.h"
30
31 namespace WebCore
32 {
33     class ChromeClientQt;
34     class ContextMenuClientQt;
35     class ContextMenuItem;
36     class EditorClientQt;
37     class Page;
38 }
39
40 class QUndoStack;
41 class QMenu;
42
43 class QWebPageContextPrivate
44 {
45 public:
46     QPoint pos;
47     QString text;
48     QUrl linkUrl;
49     QUrl imageUrl;
50     QPixmap image;
51     QPointer<QWebFrame> targetFrame;
52 };
53
54 class QWebPageContext
55 {
56 public:
57     QWebPageContext();
58     QWebPageContext(const QWebPageContext &other);
59     QWebPageContext &operator=(const QWebPageContext &other);
60     ~QWebPageContext();
61
62     QPoint pos() const;
63     QString text() const;
64     QUrl linkUrl() const;
65     QUrl imageUrl() const;
66     // ### we have a pixmap internally, should this be called pixmap() instead?
67     QPixmap image() const;
68
69     QWebFrame *targetFrame() const;
70
71 private:
72     QWebPageContext(const WebCore::HitTestResult &hitTest);
73     QWebPageContextPrivate *d;
74
75     friend class QWebPage;
76 };
77
78 class QWebPagePrivate
79 {
80 public:
81     QWebPagePrivate(QWebPage *);
82     ~QWebPagePrivate();
83     void createMainFrame();
84     QMenu *createContextMenu(QList<WebCore::ContextMenuItem> *items);
85
86     QWebFrame *frameAt(const QPoint &pos) const;
87
88     void _q_onLoadProgressChanged(int);
89     void _q_webActionTriggered(bool checked);
90     void updateAction(QWebPage::WebAction action);
91     void updateNavigationActions();
92     void updateEditorActions();
93
94     WebCore::ChromeClientQt *chromeClient;
95     WebCore::ContextMenuClientQt *contextMenuClient;
96     WebCore::EditorClientQt *editorClient;
97     WebCore::Page *page;
98
99     QPointer<QWebFrame> mainFrame;
100     QPointer<QWebFrame> frameUnderMouse;
101
102     inline QWebFrame *currentFrame(const QPoint &pos) const
103     { return frameUnderMouse ? static_cast<QWebFrame *>(frameUnderMouse) : frameAt(pos); }
104
105     QWebPage *q;
106     QUndoStack *undoStack;
107
108     QWebNetworkInterface *networkInterface;
109
110     bool modified;
111
112     bool insideOpenCall;
113     quint64 m_totalBytes;
114     quint64 m_bytesReceived;
115
116     QWebPage::NavigationRequestResponse navigationRequested(QWebFrame *frame, const QWebNetworkRequest &request, QWebPage::NavigationType type);
117 #ifndef QT_NO_NETWORKPROXY
118     QNetworkProxy networkProxy;
119 #endif
120
121     QWebPageHistory history;
122     QWebPageContext currentContext;
123     QWebSettings *settings;
124
125     QAction *actions[QWebPage::WebActionCount];
126 };
127
128 #endif