webengine/osswebengine/WebKit/qt/Api/qwebsettings.cpp
changeset 0 dd21522fd290
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/WebKit/qt/Api/qwebsettings.cpp	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,226 @@
+/*
+    Copyright (C) 2007 Trolltech ASA
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public License
+    along with this library; see the file COPYING.LIB.  If not, write to
+    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02110-1301, USA.
+
+    This class provides all functionality needed for loading images, style sheets and html
+    pages from the web. It has a memory cache for these objects.
+*/
+
+#include "qwebsettings.h"
+
+#include "qwebpage.h"
+#include "qwebpage_p.h"
+
+#include "Page.h"
+#include "Settings.h"
+#include "KURL.h"
+#include "PlatformString.h"
+#include "IconDatabase.h"
+
+#include <QHash>
+#include <QSharedData>
+
+class QWebSettingsPrivate : public QSharedData
+{
+public:
+    QWebSettingsPrivate()
+        : minimumFontSize(5),
+          minimumLogicalFontSize(5),
+          defaultFontSize(14),
+          defaultFixedFontSize(14)
+    {
+        //Initialize our defaults
+        // changing any of those will likely break the LayoutTests
+        fontFamilies[QWebSettings::StandardFont] = QLatin1String("Arial");
+        fontFamilies[QWebSettings::FixedFont] = QLatin1String("Courier");
+        fontFamilies[QWebSettings::SerifFont] = QLatin1String("Times New Roman");
+        fontFamilies[QWebSettings::SansSerifFont] = QLatin1String("Arial");
+
+        attributes[QWebSettings::AutoLoadImages]           = true;
+        attributes[QWebSettings::JavascriptEnabled]        = true;
+    }
+
+    QHash<int, QString> fontFamilies;
+    int minimumFontSize;
+    int minimumLogicalFontSize;
+    int defaultFontSize;
+    int defaultFixedFontSize;
+    QHash<int, bool> attributes;
+    QHash<int, QPixmap> graphics;
+    QString userStyleSheetLocation;
+};
+
+static QWebSettings globalSettings;
+
+QWebSettings::QWebSettings()
+    : d(new QWebSettingsPrivate)
+{
+}
+
+QWebSettings::~QWebSettings()
+{
+}
+
+void QWebSettings::setMinimumFontSize(int size)
+{
+    d->minimumFontSize = size;
+}
+
+
+int QWebSettings::minimumFontSize() const
+{
+    return d->minimumFontSize;
+}
+
+
+void QWebSettings::setMinimumLogicalFontSize(int size)
+{
+    d->minimumLogicalFontSize = size;
+}
+
+
+int QWebSettings::minimumLogicalFontSize() const
+{
+    return d->minimumLogicalFontSize;
+}
+
+
+void QWebSettings::setDefaultFontSize(int size)
+{
+    d->defaultFontSize = size;
+}
+
+
+int QWebSettings::defaultFontSize() const
+{
+    return d->defaultFontSize;
+}
+
+
+void QWebSettings::setDefaultFixedFontSize(int size)
+{
+    d->defaultFixedFontSize = size;
+}
+
+
+int QWebSettings::defaultFixedFontSize() const
+{
+    return d->defaultFixedFontSize;
+}
+
+void QWebSettings::setUserStyleSheetLocation(const QString &location)
+{
+    d->userStyleSheetLocation = location;
+}
+
+QString QWebSettings::userStyleSheetLocation() const
+{
+    return d->userStyleSheetLocation;
+}
+
+void QWebSettings::setIconDatabaseEnabled(bool enabled, const QString &location)
+{
+    WebCore::iconDatabase()->setEnabled(enabled);
+    if (enabled) {
+      if (!location.isEmpty()) {
+          WebCore::iconDatabase()->open(location);
+      } else {
+          WebCore::iconDatabase()->open(WebCore::iconDatabase()->defaultDatabaseFilename());
+      }
+    } else {
+      WebCore::iconDatabase()->close();
+    }
+}
+
+bool QWebSettings::iconDatabaseEnabled() const
+{
+    return WebCore::iconDatabase()->isEnabled() && WebCore::iconDatabase()->isOpen();
+}
+
+void QWebSettings::setWebGraphic(WebGraphic type, const QPixmap &graphic)
+{
+    d->graphics[type] = graphic;
+}
+
+QPixmap QWebSettings::webGraphic(WebGraphic type) const
+{
+    if (d->graphics.contains(type))
+      return d->graphics[type];
+    else
+      return QPixmap();
+}
+
+QWebSettings::QWebSettings(const QWebSettings &other)
+{
+    d = other.d;
+}
+
+QWebSettings &QWebSettings::operator=(const QWebSettings &other)
+{
+    d = other.d;
+    return *this;
+}
+
+void QWebSettings::setGlobal(const QWebSettings &settings)
+{
+    globalSettings = settings;
+}
+
+QWebSettings QWebSettings::global()
+{
+    return globalSettings;
+}
+
+void QWebSettings::setFontFamily(FontType type, const QString &family)
+{
+    d->fontFamilies[type] = family;
+}
+
+QString QWebSettings::fontFamily(FontType type) const
+{
+    return d->fontFamilies[type];
+}
+
+void QWebSettings::setAttribute(WebAttribute attr, bool on)
+{
+    d->attributes[attr] = on;
+}
+
+bool QWebSettings::testAttribute(WebAttribute attr) const
+{
+    if (!d->attributes.contains(attr))
+        return false;
+    return d->attributes[attr];
+}
+
+QPixmap loadResourcePixmap(const char *name)
+{
+    const QWebSettings settings = QWebSettings::global();
+    const QString resource = name;
+
+    QPixmap pixmap;
+    if (resource == "missingImage")
+        pixmap = settings.webGraphic(QWebSettings::MissingImageGraphic);
+    else if (resource == "nullPlugin")
+        pixmap = settings.webGraphic(QWebSettings::MissingPluginGraphic);
+    else if (resource == "urlIcon")
+        pixmap = settings.webGraphic(QWebSettings::DefaultFaviconGraphic);
+    else if (resource == "textAreaResizeCorner")
+        pixmap = settings.webGraphic(QWebSettings::TextAreaResizeCornerGraphic);
+
+    return pixmap;
+}