X-Git-Url: http://git.ithinksw.org/MenuTunes.git/blobdiff_plain/0b83e13fdd374e0ac55397663cedb94bf8df197f..01755ec0d1d9e0d49d003bd3029162388b720cda:/PreferencesController.m diff --git a/PreferencesController.m b/PreferencesController.m index 39c0c9f..9690e0b 100755 --- a/PreferencesController.m +++ b/PreferencesController.m @@ -10,6 +10,8 @@ #import #import +#import + #import #import #import @@ -17,6 +19,7 @@ #import #import +#import #import #import #import @@ -36,6 +39,8 @@ - (void)setupCustomizationTables; - (void)setupMenuItems; - (void)setupUI; +- (NSArray *)effectNamesFromDictionary:(NSDictionary *)infoDict; +- (void)setCustomColor:(NSColor *)color updateWell:(BOOL)update; - (IBAction)changeMenus:(id)sender; - (void)setLaunchesAtLogin:(BOOL)flag; @end @@ -434,25 +439,58 @@ static PreferencesController *prefs = nil; if ( setting == 0 ) { [(ITTSWBackgroundView *)[sw contentView] setBackgroundMode:ITTSWBackgroundApple]; - [backgroundColorWell setEnabled:NO]; + [backgroundColorWell setEnabled:NO]; + [backgroundColorPopup setEnabled:NO]; } else if ( setting == 1 ) { [(ITTSWBackgroundView *)[sw contentView] setBackgroundMode:ITTSWBackgroundReadable]; - [backgroundColorWell setEnabled:NO]; + [backgroundColorWell setEnabled:NO]; + [backgroundColorPopup setEnabled:NO]; } else if ( setting == 2 ) { [(ITTSWBackgroundView *)[sw contentView] setBackgroundMode:ITTSWBackgroundColored]; - [backgroundColorWell setEnabled:YES]; + [backgroundColorWell setEnabled:YES]; + [backgroundColorPopup setEnabled:YES]; } [df setInteger:setting forKey:@"statusWindowBackgroundMode"]; } else if ( [sender tag] == 2091) { - [(ITTSWBackgroundView *)[sw contentView] setBackgroundColor:[sender color]]; - [df setObject:[NSArchiver archivedDataWithRootObject:[sender color]] forKey:@"statusWindowBackgroundColor"]; + [self setCustomColor:[sender color] updateWell:NO]; + } else if ( [sender tag] == 2092) { + + int selectedItem = [sender indexOfSelectedItem]; + + if ( selectedItem == 1 ) { // An NSPopUpButton in PullDown mode uses item 0 as its title. Its first selectable item is 1. + [self setCustomColor:[NSColor colorWithCalibratedRed:0.92549 green:0.686275 blue:0.0 alpha:1.0] updateWell:YES]; + } else if ( selectedItem == 2 ) { + [self setCustomColor:[NSColor colorWithCalibratedRed:0.380392 green:0.670588 blue:0.0 alpha:1.0] updateWell:YES]; + } else if ( selectedItem == 3 ) { + [self setCustomColor:[NSColor colorWithCalibratedRed:0.443137 green:0.231373 blue:0.619608 alpha:1.0] updateWell:YES]; + } else if ( selectedItem == 4 ) { + [self setCustomColor:[NSColor colorWithCalibratedRed:0.831373 green:0.12549 blue:0.509804 alpha:1.0] updateWell:YES]; + } else if ( selectedItem == 5 ) { + [self setCustomColor:[NSColor colorWithCalibratedRed:0.00784314 green:0.611765 blue:0.662745 alpha:1.0] updateWell:YES]; + } else { + [self setCustomColor:[NSColor colorWithCalibratedWhite:0.15 alpha:0.70] updateWell:YES]; + } + + } else if ( [sender tag] == 2095) { + [sw vanish:self]; + [df setInteger:[sender indexOfSelectedItem] forKey:@"statusWindowSizing"]; } [df synchronize]; } +- (void)setCustomColor:(NSColor *)color updateWell:(BOOL)update +{ + [(ITTSWBackgroundView *)[[StatusWindow sharedWindow] contentView] setBackgroundColor:color]; + [df setObject:[NSArchiver archivedDataWithRootObject:color] forKey:@"statusWindowBackgroundColor"]; + + if ( update ) { + [backgroundColorWell setColor:color]; + } +} + - (void)registerDefaults { BOOL found = NO; @@ -476,18 +514,22 @@ static PreferencesController *prefs = nil; nil] forKey:@"menu"]; [df setInteger:5 forKey:@"SongsInAdvance"]; - // [df setBool:YES forKey:@"showName"]; // Song info will always show song title. +// [df setBool:YES forKey:@"showName"]; // Song info will always show song title. [df setBool:YES forKey:@"showArtist"]; [df setBool:NO forKey:@"showAlbum"]; [df setBool:NO forKey:@"showTime"]; - [df setInteger:2100 forKey:@"statusWindowAppearanceEffect"]; - [df setInteger:2101 forKey:@"statusWindowVanishEffect"]; + [df setObject:@"ITCutWindowEffect" forKey:@"statusWindowAppearanceEffect"]; + [df setObject:@"ITDissolveWindowEffect" forKey:@"statusWindowVanishEffect"]; [df setFloat:0.8 forKey:@"statusWindowAppearanceSpeed"]; [df setFloat:0.8 forKey:@"statusWindowVanishSpeed"]; [df setFloat:4.0 forKey:@"statusWindowVanishDelay"]; + [df setInteger:(int)ITWindowPositionBottom forKey:@"statusWindowVerticalPosition"]; + [df setInteger:(int)ITWindowPositionLeft forKey:@"statusWindowHorizontalPosition"]; [df setBool:YES forKey:@"showSongInfoOnChange"]; - + + [df setObject:[NSArchiver archivedDataWithRootObject:[NSColor blueColor]] forKey:@"statusWindowBackgroundColor"]; + [df synchronize]; loginWindow = [[df persistentDomainForName:@"loginwindow"] mutableCopy]; @@ -694,8 +736,12 @@ static PreferencesController *prefs = nil; { NSMutableDictionary *loginwindow; NSMutableArray *loginarray; - NSEnumerator *loginEnum, *keyArrayEnum; - NSString *serverName; + NSEnumerator *loginEnum; + NSEnumerator *keyArrayEnum; + NSString *serverName; + NSData *colorData; + NSArray *effectClasses = [ITWindowEffect effectClasses]; +// NSEnumerator *effectEnum = [effectList objectEnumerator]; int selectedBGStyle; id anItem; @@ -745,6 +791,16 @@ static PreferencesController *prefs = nil; // Setup the positioning controls // Setup effects controls + // Populate the effects popups + [appearanceEffectPopup removeItemAtIndex:0]; + [vanishEffectPopup removeItemAtIndex:0]; + [appearanceEffectPopup addItemsWithTitles:[[effectList allValues] objectsForKey:@"Name"]]; // category method + [vanishEffectPopup addItemsWithTitles:[[effectList allValues] objectsForKey:@"Name"]]; // category method + + // Attempt to find the pref'd effect in the list. + // If it's not there, use cut/dissolve. + + [appearanceEffectPopup selectItem:[appearanceEffectPopup itemAtIndex:[appearanceEffectPopup indexOfItemWithTag:[df integerForKey:@"statusWindowAppearanceEffect"]]]]; [vanishEffectPopup selectItem:[vanishEffectPopup itemAtIndex:[vanishEffectPopup indexOfItemWithTag:[df integerForKey:@"statusWindowVanishEffect"]]]]; [appearanceSpeedSlider setFloatValue:-([df floatForKey:@"statusWindowAppearanceSpeed"])]; @@ -752,18 +808,28 @@ static PreferencesController *prefs = nil; [vanishDelaySlider setFloatValue:[df floatForKey:@"statusWindowVanishDelay"]]; // Setup General Controls - selectedBGStyle = [df integerForKey:@"statusWindowBackgroundMode"]; [backgroundStylePopup selectItem:[backgroundStylePopup itemAtIndex:[backgroundStylePopup indexOfItemWithTag:selectedBGStyle]]]; if ( selectedBGStyle == ITTSWBackgroundColored ) { - [backgroundColorWell setEnabled:YES]; + [backgroundColorWell setEnabled:YES]; + [backgroundColorPopup setEnabled:YES]; } else { - [backgroundColorWell setEnabled:NO]; + [backgroundColorWell setEnabled:NO]; + [backgroundColorPopup setEnabled:NO]; } - [backgroundColorWell setColor:(NSColor *)[NSUnarchiver unarchiveObjectWithData:[df dataForKey:@"statusWindowBackgroundColor"]]]; + colorData = [df dataForKey:@"statusWindowBackgroundColor"]; + + if ( colorData ) { + [backgroundColorWell setColor:(NSColor *)[NSUnarchiver unarchiveObjectWithData:colorData]]; + } else { + [backgroundColorWell setColor:[NSColor blueColor]]; + } + [showOnChangeCheckbox setState:([df boolForKey:@"showSongInfoOnChange"] ? NSOnState : NSOffState)]; + + [windowSizingPopup selectItem:[windowSizingPopup itemAtIndex:[windowSizingPopup indexOfItemWithTag:[df integerForKey:@"statusWindowSizing"]]]]; // Setup the sharing controls if ([df boolForKey:@"enableSharing"]) { @@ -805,6 +871,11 @@ static PreferencesController *prefs = nil; } } +- (NSArray *)effectNamesFromDictionary:(NSDictionary *)infoDict +{ + +} + - (IBAction)changeMenus:(id)sender { ITDebugLog(@"Synchronizing menus");