361 lines
12 KiB
Objective-C
361 lines
12 KiB
Objective-C
#import <AppKit/AppKit.h>
|
|
#import "PreferencesWindowController.h"
|
|
#import "Preferences.h"
|
|
#import "SearchProvider.h"
|
|
#import "AppDelegate.h"
|
|
|
|
#define DL_DOWNLOADS_PATH [@"~/Downloads" stringByExpandingTildeInPath]
|
|
#define DL_HOME_PATH [@"~/" stringByExpandingTildeInPath]
|
|
#define DL_DESKTOP_PATH [@"~/Desktop" stringByExpandingTildeInPath]
|
|
|
|
@interface PreferencesWindowController (Private)
|
|
-(void)configureMainTab;
|
|
-(void)reconfigureDownloadLocationButton;
|
|
-(void)configureAppearanceTab;
|
|
-(void)configureContentTab;
|
|
@end
|
|
@interface DownloadLocation: NSObject {
|
|
NSString *name;
|
|
NSString *path;
|
|
}
|
|
@end
|
|
@implementation DownloadLocation
|
|
-(id)initWithName: (NSString*)aName path: (NSString*)aPath {
|
|
if ((self = [super init])) {
|
|
name = [aName retain];
|
|
path = [aPath retain];
|
|
}
|
|
return self;
|
|
}
|
|
+(DownloadLocation*)downloadLocationWithName: (NSString*)aName path: (NSString*)aPath {
|
|
return [[[DownloadLocation alloc] initWithName: aName path: aPath] autorelease];
|
|
}
|
|
-(void)dealloc {
|
|
[name release];
|
|
[path release];
|
|
[super dealloc];
|
|
}
|
|
-(NSString*)name {
|
|
return name;
|
|
}
|
|
-(NSString*)path {
|
|
return path;
|
|
}
|
|
@end
|
|
|
|
@implementation PreferencesWindowController
|
|
|
|
-(id)init {
|
|
if ((self = [super initWithWindowNibName: @"Preferences"])) {
|
|
//...
|
|
}
|
|
return self;
|
|
}
|
|
|
|
-(void)dealloc {
|
|
[downloadLocations release];
|
|
[super dealloc];
|
|
}
|
|
|
|
-(void)awakeFromNib {
|
|
[self configureMainTab];
|
|
[self configureAppearanceTab];
|
|
[self configureContentTab];
|
|
}
|
|
|
|
// MARK: - MAIN TAB
|
|
|
|
-(void)configureMainTab {
|
|
NSLog(@"configure main tab");
|
|
[startupPageField setStringValue: [[Preferences defaultPreferences] startupUrl]];
|
|
[searchFromUrlButton setState: [[Preferences defaultPreferences] searchFromUrlBar] ?
|
|
NSOnState : NSOffState];
|
|
|
|
[searchProviderButton removeAllItems];
|
|
NSArray *searchProviders = [SearchProvider allProviders];
|
|
SearchProvider *currentProvider = [[Preferences defaultPreferences] searchProvider];
|
|
NSInteger selectedIndex = 0;
|
|
for (NSUInteger i = 0; i < [searchProviders count]; i++) {
|
|
SearchProvider *provider = [searchProviders objectAtIndex: i];
|
|
[searchProviderButton addItemWithTitle: [provider name]];
|
|
if ([[provider name] isEqual: [currentProvider name]]) {
|
|
selectedIndex = i;
|
|
}
|
|
}
|
|
[searchProviderButton selectItemAtIndex: selectedIndex];
|
|
|
|
[downloadRemoveOnCompleteButton setState: [[Preferences defaultPreferences]
|
|
removeDownloadsOnComplete] ? NSOnState : NSOffState];
|
|
[downloadConfirmOverwriteButton setState: [[Preferences defaultPreferences]
|
|
confirmBeforeOverwriting] ? NSOnState : NSOffState];
|
|
|
|
downloadLocations = [NSMutableArray arrayWithObjects:
|
|
[DownloadLocation downloadLocationWithName: @"Downloads" path:
|
|
DL_DOWNLOADS_PATH],
|
|
[DownloadLocation downloadLocationWithName: @"Desktop" path:
|
|
DL_DESKTOP_PATH],
|
|
[DownloadLocation downloadLocationWithName: @"Home" path: DL_HOME_PATH],
|
|
[DownloadLocation downloadLocationWithName: @"Other..." path: nil],
|
|
nil
|
|
];
|
|
[downloadLocations retain];
|
|
[self reconfigureDownloadLocationButton];
|
|
}
|
|
|
|
-(void)reconfigureDownloadLocationButton {
|
|
[downloadLocationButton removeAllItems];
|
|
NSString *path = [[Preferences defaultPreferences] downloadLocationPath];
|
|
NSInteger selectedIndex = -1;
|
|
for (NSUInteger i = 0; i < [downloadLocations count]; i++) {
|
|
DownloadLocation *loc = [downloadLocations objectAtIndex: i];
|
|
[downloadLocationButton addItemWithTitle: [loc name]];
|
|
if ([path isEqual: [loc path]]) {
|
|
selectedIndex = i;
|
|
}
|
|
}
|
|
if (selectedIndex == -1) {
|
|
DownloadLocation *loc = [DownloadLocation downloadLocationWithName:
|
|
[path lastPathComponent] path: path];
|
|
[downloadLocations addObject: loc];
|
|
[downloadLocationButton addItemWithTitle: [loc name]];
|
|
selectedIndex = [downloadLocations count] - 1;
|
|
}
|
|
[downloadLocationButton selectItemAtIndex: selectedIndex];
|
|
}
|
|
|
|
-(void)didEnterStartupPage: (id)sender {
|
|
NSLog(@"Did enter startup page");
|
|
[[Preferences defaultPreferences] setStartupUrl: [sender stringValue]];
|
|
}
|
|
|
|
|
|
-(void)didPickDownloadLocation: (id)sender {
|
|
NSLog(@"Did pick download location");
|
|
NSInteger idx = [sender indexOfItem: [sender selectedItem]];
|
|
DownloadLocation *loc = [downloadLocations objectAtIndex: idx];
|
|
if ([loc path] == nil) {
|
|
// "Other"... Show file picker.
|
|
NSOpenPanel *panel = [NSOpenPanel openPanel];
|
|
[panel setCanChooseFiles: NO];
|
|
[panel setCanChooseDirectories: YES];
|
|
if ([panel runModal] == NSOKButton) {
|
|
NSString *path = [[panel filenames] firstObject];
|
|
|
|
loc = [DownloadLocation downloadLocationWithName: [path
|
|
lastPathComponent] path: path];
|
|
[downloadLocations addObject: loc];
|
|
} else {
|
|
loc = [downloadLocations objectAtIndex: 0];
|
|
}
|
|
[[Preferences defaultPreferences] setDownloadLocationPath: [loc path]];
|
|
[self reconfigureDownloadLocationButton];
|
|
} else {
|
|
[[Preferences defaultPreferences] setDownloadLocationPath: [loc path]];
|
|
}
|
|
}
|
|
|
|
|
|
-(void)didPickSearchProvider: (id)sender {
|
|
NSLog(@"Did pick search provider");
|
|
NSInteger idx = [sender indexOfItem: [sender selectedItem]];
|
|
SearchProvider *prov = [[SearchProvider allProviders] objectAtIndex: idx];
|
|
[[Preferences defaultPreferences] setSearchProvider: prov];
|
|
}
|
|
|
|
|
|
-(void)didPressDownloadConfirmOverwrite: (id)sender {
|
|
NSLog(@"Did press download confirm overwrite");
|
|
BOOL checked = [sender state] == NSOnState;
|
|
[[Preferences defaultPreferences] setConfirmBeforeOverwriting: checked];
|
|
}
|
|
|
|
|
|
-(void)didPressDownloadRemoveOnComplete: (id)sender {
|
|
NSLog(@"Did press download remove on complete");
|
|
BOOL checked = [sender state] == NSOnState;
|
|
[[Preferences defaultPreferences] setRemoveDownloadsOnComplete: checked];
|
|
}
|
|
|
|
|
|
-(void)didPressStartupUseCurrentPage: (id)sender {
|
|
NSLog(@"Did press startup use current page");
|
|
AppDelegate *delegate = [NSApp delegate];
|
|
NSString *url = [delegate currentUrl];
|
|
[[Preferences defaultPreferences] setStartupUrl: url];
|
|
[startupPageField setStringValue: [[Preferences defaultPreferences] startupUrl]];
|
|
}
|
|
|
|
|
|
-(void)didPressStartupUseDefaultPage: (id)sender {
|
|
NSLog(@"Did press startup use default page");
|
|
[[Preferences defaultPreferences] setStartupUrl: nil];
|
|
[startupPageField setStringValue: [[Preferences defaultPreferences] startupUrl]];
|
|
}
|
|
|
|
|
|
-(void)didPressSearchFromUrlBar: (id)sender {
|
|
NSLog(@"Did press search from url bar");
|
|
BOOL checked = [sender state] == NSOnState;
|
|
[[Preferences defaultPreferences] setSearchFromUrlBar: checked];
|
|
}
|
|
|
|
// MARK: - APPEARANCE TAB
|
|
-(void)configureAppearanceTab {
|
|
[alwaysShowTabBarButton setState: [[Preferences defaultPreferences] alwaysShowTabs]
|
|
? NSOnState : NSOffState];
|
|
[switchToTabsButton setState: [[Preferences defaultPreferences] switchTabImmediately]
|
|
? NSOnState : NSOffState];
|
|
[bankNewTabsButton setState: [[Preferences defaultPreferences] blankNewTabs]
|
|
? NSOnState : NSOffState];
|
|
TabLocation location = [[Preferences defaultPreferences] tabLocation];
|
|
[tabPositionButton selectItemAtIndex: (NSInteger)location];
|
|
ViewLocation viewLocation = [[Preferences defaultPreferences] developerViewLocation];
|
|
[developerViewsButton selectItemAtIndex: (NSInteger)viewLocation];
|
|
[urlSuggestionsButton setState: [[Preferences defaultPreferences] showUrlSuggestions]
|
|
? NSOnState : NSOffState];
|
|
UrlBarButtonType buttonType = [[Preferences defaultPreferences] urlBarButtonType];
|
|
[urlBarButtonsTypeButton selectItemAtIndex: (NSInteger)buttonType];
|
|
}
|
|
|
|
-(void)didPickDeveloperViews: (id)sender {
|
|
NSLog(@"didPickDeveloperViews");
|
|
ViewLocation location = (ViewLocation)[sender indexOfItem: [sender selectedItem]];
|
|
[[Preferences defaultPreferences] setDeveloperViewLocation: location];
|
|
}
|
|
|
|
-(void)didPickTabPosition: (id)sender {
|
|
NSLog(@"didPickTabPosition");
|
|
TabLocation location = (TabLocation)[sender indexOfItem: [sender selectedItem]];
|
|
[[Preferences defaultPreferences] setTabLocation: location];
|
|
}
|
|
|
|
-(void)didPressAlwaysShowTabBar: (id)sender {
|
|
NSLog(@"didPressAlwaysShowTabBar");
|
|
BOOL checked = [sender state] == NSOnState;
|
|
[[Preferences defaultPreferences] setAlwaysShowTabs: checked];
|
|
}
|
|
|
|
-(void)didPressBlankNewTabs: (id)sender {
|
|
NSLog(@"didPressBlankNewTabs");
|
|
BOOL checked = [sender state] == NSOnState;
|
|
[[Preferences defaultPreferences] setBlankNewTabs: checked];
|
|
}
|
|
|
|
-(void)didPressSwitchToTabs: (id)sender {
|
|
NSLog(@"didPressSwitchToTabs");
|
|
BOOL checked = [sender state] == NSOnState;
|
|
[[Preferences defaultPreferences] setSwitchTabImmediately: checked];
|
|
}
|
|
|
|
-(void)didPressUrlSuggestions: (id)sender {
|
|
NSLog(@"didPressUrlSuggestions");
|
|
BOOL checked = [sender state] == NSOnState;
|
|
[[Preferences defaultPreferences] setShowUrlSuggestions: checked];
|
|
}
|
|
|
|
-(void)didPickUrlButtonsType: (id)sender {
|
|
NSLog(@"didPickUrlButtonsType");
|
|
UrlBarButtonType buttonType = (UrlBarButtonType)[sender indexOfItem: [sender
|
|
selectedItem]];
|
|
[[Preferences defaultPreferences] setUrlBarButtonType: buttonType];
|
|
}
|
|
|
|
// MARK: - CONTENT TAB
|
|
-(void)configureContentTab {
|
|
LoadImages loadImages = [[Preferences defaultPreferences] loadImages];
|
|
[displayImagesButton selectItemAtIndex: (NSInteger)loadImages];
|
|
[preventPopupsButton setState: [[Preferences defaultPreferences] disablePopups]
|
|
? NSOnState : NSOffState];
|
|
[hideAdvertsButton setState: [[Preferences defaultPreferences] hideAds]
|
|
? NSOnState : NSOffState];
|
|
[enableJavascriptButton setState: [[Preferences defaultPreferences] enableJavascript]
|
|
? NSOnState : NSOffState];
|
|
[enableAnimationButton setState: [[Preferences defaultPreferences] enableAnimation]
|
|
? NSOnState : NSOffState];
|
|
FontType fontType = [[Preferences defaultPreferences] defaultFont];
|
|
[defaultFontButton selectItemAtIndex: (NSInteger)fontType];
|
|
|
|
NSUInteger selectedIndex = 0;
|
|
NSString *preferredLanguage = [[Preferences defaultPreferences] preferredLanguage];
|
|
NSString *languagesPath = [[NSBundle mainBundle] pathForResource: @"Languages" ofType: @"plist"];
|
|
NSArray *languages = [NSArray arrayWithContentsOfFile: languagesPath];
|
|
for (NSUInteger i = 0; i < [languages count]; i++) {
|
|
[preferredLanguageButton addItemWithTitle: [languages objectAtIndex: i]];
|
|
if ([[languages objectAtIndex: i] isEqualTo: preferredLanguage]) {
|
|
selectedIndex = i;
|
|
}
|
|
}
|
|
[preferredLanguageButton selectItemAtIndex: selectedIndex];
|
|
NSUInteger fontSize = [[Preferences defaultPreferences] fontSize];
|
|
[fontSizeField setStringValue: [NSString stringWithFormat: @"%u", fontSize]];
|
|
[fontSizeStepper setIntegerValue: fontSize];
|
|
}
|
|
|
|
-(void)didChangeFontSizeStepper: (id)sender {
|
|
NSLog(@"didChangeFontSizeStepper");
|
|
NSInteger value = [sender integerValue];
|
|
if (value < 1) {
|
|
value = 1;
|
|
[sender setIntegerValue: value];
|
|
}
|
|
[fontSizeField setStringValue: [NSString stringWithFormat: @"%u", value]];
|
|
[[Preferences defaultPreferences] setFontSize: value];
|
|
}
|
|
|
|
-(void)didEnterFontSize: (id)sender {
|
|
NSLog(@"didEnterFontSize");
|
|
NSInteger value = [[sender stringValue] integerValue];
|
|
if (value < 1)
|
|
value = 1;
|
|
[fontSizeStepper setIntegerValue: value];
|
|
[[Preferences defaultPreferences] setFontSize: (NSUInteger)value];
|
|
}
|
|
|
|
-(void)didPickDefaultFont: (id)sender {
|
|
NSLog(@"didPickDefualtFont");
|
|
FontType fontType = (FontType)[sender indexOfItem: [sender selectedItem]];
|
|
[[Preferences defaultPreferences] setDefaultFont: fontType];
|
|
}
|
|
|
|
-(void)didPickLoadImages: (id)sender {
|
|
NSLog(@"didPickLoadImages");
|
|
LoadImages loadImages = (LoadImages)[sender indexOfItem: [sender
|
|
selectedItem]];
|
|
[[Preferences defaultPreferences] setLoadImages: loadImages];
|
|
}
|
|
|
|
-(void)didPressEnableAnimations: (id)sender {
|
|
NSLog(@"didPressEnableAnimations");
|
|
BOOL checked = [sender state] == NSOnState;
|
|
[[Preferences defaultPreferences] setEnableAnimation: checked];
|
|
}
|
|
|
|
-(void)didPressEnableJavascript: (id)sender {
|
|
NSLog(@"didPressEnableJavascript");
|
|
BOOL checked = [sender state] == NSOnState;
|
|
[[Preferences defaultPreferences] setEnableJavascript: checked];
|
|
}
|
|
|
|
-(void)didPressHideAdverts: (id)sender {
|
|
NSLog(@"didPressHideAdverts");
|
|
BOOL checked = [sender state] == NSOnState;
|
|
[[Preferences defaultPreferences] setHideAds: checked];
|
|
}
|
|
|
|
-(void)didPressPreventPopups: (id)sender {
|
|
NSLog(@"didPressPreventPopups");
|
|
BOOL checked = [sender state] == NSOnState;
|
|
[[Preferences defaultPreferences] setDisablePopups: checked];
|
|
}
|
|
|
|
-(void)didPressPreviewFont: (id)sender {
|
|
NSLog(@"didPressPreviewFont");
|
|
}
|
|
|
|
-(void)didPickPreferredLanguage: (id)sender {
|
|
NSLog(@"didPickPreferredLanguage");
|
|
[[Preferences defaultPreferences] setPreferredLanguage: [sender title]];
|
|
}
|
|
|
|
@end
|