Plugins/Displays/Bubbles/GrowlBubblesPrefsController.m
author Rudy Richter
Sat Aug 01 20:43:39 2009 -0400 (2009-08-01)
changeset 4259 0e9b6b0b1e25
parent 4246 4f52d1d98978
child 4858 ec71a469e0b8
permissions -rw-r--r--
Plugins: clang warnings
     1 //
     2 //  GrowlBubblesPrefsController.m
     3 //  Growl
     4 //
     5 //  Created by Kevin Ballard on 9/7/04.
     6 //  Copyright 2004 TildeSoft. All rights reserved.
     7 //
     8 
     9 #import "GrowlBubblesPrefsController.h"
    10 #import "GrowlBubblesDefines.h"
    11 #import "GrowlDefinesInternal.h"
    12 
    13 @implementation GrowlBubblesPrefsController
    14 - (NSString *) mainNibName {
    15 	return @"BubblesPrefs";
    16 }
    17 
    18 + (void) loadColorWell:(NSColorWell *)colorWell fromKey:(NSString *)key defaultColor:(NSColor *)defaultColor {
    19 	NSData *data = nil;
    20 	NSColor *color;
    21 	READ_GROWL_PREF_VALUE(key, GrowlBubblesPrefDomain, NSData *, &data);
    22 	if(data)
    23 		CFMakeCollectable(data);		
    24 	if (data && [data isKindOfClass:[NSData class]]) {
    25 			color = [NSUnarchiver unarchiveObjectWithData:data];
    26 	} else {
    27 		color = defaultColor;
    28 	}
    29 	[colorWell setColor:color];
    30 	[data release];
    31 	data = nil;
    32 }
    33 
    34 - (void) mainViewDidLoad {
    35 	[slider_opacity setAltIncrementValue:0.05];
    36 
    37 	// priority colour settings
    38 	NSColor *defaultColor = [NSColor colorWithCalibratedRed:0.69412 green:0.83147 blue:0.96078 alpha:1.0];
    39 
    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];
    45 
    46 	defaultColor = [[NSColor controlTextColor] colorUsingColorSpaceName:NSCalibratedRGBColorSpace];
    47 
    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];
    53 
    54 	defaultColor = [NSColor colorWithCalibratedRed:0.93725 green:0.96863 blue:0.99216 alpha:0.95];
    55 
    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];
    61 }
    62 
    63 #pragma mark -
    64 
    65 - (BOOL) isLimit {
    66 	BOOL value = YES;
    67 	READ_GROWL_PREF_BOOL(GrowlBubblesLimitPref, GrowlBubblesPrefDomain, &value);
    68 	return value;
    69 }
    70 
    71 - (void) setLimit:(BOOL)value {
    72 	WRITE_GROWL_PREF_BOOL(GrowlBubblesLimitPref, value, GrowlBubblesPrefDomain);
    73 	UPDATE_GROWL_PREFS();
    74 }
    75 
    76 #pragma mark -
    77 
    78 - (CGFloat) opacity {
    79 	CGFloat value = 95.0;
    80 	READ_GROWL_PREF_FLOAT(GrowlBubblesOpacity, GrowlBubblesPrefDomain, &value);
    81 	return value;
    82 }
    83 
    84 - (void) setOpacity:(CGFloat)value {
    85 	WRITE_GROWL_PREF_FLOAT(GrowlBubblesOpacity, value, GrowlBubblesPrefDomain);
    86 	UPDATE_GROWL_PREFS();
    87 }
    88 
    89 #pragma mark -
    90 
    91 - (CGFloat) duration {
    92 	CGFloat value = 4.0;
    93 	READ_GROWL_PREF_FLOAT(GrowlBubblesDuration, GrowlBubblesPrefDomain, &value);
    94 	return value;
    95 }
    96 
    97 - (void) setDuration:(CGFloat)value {
    98 	WRITE_GROWL_PREF_FLOAT(GrowlBubblesDuration, value, GrowlBubblesPrefDomain);
    99 	UPDATE_GROWL_PREFS();
   100 }
   101 
   102 #pragma mark -
   103 
   104 - (IBAction) topColorChanged:(id)sender {
   105 	NSColor *color;
   106 	NSString *key;
   107 	switch ([sender tag]) {
   108 		case -2:
   109 			key = GrowlBubblesVeryLowTopColor;
   110 			break;
   111 		case -1:
   112 			key = GrowlBubblesModerateTopColor;
   113 			break;
   114 		case 1:
   115 			key = GrowlBubblesHighTopColor;
   116 			break;
   117 		case 2:
   118 			key = GrowlBubblesEmergencyTopColor;
   119 			break;
   120 		case 0:
   121 		default:
   122 			key = GrowlBubblesNormalTopColor;
   123 			break;
   124 	}
   125 
   126 	color = [[sender color] colorUsingColorSpaceName:NSCalibratedRGBColorSpace];
   127 	NSData *theData = [NSArchiver archivedDataWithRootObject:color];
   128 	WRITE_GROWL_PREF_VALUE(key, theData, GrowlBubblesPrefDomain);
   129 	UPDATE_GROWL_PREFS();
   130 }
   131 
   132 - (IBAction) colorChanged:(id)sender {
   133 	NSColor *color;
   134 	NSString *key;
   135 	switch ([sender tag]) {
   136 		case -2:
   137 			key = GrowlBubblesVeryLowColor;
   138 			break;
   139 		case -1:
   140 			key = GrowlBubblesModerateColor;
   141 			break;
   142 		case 1:
   143 			key = GrowlBubblesHighColor;
   144 			break;
   145 		case 2:
   146 			key = GrowlBubblesEmergencyColor;
   147 			break;
   148 		case 0:
   149 		default:
   150 			key = GrowlBubblesNormalColor;
   151 			break;
   152 	}
   153 
   154 	color = [[sender color] colorUsingColorSpaceName:NSCalibratedRGBColorSpace];
   155 	NSData *theData = [NSArchiver archivedDataWithRootObject:color];
   156 	WRITE_GROWL_PREF_VALUE(key, theData, GrowlBubblesPrefDomain);
   157 	UPDATE_GROWL_PREFS();
   158 }
   159 
   160 - (IBAction) textColorChanged:(id)sender {
   161 	NSString *key;
   162 	switch ([sender tag]) {
   163 		case -2:
   164 			key = GrowlBubblesVeryLowTextColor;
   165 			break;
   166 		case -1:
   167 			key = GrowlBubblesModerateTextColor;
   168 			break;
   169 		case 1:
   170 			key = GrowlBubblesHighTextColor;
   171 			break;
   172 		case 2:
   173 			key = GrowlBubblesEmergencyTextColor;
   174 			break;
   175 		case 0:
   176 		default:
   177 			key = GrowlBubblesNormalTextColor;
   178 			break;
   179 	}
   180 
   181 	NSData *theData = [NSArchiver archivedDataWithRootObject:[sender color]];
   182 	WRITE_GROWL_PREF_VALUE(key, theData, GrowlBubblesPrefDomain);
   183 	UPDATE_GROWL_PREFS();
   184 }
   185 
   186 #pragma mark -
   187 
   188 - (NSInteger) numberOfItemsInComboBox:(NSComboBox *)aComboBox {
   189 #pragma unused(aComboBox)
   190 	return [[NSScreen screens] count];
   191 }
   192 
   193 - (id) comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)idx {
   194 #pragma unused(aComboBox)
   195 #ifdef __LP64__
   196 	return [NSNumber numberWithInteger:idx];
   197 #else
   198 	return [NSNumber numberWithInt:idx];
   199 #endif
   200 }
   201 
   202 - (int) screen {
   203 	int value = 0;
   204 	READ_GROWL_PREF_INT(GrowlBubblesScreen, GrowlBubblesPrefDomain, &value);
   205 	return value;
   206 }
   207 
   208 - (void) setScreen:(int)value {
   209 	WRITE_GROWL_PREF_INT(GrowlBubblesScreen, value, GrowlBubblesPrefDomain);
   210 	UPDATE_GROWL_PREFS();
   211 }
   212 
   213 - (int) size {
   214 	int value = 0;
   215 	READ_GROWL_PREF_INT(GrowlBubblesSizePref, GrowlBubblesPrefDomain, &value);
   216 	return value;
   217 }
   218 
   219 - (void) setSize:(int)value {
   220 	WRITE_GROWL_PREF_INT(GrowlBubblesSizePref, value, GrowlBubblesPrefDomain);
   221 	UPDATE_GROWL_PREFS();
   222 }
   223 @end