diff options
Diffstat (limited to 'platform/darwin/src/settings_nsuserdefaults.mm')
-rw-r--r-- | platform/darwin/src/settings_nsuserdefaults.mm | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/platform/darwin/src/settings_nsuserdefaults.mm b/platform/darwin/src/settings_nsuserdefaults.mm new file mode 100644 index 0000000000..548ee9b220 --- /dev/null +++ b/platform/darwin/src/settings_nsuserdefaults.mm @@ -0,0 +1,60 @@ +#import <Foundation/Foundation.h> + +#include <mbgl/platform/darwin/settings_nsuserdefaults.hpp> + +using namespace mbgl; + +Settings_NSUserDefaults::Settings_NSUserDefaults() +{ + [[NSUserDefaults standardUserDefaults] registerDefaults:@{ + @"longitude" : @(longitude), + @"latitude" : @(latitude), + @"zoom" : @(zoom), + @"bearing" : @(bearing), + @"pitch" : @(pitch), + @"userTrackingMode" : @(userTrackingMode), + @"showsUserLocation" : @(showsUserLocation), + @"debug" : @(debug), + }]; + load(); +} + +void Settings_NSUserDefaults::load() +{ + NSDictionary *settings = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]; + + longitude = [settings[@"longitude"] doubleValue]; + latitude = [settings[@"latitude"] doubleValue]; + zoom = [settings[@"zoom"] doubleValue]; + bearing = [settings[@"bearing"] doubleValue]; + pitch = [settings[@"pitch"] doubleValue]; + debug = [settings[@"debug"] boolValue]; + + unsigned uncheckedTrackingMode = [settings[@"userTrackingMode"] unsignedIntValue]; + if (uncheckedTrackingMode > MGLUserTrackingModeNone && + uncheckedTrackingMode <= MGLUserTrackingModeFollowWithCourse) + { + userTrackingMode = (MGLUserTrackingMode)uncheckedTrackingMode; + } + showsUserLocation = [settings[@"showsUserLocation"] boolValue]; +} + +void Settings_NSUserDefaults::save() +{ + [[NSUserDefaults standardUserDefaults] setValuesForKeysWithDictionary:@{ + @"longitude" : @(longitude), + @"latitude" : @(latitude), + @"zoom" : @(zoom), + @"bearing" : @(bearing), + @"pitch" : @(pitch), + @"userTrackingMode" : @(userTrackingMode), + @"showsUserLocation" : @(showsUserLocation), + @"debug" : @(debug), + }]; + [[NSUserDefaults standardUserDefaults] synchronize]; +} + +void Settings_NSUserDefaults::clear() +{ + [NSUserDefaults resetStandardUserDefaults]; +} |