#import "PreferencesController.h"
-#import "MainController.h"
+#import "NewMainController.h"
#import "HotKeyCenter.h"
#import <ITKit/ITWindowPositioning.h>
- (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];
}
[self setCurrentHotKey:@"PrevTrack"];
break;
case 4035:
- [self setKeyCombo:[hotKeysDictionary objectForKey:@"ToggleVisualizer"]];
- [self setCurrentHotKey:@"ToggleVisualizer"];
+ [self setKeyCombo:[hotKeysDictionary objectForKey:@"ShowPlayer"]];
+ [self setCurrentHotKey:@"ShowPlayer"];
break;
case 4040:
[self setKeyCombo:[hotKeysDictionary objectForKey:@"ToggleLoop"]];
@"Playlists",
@"Song Rating",
@"<separator>",
- @"PreferencesÉ",
+ @"Preferences",
@"Quit",
@"<separator>",
@"Current Track Info",
NSString *string = [combo userDisplayRep];
NSEnumerator *enumerator = [hotKeysDictionary keyEnumerator];
NSString *enumKey;
- BOOL duplicateCombo = NO;
if (string == nil) {
string = @"";
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:@"ShowPlayer"]) {
+ [showPlayerButton 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:@"ShowPlayer"]) {
+ [showPlayerButton setTitle:string];
+ [[HotKeyCenter sharedCenter] addHotKey:@"ShowPlayer" combo:combo target:[MainController sharedController] action:@selector(showPlayer)];
+ } 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];
}
[hotKeysDictionary setObject:[KeyCombo keyCombo] forKey:@"PrevTrack"];
}
- if ([df objectForKey:@"ToggleVisualizer"]) {
- anItem = [df keyComboForKey:@"ToggleVisualizer"];
- [hotKeysDictionary setObject:anItem forKey:@"ToggleVisualizer"];
- [visualizerButton setTitle:[anItem userDisplayRep]];
+ if ([df objectForKey:@"ShowPlayer"]) {
+ anItem = [df keyComboForKey:@"ShowPlayer"];
+ [hotKeysDictionary setObject:anItem forKey:@"ShowPlayer"];
+ [showPlayerButton setTitle:[anItem userDisplayRep]];
} else {
- [hotKeysDictionary setObject:[KeyCombo keyCombo] forKey:@"ToggleVisualizer"];
+ [hotKeysDictionary setObject:[KeyCombo keyCombo] forKey:@"ShowPlayer"];
}
if ([df objectForKey:@"TrackInfo"]) {
[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];
{
[df setObject:myItems forKey:@"menu"];
[df synchronize];
- [controller rebuildMenu];
}
- (void)setLaunchesAtLogin:(BOOL)flag
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;
}
}