summaryrefslogtreecommitdiff
path: root/platform/darwin/src/settings_nsuserdefaults.mm
diff options
context:
space:
mode:
Diffstat (limited to 'platform/darwin/src/settings_nsuserdefaults.mm')
-rw-r--r--platform/darwin/src/settings_nsuserdefaults.mm60
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];
+}