2 // GrowlSmokePrefsController.m
5 // Created by Matthew Walton on 11/09/2004.
6 // Copyright 2004-2006 The Growl Project. All rights reserved.
9 #import "GrowlSmokePrefsController.h"
10 #import "GrowlSmokeDefines.h"
11 #import "GrowlDefinesInternal.h"
13 @implementation GrowlSmokePrefsController
15 - (NSString *) mainNibName {
19 + (void) loadColorWell:(NSColorWell *)colorWell fromKey:(NSString *)key defaultColor:(NSColor *)defaultColor {
22 READ_GROWL_PREF_VALUE(key, GrowlSmokePrefDomain, NSData *, &data);
24 CFMakeCollectable(data);
25 if (data && [data isKindOfClass:[NSData class]]) {
26 color = [NSUnarchiver unarchiveObjectWithData:data];
30 [colorWell setColor:color];
35 - (void) mainViewDidLoad {
36 [slider_opacity setAltIncrementValue:0.05];
38 // priority colour settings
39 NSColor *defaultColor = [NSColor colorWithCalibratedWhite:0.1 alpha:1.0];
41 [GrowlSmokePrefsController loadColorWell:color_veryLow fromKey:GrowlSmokeVeryLowColor defaultColor:defaultColor];
42 [GrowlSmokePrefsController loadColorWell:color_moderate fromKey:GrowlSmokeModerateColor defaultColor:defaultColor];
43 [GrowlSmokePrefsController loadColorWell:color_normal fromKey:GrowlSmokeNormalColor defaultColor:defaultColor];
44 [GrowlSmokePrefsController loadColorWell:color_high fromKey:GrowlSmokeHighColor defaultColor:defaultColor];
45 [GrowlSmokePrefsController loadColorWell:color_emergency fromKey:GrowlSmokeEmergencyColor defaultColor:defaultColor];
47 defaultColor = [NSColor whiteColor];
49 [GrowlSmokePrefsController loadColorWell:text_veryLow fromKey:GrowlSmokeVeryLowTextColor defaultColor:defaultColor];
50 [GrowlSmokePrefsController loadColorWell:text_moderate fromKey:GrowlSmokeModerateTextColor defaultColor:defaultColor];
51 [GrowlSmokePrefsController loadColorWell:text_normal fromKey:GrowlSmokeNormalTextColor defaultColor:defaultColor];
52 [GrowlSmokePrefsController loadColorWell:text_high fromKey:GrowlSmokeHighTextColor defaultColor:defaultColor];
53 [GrowlSmokePrefsController loadColorWell:text_emergency fromKey:GrowlSmokeEmergencyTextColor defaultColor:defaultColor];
57 CGFloat value = GrowlSmokeAlphaPrefDefault;
58 READ_GROWL_PREF_FLOAT(GrowlSmokeAlphaPref, GrowlSmokePrefDomain, &value);
62 - (void) setOpacity:(CGFloat)value {
63 WRITE_GROWL_PREF_FLOAT(GrowlSmokeAlphaPref, value, GrowlSmokePrefDomain);
67 - (CGFloat) duration {
68 CGFloat value = GrowlSmokeDurationPrefDefault;
69 READ_GROWL_PREF_FLOAT(GrowlSmokeDurationPref, GrowlSmokePrefDomain, &value);
73 - (void) setDuration:(CGFloat)value {
74 WRITE_GROWL_PREF_FLOAT(GrowlSmokeDurationPref, value, GrowlSmokePrefDomain);
78 - (IBAction) colorChanged:(id)sender {
80 switch ([sender tag]) {
82 key = GrowlSmokeVeryLowColor;
85 key = GrowlSmokeModerateColor;
88 key = GrowlSmokeHighColor;
91 key = GrowlSmokeEmergencyColor;
95 key = GrowlSmokeNormalColor;
99 NSData *theData = [NSArchiver archivedDataWithRootObject:[sender color]];
100 WRITE_GROWL_PREF_VALUE(key, theData, GrowlSmokePrefDomain);
101 UPDATE_GROWL_PREFS();
104 - (IBAction) textColorChanged:(id)sender {
106 switch ([sender tag]) {
108 key = GrowlSmokeVeryLowTextColor;
111 key = GrowlSmokeModerateTextColor;
114 key = GrowlSmokeHighTextColor;
117 key = GrowlSmokeEmergencyTextColor;
121 key = GrowlSmokeNormalTextColor;
125 NSData *theData = [NSArchiver archivedDataWithRootObject:[sender color]];
126 WRITE_GROWL_PREF_VALUE(key, theData, GrowlSmokePrefDomain);
127 UPDATE_GROWL_PREFS();
130 - (BOOL) isFloatingIcon {
131 BOOL value = GrowlSmokeFloatIconPrefDefault;
132 READ_GROWL_PREF_BOOL(GrowlSmokeFloatIconPref, GrowlSmokePrefDomain, &value);
136 - (void) setFloatingIcon:(BOOL)value {
137 WRITE_GROWL_PREF_BOOL(GrowlSmokeFloatIconPref, value, GrowlSmokePrefDomain);
138 UPDATE_GROWL_PREFS();
142 BOOL value = GrowlSmokeLimitPrefDefault;
143 READ_GROWL_PREF_BOOL(GrowlSmokeLimitPref, GrowlSmokePrefDomain, &value);
147 - (void) setLimit:(BOOL)value {
148 WRITE_GROWL_PREF_BOOL(GrowlSmokeLimitPref, value, GrowlSmokePrefDomain);
149 UPDATE_GROWL_PREFS();
152 - (NSInteger) numberOfItemsInComboBox:(NSComboBox *)aComboBox {
153 #pragma unused(aComboBox)
154 return [[NSScreen screens] count];
157 - (id) comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)idx {
158 #pragma unused(aComboBox)
160 return [NSNumber numberWithInteger:idx];
162 return [NSNumber numberWithInt:idx];
168 READ_GROWL_PREF_INT(GrowlSmokeScreenPref, GrowlSmokePrefDomain, &value);
172 - (void) setScreen:(int)value {
173 WRITE_GROWL_PREF_INT(GrowlSmokeScreenPref, value, GrowlSmokePrefDomain);
174 UPDATE_GROWL_PREFS();
179 READ_GROWL_PREF_INT(GrowlSmokeSizePref, GrowlSmokePrefDomain, &value);
183 - (void) setSize:(int)value {
184 WRITE_GROWL_PREF_INT(GrowlSmokeSizePref, value, GrowlSmokePrefDomain);
185 UPDATE_GROWL_PREFS();