# HG changeset patch # User antonc27 # Date 1520807045 -3600 # Node ID c129707eb1e6f7cc259f47d3267c019db1753c9b # Parent ba5c794adae31532d03df0bc05f63ecb8e2d3da4 - Remember user settings on app update P.S. Ideally must not erase user's saves and schemes too... diff -r ba5c794adae3 -r c129707eb1e6 project_files/HedgewarsMobile/Classes/CreationChamber.m --- a/project_files/HedgewarsMobile/Classes/CreationChamber.m Sun Mar 11 22:39:40 2018 +0100 +++ b/project_files/HedgewarsMobile/Classes/CreationChamber.m Sun Mar 11 23:24:05 2018 +0100 @@ -72,16 +72,15 @@ #pragma mark Settings + (void)createSettings { NSUserDefaults *settings = [NSUserDefaults standardUserDefaults]; - [settings setObject:[NSNumber numberWithBool:NO] forKey:@"alternate"]; - [settings setObject:[NSNumber numberWithBool:YES] forKey:@"music"]; - [settings setObject:[NSNumber numberWithBool:YES] forKey:@"sound"]; - [settings setObject:[NSNumber numberWithBool:YES] forKey:@"sync_ws"]; + + [settings setDefaultBool:NO forNonExistingKey:@"alternate"]; + [settings setDefaultBool:YES forNonExistingKey:@"music"]; + [settings setDefaultBool:YES forNonExistingKey:@"sound"]; + [settings setDefaultBool:YES forNonExistingKey:@"sync_ws"]; // don't overwrite these two strings when present - if ([settings objectForKey:@"username"] == nil) - [settings setObject:@"" forKey:@"username"]; - if ([settings objectForKey:@"password"] == nil) - [settings setObject:@"" forKey:@"password"]; + [settings setDefaultValue:@"" forNonExistingKey:@"username"]; + [settings setDefaultValue:@"" forNonExistingKey:@"password"]; [settings synchronize]; } diff -r ba5c794adae3 -r c129707eb1e6 project_files/HedgewarsMobile/Classes/ExtraCategories.h --- a/project_files/HedgewarsMobile/Classes/ExtraCategories.h Sun Mar 11 22:39:40 2018 +0100 +++ b/project_files/HedgewarsMobile/Classes/ExtraCategories.h Sun Mar 11 23:24:05 2018 +0100 @@ -72,3 +72,9 @@ @end +@interface NSUserDefaults (setNonExisting) + +- (void)setDefaultValue:(nullable id)value forNonExistingKey:(NSString *_Nonnull)key; +- (void)setDefaultBool:(BOOL)boolValue forNonExistingKey:(NSString *_Nonnull)key; + +@end diff -r ba5c794adae3 -r c129707eb1e6 project_files/HedgewarsMobile/Classes/ExtraCategories.m --- a/project_files/HedgewarsMobile/Classes/ExtraCategories.m Sun Mar 11 22:39:40 2018 +0100 +++ b/project_files/HedgewarsMobile/Classes/ExtraCategories.m Sun Mar 11 23:24:05 2018 +0100 @@ -190,3 +190,19 @@ } @end + + +#pragma mark - +@implementation NSUserDefaults (setNonExisting) + +- (void)setDefaultValue:(nullable id)value forNonExistingKey:(NSString *_Nonnull)key { + if ([self objectForKey:key] == nil) { + [self setObject:value forKey:key]; + } +} + +- (void)setDefaultBool:(BOOL)boolValue forNonExistingKey:(NSString *_Nonnull)key { + [self setDefaultValue:[NSNumber numberWithBool:boolValue] forNonExistingKey:key]; +} + +@end