Rewrite prefs loading/saving to use Cocoa

This commit is contained in:
2014-04-14 02:55:22 -04:00
parent a76755d961
commit eeb5ca0f06
4 changed files with 108 additions and 246 deletions

61
osx/tools/prefs.mac.mm Normal file
View File

@@ -0,0 +1,61 @@
//
// prefs.mac.mm
// BoE
//
// Created by Celtic Minstrel on 14-04-14.
//
//
#include "prefs.hpp"
#include <Foundation/Foundation.h>
#include <unordered_map>
//static const CFStringRef prefsID = CFSTR("com.spidweb.bladesofexile");
NSString* convertKey(std::string keypath) {
NSString* key = [NSString stringWithCString: keypath.c_str() encoding: NSASCIIStringEncoding];
return [key autorelease];
}
void set_pref(std::string keypath, bool value) {
[[NSUserDefaults standardUserDefaults] setBool: value forKey: convertKey(keypath)];
}
bool get_bool_pref(std::string keypath) {
return [[NSUserDefaults standardUserDefaults] boolForKey: convertKey(keypath)];
}
void set_pref(std::string keypath, int value) {
[[NSUserDefaults standardUserDefaults] setInteger: value forKey: convertKey(keypath)];
}
int get_int_pref(std::string keypath) {
return [[NSUserDefaults standardUserDefaults] integerForKey: convertKey(keypath)];
}
void append_iarray_pref(std::string keypath, int value) {
NSString* key = convertKey(keypath);
NSArray* list = [[NSUserDefaults standardUserDefaults] arrayForKey: key];
NSNumber* num = [NSNumber numberWithInt: value];
if(list == nil)
[[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObject: num] forKey: key] ;
else [[NSUserDefaults standardUserDefaults] setObject: [list arrayByAddingObject: num] forKey: key];
}
std::vector<int> get_iarray_pref(std::string keypath) {
NSArray* list = [[NSUserDefaults standardUserDefaults] arrayForKey: convertKey(keypath)];
if(list == nil) return {};
std::vector<int> result;
for(size_t i = 0; i < [list count]; i++)
result.push_back([[list objectAtIndex: i] intValue]);
return result;
}
void clear_pref(std::string keypath) {
[[NSUserDefaults standardUserDefaults] setNilValueForKey: convertKey(keypath)];
}
bool sync_prefs() {
return [[NSUserDefaults standardUserDefaults] synchronize];
}