network preferences implemented
This commit is contained in:
parent
5bad583fbb
commit
a8b0ad8190
|
@ -38,6 +38,14 @@ typedef NS_ENUM(NSInteger, FontType) {
|
|||
FontTypeFantasy
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSInteger, ProxyType) {
|
||||
ProxyTypeDirect = 0,
|
||||
ProxyTypeBasicAuth,
|
||||
ProxyTypeNoAuth,
|
||||
ProxyTypeAuth,
|
||||
ProxyTypeSystem
|
||||
};
|
||||
|
||||
// Certain preferences will notify that they have been updated using this key.
|
||||
#define PreferencesUpdatedNotificationName @"PreferencesUpdatedNotification"
|
||||
typedef NS_ENUM(NSInteger, PreferenceType) {
|
||||
|
@ -135,5 +143,33 @@ typedef NS_ENUM(NSInteger, PreferenceType) {
|
|||
-(NSUInteger)cacheExpiryDays;
|
||||
-(void)setCacheExpiryDays: (NSUInteger)value;
|
||||
|
||||
-(ProxyType)proxyType;
|
||||
-(void)setProxyType: (ProxyType)value;
|
||||
|
||||
-(NSString*)proxyHost;
|
||||
-(void)setProxyHost: (NSString*)value;
|
||||
|
||||
-(NSUInteger)proxyPort;
|
||||
-(void)setProxyPort: (NSUInteger)value;
|
||||
|
||||
-(NSString*)proxyUsername;
|
||||
-(void)setProxyUsername: (NSString*)value;
|
||||
|
||||
-(NSString*)proxyPassword;
|
||||
-(void)setProxyPassword: (NSString*)value;
|
||||
|
||||
-(NSString*)proxyOmit;
|
||||
-(void)setProxyOmit: (NSString*)value;
|
||||
|
||||
-(NSUInteger)maximumFetchers;
|
||||
-(void)setMaximumFetchers: (NSUInteger)value;
|
||||
|
||||
-(NSUInteger)fetchesPerHost;
|
||||
-(void)setFetchesPerHost: (NSUInteger)value;
|
||||
|
||||
-(NSUInteger)cachedConnections;
|
||||
-(void)setCachedConnections: (NSUInteger)value;
|
||||
|
||||
|
||||
+(Preferences*)defaultPreferences;
|
||||
@end
|
||||
|
|
|
@ -376,6 +376,139 @@
|
|||
[self saveNetsurfPrefsFile];
|
||||
}
|
||||
|
||||
-(ProxyType)proxyType {
|
||||
if (!nsoption_bool(http_proxy))
|
||||
return ProxyTypeDirect;
|
||||
|
||||
int proxyType = nsoption_int(http_proxy_auth);
|
||||
BOOL authenticated = (nsoption_charp(http_proxy_auth_user) != NULL)
|
||||
&& (nsoption_charp(http_proxy_auth_pass) != NULL);
|
||||
BOOL hostProvided = nsoption_charp(http_proxy_host) != NULL;
|
||||
|
||||
if (!hostProvided)
|
||||
return ProxyTypeSystem;
|
||||
|
||||
// If the required fields of a selected proxy type arne't set; Default to none.
|
||||
switch (proxyType) {
|
||||
case OPTION_HTTP_PROXY_AUTH_NONE:
|
||||
return ProxyTypeNoAuth;
|
||||
case OPTION_HTTP_PROXY_AUTH_BASIC:
|
||||
if (authenticated)
|
||||
return ProxyTypeBasicAuth;
|
||||
else
|
||||
return ProxyTypeDirect;
|
||||
case OPTION_HTTP_PROXY_AUTH_NTLM:
|
||||
if (authenticated)
|
||||
return ProxyTypeAuth;
|
||||
else
|
||||
return ProxyTypeDirect;
|
||||
default:
|
||||
return ProxyTypeDirect;
|
||||
}
|
||||
}
|
||||
-(void)setProxyType: (ProxyType)value {
|
||||
switch (value) {
|
||||
case ProxyTypeDirect:
|
||||
nsoption_set_bool(http_proxy, false);
|
||||
break;
|
||||
case ProxyTypeNoAuth:
|
||||
nsoption_set_bool(http_proxy, true);
|
||||
nsoption_set_int(http_proxy_auth, OPTION_HTTP_PROXY_AUTH_NONE);
|
||||
break;
|
||||
case ProxyTypeBasicAuth:
|
||||
nsoption_set_bool(http_proxy, true);
|
||||
nsoption_set_int(http_proxy_auth, OPTION_HTTP_PROXY_AUTH_BASIC);
|
||||
break;
|
||||
case ProxyTypeAuth:
|
||||
nsoption_set_bool(http_proxy, true);
|
||||
nsoption_set_int(http_proxy_auth, OPTION_HTTP_PROXY_AUTH_NTLM);
|
||||
break;
|
||||
case ProxyTypeSystem:
|
||||
nsoption_set_bool(http_proxy, true);
|
||||
nsoption_set_charp(http_proxy_host, NULL);
|
||||
nsoption_set_int(http_proxy_auth, OPTION_HTTP_PROXY_AUTH_NONE);
|
||||
break;
|
||||
}
|
||||
[self saveNetsurfPrefsFile];
|
||||
}
|
||||
|
||||
-(NSString*)proxyHost {
|
||||
char *value = nsoption_charp(http_proxy_host);
|
||||
if (value == NULL)
|
||||
return nil;
|
||||
return [NSString stringWithCString: value];
|
||||
}
|
||||
-(void)setProxyHost: (NSString*)value {
|
||||
nsoption_set_charp(http_proxy_host, strdup([value cString]));
|
||||
[self saveNetsurfPrefsFile];
|
||||
}
|
||||
|
||||
-(NSUInteger)proxyPort {
|
||||
return (NSUInteger)nsoption_int(http_proxy_port);
|
||||
}
|
||||
-(void)setProxyPort: (NSUInteger)value {
|
||||
nsoption_set_int(http_proxy_port, (int)value);
|
||||
[self saveNetsurfPrefsFile];
|
||||
}
|
||||
|
||||
-(NSString*)proxyUsername {
|
||||
char *value = nsoption_charp(http_proxy_auth_user);
|
||||
if (value == NULL)
|
||||
return nil;
|
||||
return [NSString stringWithCString: value];
|
||||
}
|
||||
-(void)setProxyUsername: (NSString*)value {
|
||||
nsoption_set_charp(http_proxy_auth_user, strdup([value cString]));
|
||||
[self saveNetsurfPrefsFile];
|
||||
}
|
||||
|
||||
-(NSString*)proxyPassword {
|
||||
char *value = nsoption_charp(http_proxy_auth_pass);
|
||||
if (value == NULL)
|
||||
return nil;
|
||||
return [NSString stringWithCString: value];
|
||||
}
|
||||
-(void)setProxyPassword: (NSString*)value {
|
||||
nsoption_set_charp(http_proxy_auth_pass, strdup([value cString]));
|
||||
[self saveNetsurfPrefsFile];
|
||||
}
|
||||
|
||||
-(NSString*)proxyOmit {
|
||||
char *value = nsoption_charp(http_proxy_noproxy);
|
||||
if (value == NULL)
|
||||
return nil;
|
||||
return [NSString stringWithCString: value];
|
||||
}
|
||||
-(void)setProxyOmit: (NSString*)value {
|
||||
nsoption_set_charp(http_proxy_noproxy, strdup([value cString]));
|
||||
[self saveNetsurfPrefsFile];
|
||||
}
|
||||
|
||||
-(NSUInteger)maximumFetchers {
|
||||
return (NSUInteger)nsoption_int(max_fetchers);
|
||||
}
|
||||
-(void)setMaximumFetchers: (NSUInteger)value {
|
||||
nsoption_set_int(max_fetchers, (int)value);
|
||||
[self saveNetsurfPrefsFile];
|
||||
}
|
||||
|
||||
-(NSUInteger)fetchesPerHost {
|
||||
return (NSUInteger)nsoption_int(max_fetchers_per_host);
|
||||
}
|
||||
-(void)setFetchesPerHost: (NSUInteger)value {
|
||||
nsoption_set_int(max_fetchers_per_host, (int)value);
|
||||
[self saveNetsurfPrefsFile];
|
||||
}
|
||||
|
||||
-(NSUInteger)cachedConnections {
|
||||
return (NSUInteger)nsoption_int(max_cached_fetch_handles);
|
||||
}
|
||||
-(void)setCachedConnections: (NSUInteger)value {
|
||||
nsoption_set_int(max_cached_fetch_handles, (int)value);
|
||||
[self saveNetsurfPrefsFile];
|
||||
}
|
||||
|
||||
|
||||
+(Preferences*)defaultPreferences {
|
||||
static Preferences *prefs;
|
||||
if (prefs == nil) {
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
-(void)configureAppearanceTab;
|
||||
-(void)configureContentTab;
|
||||
-(void)configurePrivacyTab;
|
||||
-(void)configureNetworkTab;
|
||||
-(void)configureProxyFieldsEnabled: (ProxyType)proxyType;
|
||||
@end
|
||||
@interface DownloadLocation: NSObject {
|
||||
NSString *name;
|
||||
|
@ -63,6 +65,7 @@
|
|||
[self configureAppearanceTab];
|
||||
[self configureContentTab];
|
||||
[self configurePrivacyTab];
|
||||
[self configureNetworkTab];
|
||||
}
|
||||
|
||||
// MARK: - MAIN TAB
|
||||
|
@ -422,40 +425,108 @@
|
|||
(NSUInteger)[[sender stringValue] integerValue]];
|
||||
}
|
||||
|
||||
// MARK: - NETWORK TAB
|
||||
-(void)configureNetworkTab {
|
||||
Preferences *prefs = [Preferences defaultPreferences];
|
||||
[proxyTypeButton selectItemAtIndex: (NSUInteger)[prefs proxyType]];
|
||||
[proxyHostField setStringValue: [prefs proxyHost]];
|
||||
[proxyUsernameField setStringValue: [prefs proxyUsername]];
|
||||
[proxyPortField setIntegerValue: [prefs proxyPort]];
|
||||
[proxyPasswordField setStringValue: [prefs proxyPassword]];
|
||||
[proxyOmitField setStringValue: [prefs proxyOmit]];
|
||||
[maxFetchersField setIntegerValue: [prefs maximumFetchers]];
|
||||
[fetchesPerHostField setIntegerValue: [prefs fetchesPerHost]];
|
||||
[cachedConnectionsField setIntegerValue: [prefs cachedConnections]];
|
||||
[self configureProxyFieldsEnabled: [prefs proxyType]];
|
||||
}
|
||||
|
||||
static void disable(NSControl *field) {
|
||||
[field setStringValue: nil];
|
||||
[field setEnabled: NO];
|
||||
}
|
||||
static void enable(NSControl *field) {
|
||||
[field setEnabled: YES];
|
||||
}
|
||||
-(void)configureProxyFieldsEnabled: (ProxyType)proxyType {
|
||||
enable(proxyHostField);
|
||||
enable(proxyPortField);
|
||||
enable(proxyUsernameField);
|
||||
enable(proxyPasswordField);
|
||||
enable(proxyOmitField);
|
||||
|
||||
switch (proxyType) {
|
||||
case ProxyTypeDirect:
|
||||
disable(proxyHostField);
|
||||
disable(proxyPortField);
|
||||
disable(proxyUsernameField);
|
||||
disable(proxyPasswordField);
|
||||
disable(proxyOmitField);
|
||||
break;
|
||||
case ProxyTypeBasicAuth:
|
||||
break;
|
||||
case ProxyTypeNoAuth:
|
||||
disable(proxyUsernameField);
|
||||
disable(proxyPasswordField);
|
||||
break;
|
||||
case ProxyTypeAuth:
|
||||
break;
|
||||
case ProxyTypeSystem:
|
||||
disable(proxyHostField);
|
||||
disable(proxyPortField);
|
||||
disable(proxyUsernameField);
|
||||
disable(proxyPasswordField);
|
||||
[proxyHostField setStringValue: @"localhost"];
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
-(void)didPickProxyType: (id)sender {
|
||||
NSLog(@"didPickProxyType");
|
||||
NSUInteger selected = [sender indexOfItem: [sender selectedItem]];
|
||||
[[Preferences defaultPreferences] setProxyType: (ProxyType)selected];
|
||||
[self configureProxyFieldsEnabled: (ProxyType)selected];
|
||||
}
|
||||
|
||||
-(void)didChangeProxyHost: (id)sender {
|
||||
NSLog(@"didChangeProxyHost");
|
||||
[[Preferences defaultPreferences] setProxyHost: [sender stringValue]];
|
||||
}
|
||||
|
||||
-(void)didChangeProxyPort: (id)sender {
|
||||
NSLog(@"didChangeProxyPort");
|
||||
[[Preferences defaultPreferences] setProxyPort: [[sender stringValue] integerValue]];
|
||||
}
|
||||
|
||||
-(void)didChangeProxyUsername: (id)sender {
|
||||
NSLog(@"didChangeProxyUsername");
|
||||
[[Preferences defaultPreferences] setProxyUsername: [sender stringValue]];
|
||||
}
|
||||
|
||||
-(void)didChangeProxyPassword: (id)sender {
|
||||
NSLog(@"didChangeProxyPassword");
|
||||
[[Preferences defaultPreferences] setProxyPassword: [sender stringValue]];
|
||||
}
|
||||
|
||||
-(void)didChangeProxyOmit: (id)sender {
|
||||
NSLog(@"didChangeProxyOmit");
|
||||
[[Preferences defaultPreferences] setProxyOmit: [sender stringValue]];
|
||||
}
|
||||
|
||||
-(void)didChangeMaxFetchers: (id)sender {
|
||||
NSLog(@"didChangeMaxFetchers");
|
||||
[[Preferences defaultPreferences] setMaximumFetchers: [[sender stringValue] integerValue]];
|
||||
}
|
||||
|
||||
-(void)didChangeFetchesPerHost: (id)sender {
|
||||
NSLog(@"didChangeFetchesPerHost");
|
||||
[[Preferences defaultPreferences] setFetchesPerHost: [[sender stringValue] integerValue]];
|
||||
}
|
||||
|
||||
-(void)didChangeCachedConnections: (id)sender {
|
||||
NSLog(@"didChangeCachedConnections");
|
||||
[[Preferences defaultPreferences] setCachedConnections: [[sender stringValue] integerValue]];
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue