d89b163637813985aff6044a32d64000e65f70db
[WebKit-https.git] / WebKit / qt / Api / qwebsettings.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., 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
23 #include "qwebsettings.h"
24
25 #include "qwebpage.h"
26 #include "qwebpage_p.h"
27
28 #include "Page.h"
29 #include "Settings.h"
30 #include "KURL.h"
31 #include "PlatformString.h"
32 #include "IconDatabase.h"
33
34 #include <QHash>
35 #include <QSharedData>
36
37 class QWebSettingsPrivate : public QSharedData
38 {
39 public:
40     QWebSettingsPrivate()
41         : minimumFontSize(5),
42           minimumLogicalFontSize(5),
43           defaultFontSize(14),
44           defaultFixedFontSize(14)
45     {
46         //Initialize our defaults
47         // changing any of those will likely break the LayoutTests
48         fontFamilies[QWebSettings::StandardFont] = QLatin1String("Arial");
49         fontFamilies[QWebSettings::FixedFont] = QLatin1String("Courier");
50         fontFamilies[QWebSettings::SerifFont] = QLatin1String("Times New Roman");
51         fontFamilies[QWebSettings::SansSerifFont] = QLatin1String("Arial");
52
53         attributes[QWebSettings::AutoLoadImages]           = true;
54         attributes[QWebSettings::JavascriptEnabled]        = true;
55     }
56
57     QHash<int, QString> fontFamilies;
58     int minimumFontSize;
59     int minimumLogicalFontSize;
60     int defaultFontSize;
61     int defaultFixedFontSize;
62     QHash<int, bool> attributes;
63     QString userStyleSheetLocation;
64 };
65
66 typedef QHash<int, QPixmap> WebGraphicHash;
67 Q_GLOBAL_STATIC(WebGraphicHash, graphics)
68
69 static QWebSettings globalSettings;
70
71 QWebSettings::QWebSettings()
72     : d(new QWebSettingsPrivate)
73 {
74 }
75
76 QWebSettings::~QWebSettings()
77 {
78 }
79
80 void QWebSettings::setMinimumFontSize(int size)
81 {
82     d->minimumFontSize = size;
83 }
84
85
86 int QWebSettings::minimumFontSize() const
87 {
88     return d->minimumFontSize;
89 }
90
91
92 void QWebSettings::setMinimumLogicalFontSize(int size)
93 {
94     d->minimumLogicalFontSize = size;
95 }
96
97
98 int QWebSettings::minimumLogicalFontSize() const
99 {
100     return d->minimumLogicalFontSize;
101 }
102
103
104 void QWebSettings::setDefaultFontSize(int size)
105 {
106     d->defaultFontSize = size;
107 }
108
109
110 int QWebSettings::defaultFontSize() const
111 {
112     return d->defaultFontSize;
113 }
114
115
116 void QWebSettings::setDefaultFixedFontSize(int size)
117 {
118     d->defaultFixedFontSize = size;
119 }
120
121
122 int QWebSettings::defaultFixedFontSize() const
123 {
124     return d->defaultFixedFontSize;
125 }
126
127 void QWebSettings::setUserStyleSheetLocation(const QString &location)
128 {
129     d->userStyleSheetLocation = location;
130 }
131
132 QString QWebSettings::userStyleSheetLocation() const
133 {
134     return d->userStyleSheetLocation;
135 }
136
137 void QWebSettings::setIconDatabaseEnabled(bool enabled, const QString &location)
138 {
139     WebCore::iconDatabase()->setEnabled(enabled);
140     if (enabled) {
141       if (!location.isEmpty()) {
142           WebCore::iconDatabase()->open(location);
143       } else {
144           WebCore::iconDatabase()->open(WebCore::iconDatabase()->defaultDatabaseFilename());
145       }
146     } else {
147       WebCore::iconDatabase()->close();
148     }
149 }
150
151 bool QWebSettings::iconDatabaseEnabled()
152 {
153     return WebCore::iconDatabase()->isEnabled() && WebCore::iconDatabase()->isOpen();
154 }
155
156 void QWebSettings::setWebGraphic(WebGraphic type, const QPixmap &graphic)
157 {
158     WebGraphicHash *h = graphics();
159     if (graphic.isNull())
160         h->remove(type);
161     else
162         h->insert(type, graphic);
163 }
164
165 QPixmap QWebSettings::webGraphic(WebGraphic type)
166 {
167     return graphics()->value(type);
168 }
169
170 QWebSettings::QWebSettings(const QWebSettings &other)
171 {
172     d = other.d;
173 }
174
175 QWebSettings &QWebSettings::operator=(const QWebSettings &other)
176 {
177     d = other.d;
178     return *this;
179 }
180
181 void QWebSettings::setGlobal(const QWebSettings &settings)
182 {
183     globalSettings = settings;
184 }
185
186 QWebSettings QWebSettings::global()
187 {
188     return globalSettings;
189 }
190
191 void QWebSettings::setFontFamily(FontType type, const QString &family)
192 {
193     d->fontFamilies[type] = family;
194 }
195
196 QString QWebSettings::fontFamily(FontType type) const
197 {
198     return d->fontFamilies[type];
199 }
200
201 void QWebSettings::setAttribute(WebAttribute attr, bool on)
202 {
203     d->attributes[attr] = on;
204 }
205
206 bool QWebSettings::testAttribute(WebAttribute attr) const
207 {
208     if (!d->attributes.contains(attr))
209         return false;
210     return d->attributes[attr];
211 }
212