/* Global default bookmark settings Copyright 2013 Thincast Technologies GmbH, Author: Dorian Johnson This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #import "GlobalDefaults.h" #import "Bookmark.h" #import "ConnectionParams.h" @implementation GlobalDefaults + (GlobalDefaults *)sharedGlobalDefaults { static GlobalDefaults *_shared_global_defaults = nil; if (_shared_global_defaults == nil) { @synchronized(self) { if (_shared_global_defaults == nil) _shared_global_defaults = [[GlobalDefaults alloc] init]; } } return _shared_global_defaults; } - (id)init { if (!(self = [super init])) return nil; ComputerBookmark *bookmark = nil; NSData *bookmark_data = [[NSUserDefaults standardUserDefaults] objectForKey:@"TSXSharedGlobalDefaultBookmark"]; if (bookmark_data && [bookmark_data length]) bookmark = [NSKeyedUnarchiver unarchiveObjectWithData:bookmark_data]; if (!bookmark) bookmark = [[[ComputerBookmark alloc] initWithBaseDefaultParameters] autorelease]; _default_bookmark = [bookmark retain]; return self; } - (void)dealloc { [_default_bookmark release]; [super dealloc]; } #pragma mark - @synthesize bookmark = _default_bookmark; - (ComputerBookmark *)newBookmark { return [[ComputerBookmark alloc] initWithConnectionParameters:[[self newParams] autorelease]]; } - (ConnectionParams *)newParams { ConnectionParams *param_copy = [[[self bookmark] params] copy]; return param_copy; } - (ComputerBookmark *)newTestServerBookmark { ComputerBookmark *bm = [self newBookmark]; [bm setLabel:@"Test Server"]; [[bm params] setValue:@"testservice.ifreerdp.com" forKey:@"hostname"]; [[bm params] setInt:0 forKey:@"screen_resolution_type"]; [[bm params] setInt:1024 forKey:@"width"]; [[bm params] setInt:768 forKey:@"height"]; [[bm params] setInt:32 forKey:@"colors"]; [[bm params] setBool:YES forKey:@"perf_remotefx"]; [[bm params] setBool:YES forKey:@"perf_gfx"]; [[bm params] setBool:YES forKey:@"perf_h264"]; return bm; } @end