#import "Preferences.h" @implementation Preferences static NSUserDefaults *prefs = nil; - (void)dealloc { [prefs release]; [super dealloc]; } + (NSUserDefaults *)prefs { // If preferences haven't been loaded yet, load them if(!prefs) prefs = [[NSUserDefaults standardUserDefaults] retain]; // If there are currently no preferences then set defaults if(![prefs objectForKey:@"version"]) { // Grab and store version string [prefs setObject:[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] forKey:@"version"]; // Set default prefs [prefs setBool:NO forKey:@"displayLogOnAppLaunch"]; [prefs setBool:NO forKey:@"startBoincOnAppLaunch"]; [prefs setBool:NO forKey:@"shareData"]; [prefs setInteger:10000 forKey:@"logBufferSize"]; [prefs setObject:@"None" forKey:@"proxyType"]; [prefs setObject:@"" forKey:@"proxyAddress"]; [prefs setObject:@"" forKey:@"proxyUserName"]; [prefs setObject:@"" forKey:@"proxyPassword"]; // Store path to BOINC Data NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); NSString *bdPath = [[paths objectAtIndex:0] stringByAppendingString:@"/Application Support/BOINC Data/"]; [prefs setObject:bdPath forKey:@"boincDataDirectory"]; } // If the current version is not the same as those in the prefs then make the appropriate changes if(![[prefs objectForKey:@"version"] isEqualToString:[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]]) { // User is upgrading from a previous version if([[prefs objectForKey:@"version"] isEqualToString:@"1"] || [[prefs objectForKey:@"version"] isEqualToString:@"2"]) { [prefs setObject:@"None" forKey:@"proxyType"]; [prefs setObject:@"" forKey:@"proxyAddress"]; [prefs setObject:@"" forKey:@"proxyUserName"]; [prefs setObject:@"" forKey:@"proxyPassword"]; [prefs removeObjectForKey:@"proxyPort"]; // Preference no longer needed // Store the BOINC Data path NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); NSString *oldBDPath = [[paths objectAtIndex:0] stringByAppendingString:@"/Application Support/Boinc Data/"]; NSString *newBDPath = [[paths objectAtIndex:0] stringByAppendingString:@"/Application Support/BOINC Data/"]; [[NSFileManager defaultManager] movePath:oldBDPath toPath:newBDPath handler:nil]; [prefs setObject:newBDPath forKey:@"boincDataDirectory"]; [prefs setBool:NO forKey:@"shareData"]; } // Change the version number in preferences [prefs setObject:[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] forKey:@"version"]; } return prefs; } @end