root/Nuku/trunk/Settings.m

Revision 4178, 3.9 kB (checked in by morris, 2 years ago)

Add prefix header

  • Property svn:keywords set to author date id revision
Line 
1 /* $Id$ */
2
3 /*
4  * Copyright (c) 2000-2006 Axel Andersson
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
17  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
20  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26  * SUCH DAMAGE.
27  */
28  
29 #import "Settings.h"
30
31 @implementation Settings
32
33 static NSUserDefaults                   *defaults;
34 static NSMutableDictionary              *settings;
35
36 /*
37         Our init method.
38 */
39
40 - (id)init {
41         self = [super init];
42        
43         settings = [[self preferencesFromUserDefaults] retain];
44        
45         return self;
46 }
47
48
49
50 #pragma mark -
51
52 /*
53         Return the value for the key provided. This can be called from wherever,
54         as we use a static global.
55 */
56
57 + (id)objectForKey:(id)key {
58     return [settings objectForKey:key];
59 }
60
61
62 /*
63         Set the value for the key provided to the object provided.
64 */
65
66 + (void)setObject:(id)object forKey:(NSString *)key {
67         [settings setObject:object forKey:key];
68         [defaults setObject:object forKey:key];
69 }
70
71
72
73 #pragma mark -
74
75 /*
76         Return a default set of preferences.
77 */
78
79 - (NSDictionary *)getDefaultValues {
80     return [[NSDictionary alloc] initWithObjectsAndKeys:
81                         [NSNumber numberWithInt:kDefaultsKanaTypeHiragana],
82                                 kDefaultsKanaType,
83                         [NSNumber numberWithInt:kDefaultsRomanisationSystemHepburn],
84                                 kDefaultsRomanisationSystem,
85                         [NSNumber numberWithInt:kDefaultsModeQuiz],
86                                 kDefaultsMode,
87                         [NSNumber numberWithInt:kDefaultsLinesAll],
88                                 kDefaultsLines,
89                         @"",
90                                 kDefaultsTutorPosition,
91                         [NSNumber numberWithBool:YES],
92                                 kDefaultsMouseDownOnIncorrect,
93                         [NSNumber numberWithBool:NO],
94                                 kDefaultsLockSettings,
95                         [NSNumber numberWithInt:kDefaultsSessionFree],
96                                 kDefaultsSession,
97                         [NSNumber numberWithInt:0],
98                                 kDefaultsTimeLimit,
99                         [NSNumber numberWithInt:0],
100                                 kDefaultsKanaLimit,
101                         NULL];
102 }
103
104
105
106 /*
107         Macro to get an object from the defaults system.
108 */
109
110 #define getObject(name) \
111         defaultsObject = [defaults objectForKey:name]; \
112         \
113         if(defaultsObject) { \
114                 [dictionary setObject:[defaults objectForKey:name] forKey:name]; \
115         } else { \
116                 [dictionary setObject:[defaultValues objectForKey:name] forKey:name]; \
117                 [defaults setObject:[defaultValues objectForKey:name] forKey:name]; \
118         }
119
120
121
122 /*
123         Build our preferences from the defaults system.
124 */
125
126 - (NSMutableDictionary *)preferencesFromUserDefaults {
127         NSMutableDictionary     *dictionary;
128         NSDictionary            *defaultValues;
129         id                                      defaultsObject;
130
131         defaults                        = [NSUserDefaults standardUserDefaults];
132         dictionary                      = [NSMutableDictionary dictionaryWithCapacity:6];
133         defaultValues           = [self getDefaultValues];
134        
135         getObject(kDefaultsMode);
136         getObject(kDefaultsKanaType);
137         getObject(kDefaultsRomanisationSystem);
138         getObject(kDefaultsLines);
139         getObject(kDefaultsSession);
140         getObject(kDefaultsTimeLimit);
141         getObject(kDefaultsKanaLimit);
142        
143         getObject(kDefaultsTutorPosition);
144        
145         getObject(kDefaultsMouseDownOnIncorrect);
146         getObject(kDefaultsLockSettings);
147
148         return dictionary;
149 }
150
151 @end
Note: See TracBrowser for help on using the browser.