5 // Created by Rudy Richter on 12/12/2005.
6 // Copyright 2005-2006, The Growl Project. All rights reserved.
10 #import "GrowlNanoPrefs.h"
11 #import "GrowlDefinesInternal.h"
13 @implementation GrowlNanoPrefs
15 - (NSString *) mainNibName {
16 return @"GrowlNanoPrefs";
19 - (void) mainViewDidLoad {
20 [slider_opacity setAltIncrementValue:5.0];
24 SYNCHRONIZE_GROWL_PREFS();
29 + (NSColor *) loadColor:(NSString *)key defaultColor:(NSColor *)defaultColor {
32 READ_GROWL_PREF_VALUE(key, GrowlNanoPrefDomain, NSData *, &data);
34 CFMakeCollectable(data);
35 if (data && [data isKindOfClass:[NSData class]]) {
36 color = [NSUnarchiver unarchiveObjectWithData:data];
45 #pragma mark Accessors
47 - (CGFloat) duration {
48 CGFloat value = GrowlNanoDurationPrefDefault;
49 READ_GROWL_PREF_FLOAT(Nano_DURATION_PREF, GrowlNanoPrefDomain, &value);
52 - (void) setDuration:(CGFloat)value {
53 WRITE_GROWL_PREF_FLOAT(Nano_DURATION_PREF, value, GrowlNanoPrefDomain);
59 READ_GROWL_PREF_INT(Nano_EFFECT_PREF, GrowlNanoPrefDomain, &effect);
62 effect = Nano_EFFECT_SLIDE;
64 case Nano_EFFECT_SLIDE:
65 case Nano_EFFECT_WIPE:
68 return (unsigned)effect;
70 - (void) setEffect:(unsigned)newEffect {
73 NSLog(@"(Nano) Invalid effect number %u", newEffect);
76 case Nano_EFFECT_SLIDE:
77 case Nano_EFFECT_WIPE:
78 case Nano_EFFECT_FADE:
79 WRITE_GROWL_PREF_INT(Nano_EFFECT_PREF, newEffect, GrowlNanoPrefDomain);
85 CGFloat value = Nano_DEFAULT_OPACITY;
86 READ_GROWL_PREF_FLOAT(Nano_OPACITY_PREF, GrowlNanoPrefDomain, &value);
89 - (void) setOpacity:(CGFloat)value {
90 WRITE_GROWL_PREF_FLOAT(Nano_OPACITY_PREF, value, GrowlNanoPrefDomain);
96 READ_GROWL_PREF_INT(Nano_SIZE_PREF, GrowlNanoPrefDomain, &value);
99 - (void) setSize:(int)value {
100 WRITE_GROWL_PREF_INT(Nano_SIZE_PREF, value, GrowlNanoPrefDomain);
101 UPDATE_GROWL_PREFS();
104 #pragma mark Combo box support
106 - (NSInteger) numberOfItemsInComboBox:(NSComboBox *)aComboBox {
107 #pragma unused(aComboBox)
108 return [[NSScreen screens] count];
111 - (id) comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)idx {
112 #pragma unused(aComboBox)
114 return [NSNumber numberWithInteger:idx];
116 return [NSNumber numberWithInt:idx];
122 READ_GROWL_PREF_INT(Nano_SCREEN_PREF, GrowlNanoPrefDomain, &value);
125 - (void) setScreen:(int)value {
126 WRITE_GROWL_PREF_INT(Nano_SCREEN_PREF, value, GrowlNanoPrefDomain);
127 UPDATE_GROWL_PREFS();
130 - (NSColor *) textColorVeryLow {
131 return [GrowlNanoPrefs loadColor:GrowlNanoVeryLowTextColor
132 defaultColor:[NSColor whiteColor]];
135 - (void) setTextColorVeryLow:(NSColor *)value {
136 NSData *theData = [NSArchiver archivedDataWithRootObject:value];
137 WRITE_GROWL_PREF_VALUE(GrowlNanoVeryLowTextColor, theData, GrowlNanoPrefDomain);
138 UPDATE_GROWL_PREFS();
141 - (NSColor *) textColorModerate {
142 return [GrowlNanoPrefs loadColor:GrowlNanoModerateTextColor
143 defaultColor:[NSColor whiteColor]];
146 - (void) setTextColorModerate:(NSColor *)value {
147 NSData *theData = [NSArchiver archivedDataWithRootObject:value];
148 WRITE_GROWL_PREF_VALUE(GrowlNanoModerateTextColor, theData, GrowlNanoPrefDomain);
149 UPDATE_GROWL_PREFS();
152 - (NSColor *) textColorNormal {
153 return [GrowlNanoPrefs loadColor:GrowlNanoNormalTextColor
154 defaultColor:[NSColor whiteColor]];
157 - (void) setTextColorNormal:(NSColor *)value {
158 NSData *theData = [NSArchiver archivedDataWithRootObject:value];
159 WRITE_GROWL_PREF_VALUE(GrowlNanoNormalTextColor, theData, GrowlNanoPrefDomain);
160 UPDATE_GROWL_PREFS();
163 - (NSColor *) textColorHigh {
164 return [GrowlNanoPrefs loadColor:GrowlNanoHighTextColor
165 defaultColor:[NSColor whiteColor]];
168 - (void) setTextColorHigh:(NSColor *)value {
169 NSData *theData = [NSArchiver archivedDataWithRootObject:value];
170 WRITE_GROWL_PREF_VALUE(GrowlNanoHighTextColor, theData, GrowlNanoPrefDomain);
171 UPDATE_GROWL_PREFS();
174 - (NSColor *) textColorEmergency {
175 return [GrowlNanoPrefs loadColor:GrowlNanoEmergencyTextColor
176 defaultColor:[NSColor whiteColor]];
179 - (void) setTextColorEmergency:(NSColor *)value {
180 NSData *theData = [NSArchiver archivedDataWithRootObject:value];
181 WRITE_GROWL_PREF_VALUE(GrowlNanoEmergencyTextColor, theData, GrowlNanoPrefDomain);
182 UPDATE_GROWL_PREFS();
185 - (NSColor *) backgroundColorVeryLow {
186 return [GrowlNanoPrefs loadColor:GrowlNanoVeryLowBackgroundColor
187 defaultColor:[NSColor blackColor]];
190 - (void) setBackgroundColorVeryLow:(NSColor *)value {
191 NSData *theData = [NSArchiver archivedDataWithRootObject:value];
192 WRITE_GROWL_PREF_VALUE(GrowlNanoVeryLowBackgroundColor, theData, GrowlNanoPrefDomain);
193 UPDATE_GROWL_PREFS();
196 - (NSColor *) backgroundColorModerate {
197 return [GrowlNanoPrefs loadColor:GrowlNanoModerateBackgroundColor
198 defaultColor:[NSColor blackColor]];
201 - (void) setBackgroundColorModerate:(NSColor *)value {
202 NSData *theData = [NSArchiver archivedDataWithRootObject:value];
203 WRITE_GROWL_PREF_VALUE(GrowlNanoModerateBackgroundColor, theData, GrowlNanoPrefDomain);
204 UPDATE_GROWL_PREFS();
207 - (NSColor *) backgroundColorNormal {
208 return [GrowlNanoPrefs loadColor:GrowlNanoNormalBackgroundColor
209 defaultColor:[NSColor blackColor]];
212 - (void) setBackgroundColorNormal:(NSColor *)value {
213 NSData *theData = [NSArchiver archivedDataWithRootObject:value];
214 WRITE_GROWL_PREF_VALUE(GrowlNanoNormalBackgroundColor, theData, GrowlNanoPrefDomain);
215 UPDATE_GROWL_PREFS();
218 - (NSColor *) backgroundColorHigh {
219 return [GrowlNanoPrefs loadColor:GrowlNanoHighBackgroundColor
220 defaultColor:[NSColor blackColor]];
223 - (void) setBackgroundColorHigh:(NSColor *)value {
224 NSData *theData = [NSArchiver archivedDataWithRootObject:value];
225 WRITE_GROWL_PREF_VALUE(GrowlNanoHighBackgroundColor, theData, GrowlNanoPrefDomain);
226 UPDATE_GROWL_PREFS();
229 - (NSColor *) backgroundColorEmergency {
230 return [GrowlNanoPrefs loadColor:GrowlNanoEmergencyBackgroundColor
231 defaultColor:[NSColor blackColor]];
234 - (void) setBackgroundColorEmergency:(NSColor *)value {
235 NSData *theData = [NSArchiver archivedDataWithRootObject:value];
236 WRITE_GROWL_PREF_VALUE(GrowlNanoEmergencyBackgroundColor, theData, GrowlNanoPrefDomain);
237 UPDATE_GROWL_PREFS();