Fix compile
[WebKit-https.git] / WebKitQt / Api / qwebpage.cpp
1 /*
2     Copyright (C) 2007 Trolltech ASA
3     Copyright (C) 2007 Staikos Computing Services Inc.
4
5     This library is free software; you can redistribute it and/or
6     modify it under the terms of the GNU Library General Public
7     License as published by the Free Software Foundation; either
8     version 2 of the License, or (at your option) any later version.
9
10     This library is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13     Library General Public License for more details.
14
15     You should have received a copy of the GNU Library General Public License
16     along with this library; see the file COPYING.LIB.  If not, write to
17     the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18     Boston, MA 02111-1307, USA.
19
20     This class provides all functionality needed for loading images, style sheets and html
21     pages from the web. It has a memory cache for these objects.
22 */
23
24 #include "qwebpage.h"
25 #include "qwebframe.h"
26 #include "qwebpage_p.h"
27 #include "qwebframe_p.h"
28 #include "qwebpagehistory.h"
29 #include "qwebpagehistory_p.h"
30
31 #include "Frame.h"
32 #include "ChromeClientQt.h"
33 #include "ContextMenuClientQt.h"
34 #include "DragClientQt.h"
35 #include "EditorClientQt.h"
36 #include "Settings.h"
37 #include "Page.h"
38 #include "FrameLoader.h"
39 #include "KURL.h"
40
41 #include <QDebug>
42 #include <QUrl>
43 #include <QVBoxLayout>
44
45 using namespace WebCore;
46
47 QWebPagePrivate::QWebPagePrivate(QWebPage *qq)
48     : q(qq), modified(false)
49 {
50     chromeClient = new ChromeClientQt(q);
51     contextMenuClient = new ContextMenuClientQt();
52     editorClient = new EditorClientQt(q);
53     page = new Page(chromeClient, contextMenuClient, editorClient,
54                     new DragClientQt());
55
56     Settings *settings = page->settings();
57     settings->setLoadsImagesAutomatically(true);
58     settings->setMinimumFontSize(5);
59     settings->setMinimumLogicalFontSize(5);
60     settings->setShouldPrintBackgrounds(true);
61     settings->setJavaScriptEnabled(true);
62
63     settings->setDefaultFixedFontSize(14);
64     settings->setDefaultFontSize(14);
65     settings->setSerifFontFamily("Times New Roman");
66     settings->setSansSerifFontFamily("Arial");
67     settings->setFixedFontFamily("Courier");
68     settings->setStandardFontFamily("Arial");
69
70     mainFrame = 0;
71 }
72
73 QWebPagePrivate::~QWebPagePrivate()
74 {
75     delete page;
76 }
77
78 void QWebPagePrivate::createMainFrame()
79 {
80     if (!mainFrame) {
81         QWebFrameData frameData;
82         frameData.ownerElement = 0;
83         frameData.allowsScrolling = true;
84         frameData.marginWidth = 0;
85         frameData.marginHeight = 0;
86         mainFrame = q->createFrame(0, &frameData);
87         layout->addWidget(mainFrame);
88     }
89 }
90
91
92 QWebPage::QWebPage(QWidget *parent)
93     : QWidget(parent)
94     , d(new QWebPagePrivate(this))
95 {
96     d->layout = new QVBoxLayout(this);
97     d->layout->setMargin(0);
98     d->layout->setSpacing(0);
99 }
100
101 QWebPage::~QWebPage()
102 {
103     FrameLoader *loader = d->mainFrame->d->frame->loader();
104     if (loader)
105         loader->detachFromParent();
106     delete d;
107 }
108
109 QWebFrame *QWebPage::createFrame(QWebFrame *parentFrame, QWebFrameData *frameData)
110 {
111     if (parentFrame)
112         return new QWebFrame(parentFrame, frameData);
113     QWebFrame *f = new QWebFrame(this, frameData);
114     connect(f, SIGNAL(titleChanged(const QString&)), this, SIGNAL(titleChanged(const QString&)));
115     return f;
116 }
117
118 void QWebPage::open(const QUrl &url)
119 {
120     mainFrame()->d->frame->loader()->load(KURL(url.toString()));
121 }
122
123 QUrl QWebPage::url() const
124 {
125     return QUrl((QString)mainFrame()->d->frame->loader()->url().url());
126 }
127
128 QString QWebPage::title() const
129 {
130     return mainFrame()->title();
131 }
132
133 QWebFrame *QWebPage::mainFrame() const
134 {
135     d->createMainFrame();
136     return d->mainFrame;
137 }
138
139 QSize QWebPage::sizeHint() const
140 {
141     return QSize(800, 600);
142 }
143
144 void QWebPage::stop()
145 {
146     FrameLoader *f = mainFrame()->d->frame->loader();
147     f->stopAllLoaders();
148 }
149
150 QWebPageHistory QWebPage::history() const
151 {
152     WebCore::BackForwardList *lst = d->page->backForwardList();
153     QWebPageHistoryPrivate *priv = new QWebPageHistoryPrivate(lst);
154     return QWebPageHistory(priv);
155 }
156
157 void QWebPage::goBack()
158 {
159     d->page->goBack();
160 }
161
162 void QWebPage::goForward()
163 {
164     d->page->goForward();
165 }
166
167 void QWebPage::goToHistoryItem(const QWebHistoryItem &item)
168 {
169     d->page->goToItem(item.d->item, FrameLoadTypeIndexedBackForward);
170 }
171
172 void QWebPage::javaScriptConsoleMessage(const QString& message, unsigned int lineNumber, const QString& sourceID)
173 {
174 }
175
176 void QWebPage::statusTextChanged(const QString& text)
177 {
178 }
179
180 void QWebPage::runJavaScriptAlert(QWebFrame *frame, const QString& msg)
181 {
182 }
183
184 QWebPage *QWebPage::createWindow()
185 {
186     return 0;
187 }
188
189 void QWebPage::setWindowGeometry(const QRect& geom)
190 {
191     Q_UNUSED(geom)
192 }
193
194 /*!
195   Returns true if the page contains unsubmitted form data.
196 */
197 bool QWebPage::isModified() const
198 {
199     return d->modified;
200 }
201
202 #include "qwebpage.moc"