qwkpreferences.cpp   [plain text]


/*
    Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)

    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.
*/

#include "config.h"
#include "qwkpreferences.h"

#include "WKPageGroup.h"
#include "WKPreferences.h"
#include "WKStringQt.h"
#include "WKRetainPtr.h"
#include "qwkpreferences_p.h"


QWKPreferences* QWKPreferencesPrivate::createPreferences(WKPageGroupRef pageGroupRef)
{
    QWKPreferences* prefs = new QWKPreferences;
    prefs->d->ref = WKPageGroupGetPreferences(pageGroupRef);
    return prefs;
}

QWKPreferences* QWKPreferencesPrivate::createSharedPreferences()
{
    QWKPreferences* prefs = new QWKPreferences;
    prefs->d->ref = WKPreferencesCreate();
    return prefs;
}

QWKPreferences* QWKPreferences::sharedPreferences()
{
    static QWKPreferences* instance = 0;

    if (!instance)
        instance = QWKPreferencesPrivate::createSharedPreferences();
    return instance;
}

QWKPreferences::QWKPreferences()
    : d(new QWKPreferencesPrivate)
{
}

QWKPreferences::~QWKPreferences()
{
    delete d;
}

void QWKPreferences::setFontFamily(FontFamily which, const QString& family)
{
    switch (which) {
    case StandardFont:
        WKPreferencesSetStandardFontFamily(d->ref, WKStringCreateWithQString(family));
        break;
    case FixedFont:
        WKPreferencesSetFixedFontFamily(d->ref, WKStringCreateWithQString(family));
        break;
    case SerifFont:
        WKPreferencesSetSerifFontFamily(d->ref, WKStringCreateWithQString(family));
        break;
    case SansSerifFont:
        WKPreferencesSetSansSerifFontFamily(d->ref, WKStringCreateWithQString(family));
        break;
    case CursiveFont:
        WKPreferencesSetCursiveFontFamily(d->ref, WKStringCreateWithQString(family));
        break;
    case FantasyFont:
        WKPreferencesSetFantasyFontFamily(d->ref, WKStringCreateWithQString(family));
        break;
    default:
        break;
    }
}

QString QWKPreferences::fontFamily(FontFamily which) const
{
    switch (which) {
    case StandardFont: {
        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyStandardFontFamily(d->ref));
        return WKStringCopyQString(stringRef.get());
    }
    case FixedFont: {
        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyFixedFontFamily(d->ref));
        return WKStringCopyQString(stringRef.get());
    }
    case SerifFont: {
        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopySerifFontFamily(d->ref));
        return WKStringCopyQString(stringRef.get());
    }
    case SansSerifFont: {
        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopySansSerifFontFamily(d->ref));
        return WKStringCopyQString(stringRef.get());
    }
    case CursiveFont: {
        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyCursiveFontFamily(d->ref));
        return WKStringCopyQString(stringRef.get());
    }
    case FantasyFont: {
        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyFantasyFontFamily(d->ref));
        return WKStringCopyQString(stringRef.get());
    }
    default:
        return QString();
    }
}

bool QWKPreferences::testAttribute(WebAttribute attr) const
{
    switch (attr) {
    case AutoLoadImages:
        return WKPreferencesGetLoadsImagesAutomatically(d->ref);
    case JavascriptEnabled:
        return WKPreferencesGetJavaScriptEnabled(d->ref);
    case PluginsEnabled:
        return WKPreferencesGetPluginsEnabled(d->ref);
    case OfflineWebApplicationCacheEnabled:
        return WKPreferencesGetOfflineWebApplicationCacheEnabled(d->ref);
    case LocalStorageEnabled:
        return WKPreferencesGetLocalStorageEnabled(d->ref);
    case XSSAuditingEnabled:
        return WKPreferencesGetXSSAuditorEnabled(d->ref);
    case FrameFlatteningEnabled:
        return WKPreferencesGetFrameFlatteningEnabled(d->ref);
    case PrivateBrowsingEnabled:
        return WKPreferencesGetPrivateBrowsingEnabled(d->ref);
    case DeveloperExtrasEnabled:
        return WKPreferencesGetDeveloperExtrasEnabled(d->ref);
    case DnsPrefetchEnabled:
        return WKPreferencesGetDNSPrefetchingEnabled(d->ref);
    default:
        ASSERT_NOT_REACHED();
        return false;
    }
}

void QWKPreferences::setAttribute(WebAttribute attr, bool on)
{
    switch (attr) {
    case AutoLoadImages:
        WKPreferencesSetLoadsImagesAutomatically(d->ref, on);
        break;
    case JavascriptEnabled:
        WKPreferencesSetJavaScriptEnabled(d->ref, on);
        break;
    case PluginsEnabled:
        WKPreferencesSetPluginsEnabled(d->ref, on);
        break;
    case OfflineWebApplicationCacheEnabled:
        WKPreferencesSetOfflineWebApplicationCacheEnabled(d->ref, on);
        break;
    case LocalStorageEnabled:
        WKPreferencesSetLocalStorageEnabled(d->ref, on);
        break;
    case XSSAuditingEnabled:
        WKPreferencesSetXSSAuditorEnabled(d->ref, on);
        break;
    case FrameFlatteningEnabled:
        WKPreferencesSetFrameFlatteningEnabled(d->ref, on);
        break;
    case PrivateBrowsingEnabled:
        WKPreferencesSetPrivateBrowsingEnabled(d->ref, on);
        break;
    case DeveloperExtrasEnabled:
        WKPreferencesSetDeveloperExtrasEnabled(d->ref, on);
        break;
    case DnsPrefetchEnabled:
        WKPreferencesSetDNSPrefetchingEnabled(d->ref, on);
        break;
    default:
        ASSERT_NOT_REACHED();
    }
}

void QWKPreferences::setFontSize(FontSize type, int size)
{
    switch (type) {
    case MinimumFontSize:
         WKPreferencesSetMinimumFontSize(d->ref, size);
         break;
    case DefaultFontSize:
         WKPreferencesSetDefaultFontSize(d->ref, size);
         break;
    case DefaultFixedFontSize:
         WKPreferencesSetDefaultFixedFontSize(d->ref, size);
         break;
    default:
        ASSERT_NOT_REACHED();
    }
}

int QWKPreferences::fontSize(FontSize type) const
{
    switch (type) {
    case MinimumFontSize:
         return WKPreferencesGetMinimumFontSize(d->ref);
    case DefaultFontSize:
         return WKPreferencesGetDefaultFontSize(d->ref);
    case DefaultFixedFontSize:
         return WKPreferencesGetDefaultFixedFontSize(d->ref);
    default:
        ASSERT_NOT_REACHED();
        return false;
    }
}