2 Copyright (C) 2007 Trolltech ASA
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.
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.
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.
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.
23 #include "qwebsettings.h"
26 #include "qwebpage_p.h"
31 #include "PlatformString.h"
32 #include "IconDatabase.h"
35 #include <QSharedData>
37 class QWebSettingsPrivate
40 QWebSettingsPrivate(WebCore::Settings *wcSettings = 0)
42 minimumLogicalFontSize(5),
44 defaultFixedFontSize(14),
47 // Initialize our defaults
48 // changing any of those will likely break the LayoutTests
49 fontFamilies.insert(QWebSettings::StandardFont, QLatin1String("Arial"));
50 fontFamilies.insert(QWebSettings::StandardFont, QLatin1String("Arial"));
51 fontFamilies.insert(QWebSettings::FixedFont, QLatin1String("Courier"));
52 fontFamilies.insert(QWebSettings::SerifFont, QLatin1String("Times New Roman"));
53 fontFamilies.insert(QWebSettings::SansSerifFont, QLatin1String("Arial"));
55 attributes.insert(QWebSettings::AutoLoadImages, true);
56 attributes.insert(QWebSettings::JavascriptEnabled, true);
59 QHash<int, QString> fontFamilies;
61 int minimumLogicalFontSize;
63 int defaultFixedFontSize;
64 QHash<int, bool> attributes;
65 QString userStyleSheetLocation;
68 WebCore::Settings *settings;
71 typedef QHash<int, QPixmap> WebGraphicHash;
72 Q_GLOBAL_STATIC(WebGraphicHash, graphics)
74 void QWebSettingsPrivate::apply()
79 settings->setStandardFontFamily(fontFamilies.value(QWebSettings::StandardFont));
80 settings->setFixedFontFamily(fontFamilies.value(QWebSettings::FixedFont));
81 settings->setSerifFontFamily(fontFamilies.value(QWebSettings::SerifFont));
82 settings->setSansSerifFontFamily(fontFamilies.value(QWebSettings::SansSerifFont));
83 settings->setCursiveFontFamily(fontFamilies.value(QWebSettings::CursiveFont));
84 settings->setFantasyFontFamily(fontFamilies.value(QWebSettings::FantasyFont));
86 settings->setMinimumFontSize(minimumFontSize);
87 settings->setMinimumLogicalFontSize(minimumLogicalFontSize);
88 settings->setDefaultFontSize(defaultFontSize);
89 settings->setDefaultFixedFontSize(defaultFixedFontSize);
91 settings->setLoadsImagesAutomatically(attributes.value(QWebSettings::AutoLoadImages));
92 settings->setJavaScriptEnabled(attributes.value(QWebSettings::JavascriptEnabled));
93 settings->setJavaScriptCanOpenWindowsAutomatically(attributes.value(QWebSettings::JavascriptCanOpenWindows));
94 settings->setJavaEnabled(attributes.value(QWebSettings::JavaEnabled));
95 settings->setPluginsEnabled(attributes.value(QWebSettings::PluginsEnabled));
96 settings->setPrivateBrowsingEnabled(attributes.value(QWebSettings::PrivateBrowsingEnabled));
98 settings->setUserStyleSheetLocation(WebCore::KURL(userStyleSheetLocation));
101 QWebSettings *QWebSettings::defaultSettings()
103 static QWebSettings *global = 0;
105 global = new QWebSettings;
109 QWebSettings::QWebSettings()
110 : d(new QWebSettingsPrivate)
114 QWebSettings::QWebSettings(WebCore::Settings *settings)
115 : d(new QWebSettingsPrivate(settings))
117 // inherit the global default settings
118 *d = *defaultSettings()->d;
119 d->settings = settings;
123 QWebSettings::~QWebSettings()
127 void QWebSettings::setMinimumFontSize(int size)
129 d->minimumFontSize = size;
134 int QWebSettings::minimumFontSize() const
136 return d->minimumFontSize;
140 void QWebSettings::setMinimumLogicalFontSize(int size)
142 d->minimumLogicalFontSize = size;
147 int QWebSettings::minimumLogicalFontSize() const
149 return d->minimumLogicalFontSize;
153 void QWebSettings::setDefaultFontSize(int size)
155 d->defaultFontSize = size;
160 int QWebSettings::defaultFontSize() const
162 return d->defaultFontSize;
166 void QWebSettings::setDefaultFixedFontSize(int size)
168 d->defaultFixedFontSize = size;
173 int QWebSettings::defaultFixedFontSize() const
175 return d->defaultFixedFontSize;
178 void QWebSettings::setUserStyleSheetLocation(const QString &location)
180 d->userStyleSheetLocation = location;
184 QString QWebSettings::userStyleSheetLocation() const
186 return d->userStyleSheetLocation;
189 void QWebSettings::setIconDatabaseEnabled(bool enabled, const QString &location)
191 WebCore::iconDatabase()->setEnabled(enabled);
193 if (!location.isEmpty()) {
194 WebCore::iconDatabase()->open(location);
196 WebCore::iconDatabase()->open(WebCore::iconDatabase()->defaultDatabaseFilename());
199 WebCore::iconDatabase()->close();
203 bool QWebSettings::iconDatabaseEnabled()
205 return WebCore::iconDatabase()->isEnabled() && WebCore::iconDatabase()->isOpen();
208 void QWebSettings::setWebGraphic(WebGraphic type, const QPixmap &graphic)
210 WebGraphicHash *h = graphics();
211 if (graphic.isNull())
214 h->insert(type, graphic);
217 QPixmap QWebSettings::webGraphic(WebGraphic type)
219 return graphics()->value(type);
222 void QWebSettings::setFontFamily(FontType type, const QString &family)
224 d->fontFamilies.insert(type, family);
228 QString QWebSettings::fontFamily(FontType type) const
230 return d->fontFamilies.value(type);
233 void QWebSettings::setAttribute(WebAttribute attr, bool on)
235 d->attributes.insert(attr, on);
239 bool QWebSettings::testAttribute(WebAttribute attr) const
241 return d->attributes.value(attr);