2 // GrowlBubblesPrefsController.m
5 // Created by Kevin Ballard on 9/7/04.
6 // Copyright 2004 TildeSoft. All rights reserved.
9 #import "GrowlBubblesPrefsController.h"
10 #import "GrowlBubblesDefines.h"
11 #import "GrowlDefinesInternal.h"
13 @implementation GrowlBubblesPrefsController
14 - (NSString *) mainNibName {
15 return @"BubblesPrefs";
18 + (void) loadColorWell:(NSColorWell *)colorWell fromKey:(NSString *)key defaultColor:(NSColor *)defaultColor {
21 READ_GROWL_PREF_VALUE(key, GrowlBubblesPrefDomain, NSData *, &data);
23 CFMakeCollectable(data);
24 if (data && [data isKindOfClass:[NSData class]]) {
25 color = [NSUnarchiver unarchiveObjectWithData:data];
29 [colorWell setColor:color];
34 - (void) mainViewDidLoad {
35 [slider_opacity setAltIncrementValue:0.05];
37 // priority colour settings
38 NSColor *defaultColor = [NSColor colorWithCalibratedRed:0.69412 green:0.83147 blue:0.96078 alpha:1.0];
40 [GrowlBubblesPrefsController loadColorWell:color_veryLow fromKey:GrowlBubblesVeryLowColor defaultColor:defaultColor];
41 [GrowlBubblesPrefsController loadColorWell:color_moderate fromKey:GrowlBubblesModerateColor defaultColor:defaultColor];
42 [GrowlBubblesPrefsController loadColorWell:color_normal fromKey:GrowlBubblesNormalColor defaultColor:defaultColor];
43 [GrowlBubblesPrefsController loadColorWell:color_high fromKey:GrowlBubblesHighColor defaultColor:defaultColor];
44 [GrowlBubblesPrefsController loadColorWell:color_emergency fromKey:GrowlBubblesEmergencyColor defaultColor:defaultColor];
46 defaultColor = [[NSColor controlTextColor] colorUsingColorSpaceName:NSCalibratedRGBColorSpace];
48 [GrowlBubblesPrefsController loadColorWell:text_veryLow fromKey:GrowlBubblesVeryLowTextColor defaultColor:defaultColor];
49 [GrowlBubblesPrefsController loadColorWell:text_moderate fromKey:GrowlBubblesModerateTextColor defaultColor:defaultColor];
50 [GrowlBubblesPrefsController loadColorWell:text_normal fromKey:GrowlBubblesNormalTextColor defaultColor:defaultColor];
51 [GrowlBubblesPrefsController loadColorWell:text_high fromKey:GrowlBubblesHighTextColor defaultColor:defaultColor];
52 [GrowlBubblesPrefsController loadColorWell:text_emergency fromKey:GrowlBubblesEmergencyTextColor defaultColor:defaultColor];
54 defaultColor = [NSColor colorWithCalibratedRed:0.93725 green:0.96863 blue:0.99216 alpha:0.95];
56 [GrowlBubblesPrefsController loadColorWell:top_veryLow fromKey:GrowlBubblesVeryLowTopColor defaultColor:defaultColor];
57 [GrowlBubblesPrefsController loadColorWell:top_moderate fromKey:GrowlBubblesModerateTopColor defaultColor:defaultColor];
58 [GrowlBubblesPrefsController loadColorWell:top_normal fromKey:GrowlBubblesNormalTopColor defaultColor:defaultColor];
59 [GrowlBubblesPrefsController loadColorWell:top_high fromKey:GrowlBubblesHighTopColor defaultColor:defaultColor];
60 [GrowlBubblesPrefsController loadColorWell:top_emergency fromKey:GrowlBubblesEmergencyTopColor defaultColor:defaultColor];
67 READ_GROWL_PREF_BOOL(GrowlBubblesLimitPref, GrowlBubblesPrefDomain, &value);
71 - (void) setLimit:(BOOL)value {
72 WRITE_GROWL_PREF_BOOL(GrowlBubblesLimitPref, value, GrowlBubblesPrefDomain);
80 READ_GROWL_PREF_FLOAT(GrowlBubblesOpacity, GrowlBubblesPrefDomain, &value);
84 - (void) setOpacity:(CGFloat)value {
85 WRITE_GROWL_PREF_FLOAT(GrowlBubblesOpacity, value, GrowlBubblesPrefDomain);
91 - (CGFloat) duration {
93 READ_GROWL_PREF_FLOAT(GrowlBubblesDuration, GrowlBubblesPrefDomain, &value);
97 - (void) setDuration:(CGFloat)value {
98 WRITE_GROWL_PREF_FLOAT(GrowlBubblesDuration, value, GrowlBubblesPrefDomain);
104 - (IBAction) topColorChanged:(id)sender {
107 switch ([sender tag]) {
109 key = GrowlBubblesVeryLowTopColor;
112 key = GrowlBubblesModerateTopColor;
115 key = GrowlBubblesHighTopColor;
118 key = GrowlBubblesEmergencyTopColor;
122 key = GrowlBubblesNormalTopColor;
126 color = [[sender color] colorUsingColorSpaceName:NSCalibratedRGBColorSpace];
127 NSData *theData = [NSArchiver archivedDataWithRootObject:color];
128 WRITE_GROWL_PREF_VALUE(key, theData, GrowlBubblesPrefDomain);
129 UPDATE_GROWL_PREFS();
132 - (IBAction) colorChanged:(id)sender {
135 switch ([sender tag]) {
137 key = GrowlBubblesVeryLowColor;
140 key = GrowlBubblesModerateColor;
143 key = GrowlBubblesHighColor;
146 key = GrowlBubblesEmergencyColor;
150 key = GrowlBubblesNormalColor;
154 color = [[sender color] colorUsingColorSpaceName:NSCalibratedRGBColorSpace];
155 NSData *theData = [NSArchiver archivedDataWithRootObject:color];
156 WRITE_GROWL_PREF_VALUE(key, theData, GrowlBubblesPrefDomain);
157 UPDATE_GROWL_PREFS();
160 - (IBAction) textColorChanged:(id)sender {
162 switch ([sender tag]) {
164 key = GrowlBubblesVeryLowTextColor;
167 key = GrowlBubblesModerateTextColor;
170 key = GrowlBubblesHighTextColor;
173 key = GrowlBubblesEmergencyTextColor;
177 key = GrowlBubblesNormalTextColor;
181 NSData *theData = [NSArchiver archivedDataWithRootObject:[sender color]];
182 WRITE_GROWL_PREF_VALUE(key, theData, GrowlBubblesPrefDomain);
183 UPDATE_GROWL_PREFS();
188 - (NSInteger) numberOfItemsInComboBox:(NSComboBox *)aComboBox {
189 #pragma unused(aComboBox)
190 return [[NSScreen screens] count];
193 - (id) comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)idx {
194 #pragma unused(aComboBox)
196 return [NSNumber numberWithInteger:idx];
198 return [NSNumber numberWithInt:idx];
204 READ_GROWL_PREF_INT(GrowlBubblesScreen, GrowlBubblesPrefDomain, &value);
208 - (void) setScreen:(int)value {
209 WRITE_GROWL_PREF_INT(GrowlBubblesScreen, value, GrowlBubblesPrefDomain);
210 UPDATE_GROWL_PREFS();
215 READ_GROWL_PREF_INT(GrowlBubblesSizePref, GrowlBubblesPrefDomain, &value);
219 - (void) setSize:(int)value {
220 WRITE_GROWL_PREF_INT(GrowlBubblesSizePref, value, GrowlBubblesPrefDomain);
221 UPDATE_GROWL_PREFS();