Reviewed by Maciej
[WebKit-https.git] / WebKitQt / Api / qwebpage.cpp
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., 59 Temple Place - Suite 330,
17     Boston, MA 02111-1307, 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
23 #include "qwebpage.h"
24 #include "qwebframe.h"
25 #include "qwebpage_p.h"
26 #include "qwebframe_p.h"
27
28 #include <qurl.h>
29
30 #include "FrameQt.h"
31 #include "ChromeClientQt.h"
32 #include "ContextMenuClientQt.h"
33 #include "EditorClientQt.h"
34 #include "Settings.h"
35 #include "Page.h"
36 #include "FrameLoader.h"
37 #include "KURL.h"
38 #include "qboxlayout.h"
39
40 using namespace WebCore;
41
42 QWebPagePrivate::QWebPagePrivate(QWebPage *qq)
43     : q(qq)
44 {
45     chromeClient = new ChromeClientQt(q);
46     contextMenuClient = new ContextMenuClientQt();
47     editorClient = new EditorClientQt();
48     page = new Page(chromeClient, contextMenuClient, editorClient);
49
50     Settings *settings = page->settings();
51     settings->setLoadsImagesAutomatically(true);
52     settings->setMinimumFontSize(5);
53     settings->setMinimumLogicalFontSize(5);
54     settings->setShouldPrintBackgrounds(true);
55     settings->setJavaScriptEnabled(true);
56
57     settings->setDefaultFixedFontSize(14);
58     settings->setDefaultFontSize(14);
59     settings->setSerifFontFamily("Times New Roman");
60     settings->setSansSerifFontFamily("Arial");
61     settings->setFixedFontFamily("Courier");
62     settings->setStandardFontFamily("Arial");
63
64     mainFrame = 0;
65 }
66
67 QWebPagePrivate::~QWebPagePrivate()
68 {
69     delete page;
70 }
71
72 void QWebPagePrivate::createMainFrame()
73 {
74     if (!mainFrame) {
75         QWebFrameData frameData;
76         frameData.ownerElement = 0;
77         frameData.allowsScrolling = true;
78         frameData.marginWidth = 5;
79         frameData.marginHeight = 5;
80         mainFrame = q->createFrame(0, &frameData);
81         layout->addWidget(mainFrame);
82     }
83 }
84
85
86 QWebPage::QWebPage(QWidget *parent)
87     : QWidget(parent)
88     , d(new QWebPagePrivate(this))
89 {
90     d->layout = new QVBoxLayout(this);
91     d->layout->setMargin(0);
92     d->layout->setSpacing(0);
93 }
94
95 QWebPage::~QWebPage()
96 {
97     delete d;
98 }
99
100 QWebFrame *QWebPage::createFrame(QWebFrame *parentFrame, QWebFrameData *frameData)
101 {
102     if (parentFrame)
103         return new QWebFrame(parentFrame, frameData);
104     return new QWebFrame(this, frameData);
105 }
106
107 void QWebPage::open(const QUrl &url)
108 {
109     d->createMainFrame();
110
111     d->mainFrame->d->frame->loader()->load(KURL(url.toString()));
112 }
113
114 QWebFrame *QWebPage::mainFrame() const
115 {
116     d->createMainFrame();
117     return d->mainFrame;
118 }
119
120
121 QSize QWebPage::sizeHint() const
122 {
123     return QSize(800, 600);
124 }
125
126 #include "qwebpage.moc"
127