X-Git-Url: http://git.ithinksw.org/MenuTunes.git/blobdiff_plain/2443be4cac9083f0b3d498dca588794ad65ae38c..35f6b7135a40f5d95777b74f84bc90db2a33ad2b:/PreferencesController.m diff --git a/PreferencesController.m b/PreferencesController.m index 7c5cdc5..4f43e26 100755 --- a/PreferencesController.m +++ b/PreferencesController.m @@ -1,5 +1,5 @@ #import "PreferencesController.h" -#import "MainController.h" +#import "NewMainController.h" #import "HotKeyCenter.h" #import @@ -95,41 +95,27 @@ static PreferencesController *prefs = nil; - (IBAction)changeGeneralSetting:(id)sender { - BOOL rebuildRequired = NO; - if ( [sender tag] == 1010) { [self setLaunchesAtLogin:SENDER_STATE]; } else if ( [sender tag] == 1020) { [df setBool:SENDER_STATE forKey:@"LaunchPlayerWithMT"]; } else if ( [sender tag] == 1030) { [df setInteger:[sender intValue] forKey:@"SongsInAdvance"]; - rebuildRequired = YES; + } else if ( [sender tag] == 1040) { // This will not be executed. Song info always shows the title of the song. // [df setBool:SENDER_STATE forKey:@"showName"]; - // rebuildRequired = YES; } else if ( [sender tag] == 1050) { [df setBool:SENDER_STATE forKey:@"showArtist"]; - rebuildRequired = YES; } else if ( [sender tag] == 1060) { [df setBool:SENDER_STATE forKey:@"showAlbum"]; - rebuildRequired = YES; } else if ( [sender tag] == 1070) { [df setBool:SENDER_STATE forKey:@"showTime"]; - rebuildRequired = YES; } else if ( [sender tag] == 1080) { [df setBool:SENDER_STATE forKey:@"showTrackNumber"]; - rebuildRequired = YES; } else if ( [sender tag] == 1090) { [df setBool:SENDER_STATE forKey:@"showTrackRating"]; - rebuildRequired = YES; } - - if ( rebuildRequired ) { - [controller rebuildMenu]; - // redraw song info status window, or upcoming songs here - } - [df synchronize]; } @@ -232,7 +218,7 @@ static PreferencesController *prefs = nil; @"Playlists", @"Song Rating", @"", - @"PreferencesÉ", + @"Preferences", @"Quit", @"", @"Current Track Info", @@ -296,7 +282,6 @@ static PreferencesController *prefs = nil; NSString *string = [combo userDisplayRep]; NSEnumerator *enumerator = [hotKeysDictionary keyEnumerator]; NSString *enumKey; - BOOL duplicateCombo = NO; if (string == nil) { string = @""; @@ -306,48 +291,83 @@ static PreferencesController *prefs = nil; if (![enumKey isEqualToString:currentHotKey]) { if (![combo isEqual:[KeyCombo clearKeyCombo]] && [combo isEqual:[hotKeysDictionary objectForKey:enumKey]]) { - //Ask if we want to clear duplicate key and set this one [window setLevel:NSNormalWindowLevel]; - NSLog(@"Duplicate Combo! Ask what to do!"); + if ( NSRunAlertPanel(@"Duplicate Key Combo", @"The specified key combo is already in use...", @"Replace", @"Cancel", nil) ) { + [hotKeysDictionary setObject:[KeyCombo clearKeyCombo] forKey:currentHotKey]; + if ([enumKey isEqualToString:@"PlayPause"]) { + [playPauseButton setTitle:@""]; + } else if ([enumKey isEqualToString:@"NextTrack"]) { + [nextTrackButton setTitle:@""]; + } else if ([enumKey isEqualToString:@"PrevTrack"]) { + [previousTrackButton setTitle:@""]; + } else if ([enumKey isEqualToString:@"ToggleVisualizer"]) { + [visualizerButton setTitle:@""]; + } else if ([enumKey isEqualToString:@"TrackInfo"]) { + [trackInfoButton setTitle:@""]; + } else if ([enumKey isEqualToString:@"UpcomingSongs"]) { + [upcomingSongsButton setTitle:@""]; + } else if ([enumKey isEqualToString:@"IncrementVolume"]) { + [volumeIncrementButton setTitle:@""]; + } else if ([enumKey isEqualToString:@"DecrementVolume"]) { + [volumeDecrementButton setTitle:@""]; + } else if ([enumKey isEqualToString:@"IncrementRating"]) { + [ratingIncrementButton setTitle:@""]; + } else if ([enumKey isEqualToString:@"DecrementRating"]) { + [ratingDecrementButton setTitle:@""]; + } else if ([enumKey isEqualToString:@"ToggleShuffle"]) { + [toggleShuffleButton setTitle:@""]; + } else if ([enumKey isEqualToString:@"ToggleLoop"]) { + [toggleLoopButton setTitle:@""]; + } + [df setKeyCombo:[KeyCombo clearKeyCombo] forKey:enumKey]; + } else { + return; + } [window setLevel:NSStatusWindowLevel]; - duplicateCombo = YES; } } } - if (!duplicateCombo) { - [hotKeysDictionary setObject:combo forKey:currentHotKey]; - - if ([currentHotKey isEqualToString:@"PlayPause"]) { - [playPauseButton setTitle:string]; - } else if ([currentHotKey isEqualToString:@"NextTrack"]) { - [nextTrackButton setTitle:string]; - } else if ([currentHotKey isEqualToString:@"PrevTrack"]) { - [previousTrackButton setTitle:string]; - } else if ([currentHotKey isEqualToString:@"ToggleVisualizer"]) { - [visualizerButton setTitle:string]; - } else if ([currentHotKey isEqualToString:@"TrackInfo"]) { - [trackInfoButton setTitle:string]; - } else if ([currentHotKey isEqualToString:@"UpcomingSongs"]) { - [upcomingSongsButton setTitle:string]; - } else if ([currentHotKey isEqualToString:@"IncrementVolume"]) { - [volumeIncrementButton setTitle:string]; - } else if ([currentHotKey isEqualToString:@"DecrementVolume"]) { - [volumeDecrementButton setTitle:string]; - } else if ([currentHotKey isEqualToString:@"IncrementRating"]) { - [ratingIncrementButton setTitle:string]; - } else if ([currentHotKey isEqualToString:@"DecrementRating"]) { - [ratingDecrementButton setTitle:string]; - } else if ([currentHotKey isEqualToString:@"ToggleShuffle"]) { - [toggleShuffleButton setTitle:string]; - } else if ([currentHotKey isEqualToString:@"ToggleLoop"]) { - [toggleLoopButton setTitle:string]; - } - - [df setKeyCombo:combo forKey:currentHotKey]; - //[controller rebuildMenu]; + [hotKeysDictionary setObject:combo forKey:currentHotKey]; + [df setKeyCombo:combo forKey:currentHotKey]; + + if ([currentHotKey isEqualToString:@"PlayPause"]) { + [playPauseButton setTitle:string]; + [[HotKeyCenter sharedCenter] addHotKey:@"PlayPause" combo:combo target:[MainController sharedController] action:@selector(playPause)]; + } else if ([currentHotKey isEqualToString:@"NextTrack"]) { + [nextTrackButton setTitle:string]; + [[HotKeyCenter sharedCenter] addHotKey:@"NextTrack" combo:combo target:[MainController sharedController] action:@selector(nextSong)]; + } else if ([currentHotKey isEqualToString:@"PrevTrack"]) { + [previousTrackButton setTitle:string]; + [[HotKeyCenter sharedCenter] addHotKey:@"PrevTrack" combo:combo target:[MainController sharedController] action:@selector(prevSong)]; + } else if ([currentHotKey isEqualToString:@"ToggleVisualizer"]) { + [visualizerButton setTitle:string]; + //[[HotKeyCenter sharedCenter] addHotKey:@"ToggleVisualizer" combo:combo target:[MainController sharedController] selector:@selector(NULL)]; + } else if ([currentHotKey isEqualToString:@"TrackInfo"]) { + [trackInfoButton setTitle:string]; + [[HotKeyCenter sharedCenter] addHotKey:@"TrackInfo" combo:combo target:[MainController sharedController] action:@selector(showCurrentTrackInfo)]; + } else if ([currentHotKey isEqualToString:@"UpcomingSongs"]) { + [upcomingSongsButton setTitle:string]; + [[HotKeyCenter sharedCenter] addHotKey:@"UpcomingSongs" combo:combo target:[MainController sharedController] action:@selector(showUpcomingSongs)]; + } else if ([currentHotKey isEqualToString:@"IncrementVolume"]) { + [volumeIncrementButton setTitle:string]; + [[HotKeyCenter sharedCenter] addHotKey:@"IncrementVolume" combo:combo target:[MainController sharedController] action:@selector(incrementVolume)]; + } else if ([currentHotKey isEqualToString:@"DecrementVolume"]) { + [volumeDecrementButton setTitle:string]; + [[HotKeyCenter sharedCenter] addHotKey:@"DecrementVolume" combo:combo target:[MainController sharedController] action:@selector(decrementVolume)]; + } else if ([currentHotKey isEqualToString:@"IncrementRating"]) { + [ratingIncrementButton setTitle:string]; + [[HotKeyCenter sharedCenter] addHotKey:@"IncrementRating" combo:combo target:[MainController sharedController] action:@selector(incrementRating)]; + } else if ([currentHotKey isEqualToString:@"DecrementRating"]) { + [ratingDecrementButton setTitle:string]; + [[HotKeyCenter sharedCenter] addHotKey:@"DecrementRating" combo:combo target:[MainController sharedController] action:@selector(decrementRating)]; + } else if ([currentHotKey isEqualToString:@"ToggleShuffle"]) { + [toggleShuffleButton setTitle:string]; + [[HotKeyCenter sharedCenter] addHotKey:@"ToggleShuffle" combo:combo target:[MainController sharedController] action:@selector(toggleShuffle)]; + } else if ([currentHotKey isEqualToString:@"ToggleLoop"]) { + [toggleLoopButton setTitle:string]; + [[HotKeyCenter sharedCenter] addHotKey:@"ToggleLoop" combo:combo target:[MainController sharedController] action:@selector(toggleLoop)]; } - [self cancelHotKey:sender]; } @@ -581,6 +601,7 @@ static PreferencesController *prefs = nil; [nameCheckbox setEnabled:NO]; // Song info will ALWAYS show song title. [artistCheckbox setState:[df boolForKey:@"showArtist"] ? NSOnState : NSOffState]; [trackTimeCheckbox setState:[df boolForKey:@"showTime"] ? NSOnState : NSOffState]; + [trackNumberCheckbox setState:[df boolForKey:@"showTrackNumber"] ? NSOnState : NSOffState]; // Set the launch at login checkbox state [df synchronize]; @@ -599,7 +620,6 @@ static PreferencesController *prefs = nil; { [df setObject:myItems forKey:@"menu"]; [df synchronize]; - [controller rebuildMenu]; } - (void)setLaunchesAtLogin:(BOOL)flag @@ -780,7 +800,7 @@ static PreferencesController *prefs = nil; if ([[[info draggingPasteboard] types] containsObject:@"MenuTableViewPboardType"]) { NSString *item = [myItems objectAtIndex:[[[info draggingPasteboard] stringForType:@"MenuTableViewPboardType"] intValue]]; - if ([item isEqualToString:@"PreferencesÉ"] || [item isEqualToString:@"Quit"]) { + if ([item isEqualToString:@"Preferences"] || [item isEqualToString:@"Quit"]) { return NSDragOperationNone; } }