blob: 0e21234e32548c06308c3828ce9ad5ed326feddf [file] [log] [blame]
/*
* Copyright (C) 2004, 2006 Apple Computer, Inc. All rights reserved.
* (C) 2006 Graham Dennis (graham.dennis@gmail.com)
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#import "config.h"
#import "WebCoreSettings.h"
#import "FoundationExtras.h"
#import "Settings.h"
#import "Page.h"
#import "WebCoreFrameBridge.h"
using namespace WebCore;
@implementation WebCoreSettings
- (void)dealloc
{
[standardFontFamily release];
[fixedFontFamily release];
[serifFontFamily release];
[sansSerifFontFamily release];
[cursiveFontFamily release];
[fantasyFontFamily release];
[defaultTextEncoding release];
[userStyleSheetLocation release];
delete settings;
[super dealloc];
}
- (void)finalize
{
delete settings;
[super finalize];
}
- (id)init
{
// A Frame may not have been created yet, so we initialize the AtomicString hash before we try and use it in Settings.
AtomicString::init();
settings = new Settings;
return [super init];
}
- (void)_updateAllViews
{
Page::setNeedsReapplyStylesForSettingsChange(settings);
}
- (void)setStandardFontFamily:(NSString *)s
{
if ([standardFontFamily isEqualToString:s])
return;
[standardFontFamily release];
standardFontFamily = [s copy];
settings->setStdFontName(s);
[self _updateAllViews];
}
- (NSString *)standardFontFamily
{
return standardFontFamily;
}
- (void)setFixedFontFamily:(NSString *)s
{
if ([fixedFontFamily isEqualToString:s])
return;
[fixedFontFamily release];
fixedFontFamily = [s copy];
settings->setFixedFontName(s);
[self _updateAllViews];
}
- (NSString *)fixedFontFamily
{
return fixedFontFamily;
}
- (void)setSerifFontFamily:(NSString *)s
{
if ([serifFontFamily isEqualToString:s])
return;
[serifFontFamily release];
serifFontFamily = [s copy];
settings->setSerifFontName(s);
[self _updateAllViews];
}
- (NSString *)serifFontFamily
{
return serifFontFamily;
}
- (void)setSansSerifFontFamily:(NSString *)s
{
if ([sansSerifFontFamily isEqualToString:s])
return;
[sansSerifFontFamily release];
sansSerifFontFamily = [s copy];
settings->setSansSerifFontName(s);
[self _updateAllViews];
}
- (NSString *)sansSerifFontFamily
{
return sansSerifFontFamily;
}
- (void)setCursiveFontFamily:(NSString *)s
{
if ([cursiveFontFamily isEqualToString:s])
return;
[cursiveFontFamily release];
cursiveFontFamily = [s copy];
settings->setCursiveFontName(s);
[self _updateAllViews];
}
- (NSString *)cursiveFontFamily
{
return cursiveFontFamily;
}
- (void)setFantasyFontFamily:(NSString *)s
{
if ([fantasyFontFamily isEqualToString:s])
return;
[fantasyFontFamily release];
fantasyFontFamily = [s copy];
settings->setFantasyFontName(s);
[self _updateAllViews];
}
- (NSString *)fantasyFontFamily
{
return fantasyFontFamily;
}
- (void)setMinimumFontSize:(float)size
{
if (minimumFontSize == size)
return;
minimumFontSize = size;
settings->setMinFontSize((int)rint(size));
[self _updateAllViews];
}
- (float)minimumFontSize
{
return minimumFontSize;
}
- (void)setMinimumLogicalFontSize:(float)size
{
if (minimumLogicalFontSize == size)
return;
minimumLogicalFontSize = size;
settings->setMinLogicalFontSize((int)rint(size));
[self _updateAllViews];
}
- (float)minimumLogicalFontSize
{
return minimumLogicalFontSize;
}
- (void)setDefaultFontSize:(float)size
{
if (defaultFontSize == size)
return;
defaultFontSize = size;
settings->setMediumFontSize((int)rint(size));
[self _updateAllViews];
}
- (float)defaultFontSize
{
return defaultFontSize;
}
- (void)setDefaultFixedFontSize:(float)size
{
if (defaultFixedFontSize == size)
return;
defaultFixedFontSize = size;
settings->setMediumFixedFontSize((int)rint(size));
[self _updateAllViews];
}
- (float)defaultFixedFontSize
{
return defaultFixedFontSize;
}
- (void)setJavaEnabled:(BOOL)enabled
{
JavaEnabled = enabled;
settings->setIsJavaEnabled(enabled);
}
- (BOOL)JavaEnabled
{
return JavaEnabled;
}
- (void)setPluginsEnabled:(BOOL)enabled
{
pluginsEnabled = enabled;
settings->setArePluginsEnabled(enabled);
}
- (BOOL)pluginsEnabled
{
return pluginsEnabled;
}
- (void)setJavaScriptEnabled:(BOOL)enabled
{
JavaScriptEnabled = enabled;
settings->setIsJavaScriptEnabled(enabled);
}
- (BOOL)JavaScriptEnabled
{
return JavaScriptEnabled;
}
- (void)setJavaScriptCanOpenWindowsAutomatically:(BOOL)enabled
{
JavaScriptCanOpenWindowsAutomatically = enabled;
settings->setJavaScriptCanOpenWindowsAutomatically(enabled);
}
- (BOOL)JavaScriptCanOpenWindowsAutomatically
{
return JavaScriptCanOpenWindowsAutomatically;
}
- (void)setPrivateBrowsingEnabled:(BOOL)enabled
{
privateBrowsingEnabled = enabled;
settings->setPrivateBrowsingEnabled(enabled);
}
- (BOOL)privateBrowsingEnabled
{
return privateBrowsingEnabled;
}
- (void)setWillLoadImagesAutomatically:(BOOL)load
{
willLoadImagesAutomatically = load;
settings->setAutoLoadImages(load);
}
- (BOOL)willLoadImagesAutomatically
{
return willLoadImagesAutomatically;
}
- (void)setUserStyleSheetLocation:(NSString *)s
{
if ([userStyleSheetLocation isEqualToString:s])
return;
[userStyleSheetLocation release];
userStyleSheetLocation = [s copy];
settings->setUserStyleSheetLocation(DeprecatedString::fromNSString(s));
[self _updateAllViews];
}
- (NSString *)userStyleSheetLocation
{
return userStyleSheetLocation;
}
- (void)setShouldPrintBackgrounds:(BOOL)enabled
{
shouldPrintBackgrounds = enabled;
settings->setShouldPrintBackgrounds(enabled);
}
- (BOOL)shouldPrintBackgrounds
{
return shouldPrintBackgrounds;
}
- (void)setTextAreasAreResizable:(BOOL)resizable
{
textAreasAreResizable = resizable;
settings->setTextAreasAreResizable(resizable);
[self _updateAllViews];
}
- (BOOL)textAreasAreResizable
{
return textAreasAreResizable;
}
- (void)setDefaultTextEncoding:(NSString *)s
{
if ([defaultTextEncoding isEqualToString:s])
return;
[defaultTextEncoding release];
defaultTextEncoding = [s copy];
settings->setEncoding(s);
}
- (NSString *)defaultTextEncoding
{
return defaultTextEncoding;
}
- (void)setEditableLinkBehavior:(int)behavior
{
Settings::EditableLinkBehavior b = (Settings::EditableLinkBehavior)behavior;
if (b != Settings::EditableLinkDefaultBehavior &&
b != Settings::EditableLinkAlwaysLive &&
b != Settings::EditableLinkOnlyLiveWithShiftKey &&
b != Settings::EditableLinkLiveWhenNotFocused) {
settings->setEditableLinkBehavior(Settings::EditableLinkDefaultBehavior);
} else
settings->setEditableLinkBehavior(b);
}
- (int)editableLinkBehavior
{
return (int)settings->editableLinkBehavior();
}
- (Settings *)settings
{
return settings;
}
@end