From: Kent Sutherland Date: Thu, 4 Sep 2003 21:10:08 +0000 (+0000) Subject: All the hotkeys now use the ITHotKey/ITKeyCombo classes now, which makes X-Git-Tag: v1.0~82 X-Git-Url: http://git.ithinksw.org/MenuTunes.git/commitdiff_plain/6a84de24eb2e905de206250ee5b3a95041930713 All the hotkeys now use the ITHotKey/ITKeyCombo classes now, which makes us all happy, right? --- diff --git a/English.lproj/Preferences.nib/info.nib b/English.lproj/Preferences.nib/info.nib index dce4984..4b7fcb4 100755 --- a/English.lproj/Preferences.nib/info.nib +++ b/English.lproj/Preferences.nib/info.nib @@ -3,7 +3,7 @@ IBDocumentLocation - 3 45 356 240 0 0 1024 746 + 4 45 356 240 0 0 1152 746 IBFramework Version 291.0 IBGroupedObjects diff --git a/English.lproj/Preferences.nib/keyedobjects.nib b/English.lproj/Preferences.nib/keyedobjects.nib index ec86e79..5d1895e 100755 Binary files a/English.lproj/Preferences.nib/keyedobjects.nib and b/English.lproj/Preferences.nib/keyedobjects.nib differ diff --git a/MainController.m b/MainController.m index fffd741..f91975f 100755 --- a/MainController.m +++ b/MainController.m @@ -2,6 +2,8 @@ #import "MenuController.h" #import "PreferencesController.h" #import +#import +#import #import "StatusWindowController.h" #import "StatusItemHack.h" @@ -296,92 +298,124 @@ static MainController *sharedController; - (void)clearHotKeys { - [[ITHotKeyCenter sharedCenter] removeHotKey:@"PlayPause"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"NextTrack"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"PrevTrack"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"TrackInfo"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"ShowPlayer"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"UpcomingSongs"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"ToggleLoop"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"ToggleShuffle"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"IncrementVolume"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"DecrementVolume"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"IncrementRating"]; - [[ITHotKeyCenter sharedCenter] removeHotKey:@"DecrementRating"]; + NSEnumerator *hotKeyEnumerator = [[[ITHotKeyCenter sharedCenter] allHotKeys] objectEnumerator]; + ITHotKey *nextHotKey; + + while ( (nextHotKey = [hotKeyEnumerator nextObject]) ) { + [[ITHotKeyCenter sharedCenter] unregisterHotKey:nextHotKey]; + } } - (void)setupHotKeys { + ITHotKey *hotKey; + if ([df objectForKey:@"PlayPause"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"PlayPause" - combo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"PlayPause"]] - target:self action:@selector(playPause)]; + hotKey = [[ITHotKey alloc] init]; + [hotKey setName:@"PlayPause"]; + [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"PlayPause"]]]; + [hotKey setTarget:self]; + [hotKey setAction:@selector(playPause)]; + [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]]; } if ([df objectForKey:@"NextTrack"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"NextTrack" - combo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"NextTrack"]] - target:self action:@selector(nextSong)]; + hotKey = [[ITHotKey alloc] init]; + [hotKey setName:@"NextTrack"]; + [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"NextTrack"]]]; + [hotKey setTarget:self]; + [hotKey setAction:@selector(nextSong)]; + [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]]; } if ([df objectForKey:@"PrevTrack"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"PrevTrack" - combo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"PrevTrack"]] - target:self action:@selector(prevSong)]; + hotKey = [[ITHotKey alloc] init]; + [hotKey setName:@"PrevTrack"]; + [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"PrevTrack"]]]; + [hotKey setTarget:self]; + [hotKey setAction:@selector(prevSong)]; + [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]]; } if ([df objectForKey:@"ShowPlayer"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"ShowPlayer" - combo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"ShowPlayer"]] - target:self action:@selector(showPlayer)]; + hotKey = [[ITHotKey alloc] init]; + [hotKey setName:@"ShowPlayer"]; + [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"ShowPlayer"]]]; + [hotKey setTarget:self]; + [hotKey setAction:@selector(showPlayer)]; + [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]]; } if ([df objectForKey:@"TrackInfo"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"TrackInfo" - combo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"TrackInfo"]] - target:self action:@selector(showCurrentTrackInfo)]; + hotKey = [[ITHotKey alloc] init]; + [hotKey setName:@"TrackInfo"]; + [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"TrackInfo"]]]; + [hotKey setTarget:self]; + [hotKey setAction:@selector(showCurrentTrackInfo)]; + [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]]; } if ([df objectForKey:@"UpcomingSongs"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"UpcomingSongs" - combo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"UpcomingSongs"]] - target:self action:@selector(showUpcomingSongs)]; + hotKey = [[ITHotKey alloc] init]; + [hotKey setName:@"UpcomingSongs"]; + [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"UpcomingSongs"]]]; + [hotKey setTarget:self]; + [hotKey setAction:@selector(showUpcomingSongs)]; + [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]]; } if ([df objectForKey:@"ToggleLoop"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"ToggleLoop" - combo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"ToggleLoop"]] - target:self action:@selector(toggleLoop)]; + hotKey = [[ITHotKey alloc] init]; + [hotKey setName:@"ToggleLoop"]; + [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"ToggleLoop"]]]; + [hotKey setTarget:self]; + [hotKey setAction:@selector(toggleLoop)]; + [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]]; } if ([df objectForKey:@"ToggleShuffle"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"ToggleShuffle" - combo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"ToggleShuffle"]] - target:self action:@selector(toggleShuffle)]; + hotKey = [[ITHotKey alloc] init]; + [hotKey setName:@"ToggleShuffle"]; + [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"ToggleShuffle"]]]; + [hotKey setTarget:self]; + [hotKey setAction:@selector(toggleShuffle)]; + [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]]; } if ([df objectForKey:@"IncrementVolume"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"IncrementVolume" - combo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"IncrementVolume"]] - target:self action:@selector(incrementVolume)]; + hotKey = [[ITHotKey alloc] init]; + [hotKey setName:@"IncrementVolume"]; + [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"IncrementVolume"]]]; + [hotKey setTarget:self]; + [hotKey setAction:@selector(incrementVolume)]; + [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]]; } if ([df objectForKey:@"DecrementVolume"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"DecrementVolume" - combo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"DecrementVolume"]] - target:self action:@selector(decrementVolume)]; + hotKey = [[ITHotKey alloc] init]; + [hotKey setName:@"DecrementVolume"]; + [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"DecrementVolume"]]]; + [hotKey setTarget:self]; + [hotKey setAction:@selector(decrementVolume)]; + [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]]; } if ([df objectForKey:@"IncrementRating"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"IncrementRating" - combo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"IncrementRating"]] - target:self action:@selector(incrementRating)]; + hotKey = [[ITHotKey alloc] init]; + [hotKey setName:@"IncrementRating"]; + [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"IncrementRating"]]]; + [hotKey setTarget:self]; + [hotKey setAction:@selector(incrementRating)]; + [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]]; } if ([df objectForKey:@"DecrementRating"] != nil) { - [[ITHotKeyCenter sharedCenter] addHotKey:@"DecrementRating" - combo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"DecrementRating"]] - target:self action:@selector(decrementRating)]; + hotKey = [[ITHotKey alloc] init]; + [hotKey setName:@"DecrementRating"]; + [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"DecrementRating"]]]; + [hotKey setTarget:self]; + [hotKey setAction:@selector(decrementRating)]; + [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]]; } } diff --git a/PreferencesController.m b/PreferencesController.m index 1580fb6..086e2ec 100755 --- a/PreferencesController.m +++ b/PreferencesController.m @@ -1,7 +1,9 @@ #import "PreferencesController.h" #import "MainController.h" #import +#import #import +#import #define SENDER_STATE (([sender state] == NSOnState) ? YES : NO) @@ -339,40 +341,28 @@ static PreferencesController *prefs = nil; if ([currentHotKey isEqualToString:@"PlayPause"]) { [playPauseButton setTitle:string]; - //[[ITHotKeyCenter sharedCenter] addHotKey:@"PlayPause" combo:combo target:[MainController sharedController] action:@selector(playPause)]; } else if ([currentHotKey isEqualToString:@"NextTrack"]) { [nextTrackButton setTitle:string]; - //[[ITHotKeyCenter sharedCenter] addHotKey:@"NextTrack" combo:combo target:[MainController sharedController] action:@selector(nextSong)]; } else if ([currentHotKey isEqualToString:@"PrevTrack"]) { [previousTrackButton setTitle:string]; - //[[ITHotKeyCenter sharedCenter] addHotKey:@"PrevTrack" combo:combo target:[MainController sharedController] action:@selector(prevSong)]; } else if ([currentHotKey isEqualToString:@"ShowPlayer"]) { [showPlayerButton setTitle:string]; - //[[ITHotKeyCenter sharedCenter] addHotKey:@"ShowPlayer" combo:combo target:[MainController sharedController] action:@selector(showPlayer)]; } else if ([currentHotKey isEqualToString:@"TrackInfo"]) { [trackInfoButton setTitle:string]; - //[[ITHotKeyCenter sharedCenter] addHotKey:@"TrackInfo" combo:combo target:[MainController sharedController] action:@selector(showCurrentTrackInfo)]; } else if ([currentHotKey isEqualToString:@"UpcomingSongs"]) { [upcomingSongsButton setTitle:string]; - //[[ITHotKeyCenter sharedCenter] addHotKey:@"UpcomingSongs" combo:combo target:[MainController sharedController] action:@selector(showUpcomingSongs)]; } else if ([currentHotKey isEqualToString:@"IncrementVolume"]) { [volumeIncrementButton setTitle:string]; - //[[ITHotKeyCenter sharedCenter] addHotKey:@"IncrementVolume" combo:combo target:[MainController sharedController] action:@selector(incrementVolume)]; } else if ([currentHotKey isEqualToString:@"DecrementVolume"]) { [volumeDecrementButton setTitle:string]; - //[[ITHotKeyCenter sharedCenter] addHotKey:@"DecrementVolume" combo:combo target:[MainController sharedController] action:@selector(decrementVolume)]; } else if ([currentHotKey isEqualToString:@"IncrementRating"]) { [ratingIncrementButton setTitle:string]; - //[[ITHotKeyCenter sharedCenter] addHotKey:@"IncrementRating" combo:combo target:[MainController sharedController] action:@selector(incrementRating)]; } else if ([currentHotKey isEqualToString:@"DecrementRating"]) { [ratingDecrementButton setTitle:string]; - //[[ITHotKeyCenter sharedCenter] addHotKey:@"DecrementRating" combo:combo target:[MainController sharedController] action:@selector(decrementRating)]; } else if ([currentHotKey isEqualToString:@"ToggleShuffle"]) { [toggleShuffleButton setTitle:string]; - //[[ITHotKeyCenter sharedCenter] addHotKey:@"ToggleShuffle" combo:combo target:[MainController sharedController] action:@selector(toggleShuffle)]; } else if ([currentHotKey isEqualToString:@"ToggleLoop"]) { [toggleLoopButton setTitle:string]; - //[[ITHotKeyCenter sharedCenter] addHotKey:@"ToggleLoop" combo:combo target:[MainController sharedController] action:@selector(toggleLoop)]; } [controller setupHotKeys]; [self cancelHotKey:sender]; @@ -389,22 +379,13 @@ static PreferencesController *prefs = nil; { [currentHotKey autorelease]; currentHotKey = [key copy]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyEvent:) name:@"KeyBroadcasterEvent" object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyEvent:) name:ITKeyBroadcasterKeyEvent object:nil]; [NSApp beginSheet:keyComboPanel modalForWindow:window modalDelegate:self didEndSelector:nil contextInfo:nil]; } - (void)keyEvent:(NSNotification *)note { - NSDictionary *info = [note userInfo]; - short keyCode; - long modifiers; - ITKeyCombo *newCombo; - - keyCode = [[info objectForKey:@"KeyCode"] shortValue]; - modifiers = [[info objectForKey:@"Modifiers"] longValue]; - - newCombo = [[ITKeyCombo alloc] initWithKeyCode:keyCode modifiers:modifiers]; - [self setKeyCombo:newCombo]; + [self setKeyCombo:[[[note userInfo] objectForKey:@"keyCombo"] copy]]; } - (void)setKeyCombo:(ITKeyCombo *)newCombo @@ -512,6 +493,7 @@ static PreferencesController *prefs = nil; [playPauseButton setTitle:[anItem description]]; } else { [hotKeysDictionary setObject:[ITKeyCombo clearKeyCombo] forKey:@"PlayPause"]; + [playPauseButton setTitle:[[ITKeyCombo clearKeyCombo] description]]; } if ([df objectForKey:@"NextTrack"]) { @@ -520,6 +502,7 @@ static PreferencesController *prefs = nil; [nextTrackButton setTitle:[anItem description]]; } else { [hotKeysDictionary setObject:[ITKeyCombo clearKeyCombo] forKey:@"NextTrack"]; + [nextTrackButton setTitle:[[ITKeyCombo clearKeyCombo] description]]; } if ([df objectForKey:@"PrevTrack"]) { @@ -528,6 +511,7 @@ static PreferencesController *prefs = nil; [previousTrackButton setTitle:[anItem description]]; } else { [hotKeysDictionary setObject:[ITKeyCombo clearKeyCombo] forKey:@"PrevTrack"]; + [previousTrackButton setTitle:[[ITKeyCombo clearKeyCombo] description]]; } if ([df objectForKey:@"ShowPlayer"]) { @@ -536,6 +520,7 @@ static PreferencesController *prefs = nil; [showPlayerButton setTitle:[anItem description]]; } else { [hotKeysDictionary setObject:[ITKeyCombo clearKeyCombo] forKey:@"ShowPlayer"]; + [showPlayerButton setTitle:[[ITKeyCombo clearKeyCombo] description]]; } if ([df objectForKey:@"TrackInfo"]) { @@ -544,6 +529,7 @@ static PreferencesController *prefs = nil; [trackInfoButton setTitle:[anItem description]]; } else { [hotKeysDictionary setObject:[ITKeyCombo clearKeyCombo] forKey:@"TrackInfo"]; + [trackInfoButton setTitle:[[ITKeyCombo clearKeyCombo] description]]; } if ([df objectForKey:@"UpcomingSongs"]) { @@ -552,6 +538,7 @@ static PreferencesController *prefs = nil; [upcomingSongsButton setTitle:[anItem description]]; } else { [hotKeysDictionary setObject:[ITKeyCombo clearKeyCombo] forKey:@"UpcomingSongs"]; + [upcomingSongsButton setTitle:[[ITKeyCombo clearKeyCombo] description]]; } if ([df objectForKey:@"IncrementVolume"]) { @@ -560,6 +547,7 @@ static PreferencesController *prefs = nil; [volumeIncrementButton setTitle:[anItem description]]; } else { [hotKeysDictionary setObject:[ITKeyCombo clearKeyCombo] forKey:@"IncrementVolume"]; + [volumeIncrementButton setTitle:[[ITKeyCombo clearKeyCombo] description]]; } if ([df objectForKey:@"DecrementVolume"]) { @@ -568,6 +556,7 @@ static PreferencesController *prefs = nil; [volumeDecrementButton setTitle:[anItem description]]; } else { [hotKeysDictionary setObject:[ITKeyCombo clearKeyCombo] forKey:@"DecrementVolume"]; + [volumeDecrementButton setTitle:[[ITKeyCombo clearKeyCombo] description]]; } if ([df objectForKey:@"IncrementRating"]) { @@ -576,6 +565,7 @@ static PreferencesController *prefs = nil; [ratingIncrementButton setTitle:[anItem description]]; } else { [hotKeysDictionary setObject:[ITKeyCombo clearKeyCombo] forKey:@"IncrementRating"]; + [ratingIncrementButton setTitle:[[ITKeyCombo clearKeyCombo] description]]; } if ([df objectForKey:@"DecrementRating"]) { @@ -584,6 +574,7 @@ static PreferencesController *prefs = nil; [ratingDecrementButton setTitle:[anItem description]]; } else { [hotKeysDictionary setObject:[ITKeyCombo clearKeyCombo] forKey:@"DecrementRating"]; + [ratingDecrementButton setTitle:[[ITKeyCombo clearKeyCombo] description]]; } if ([df objectForKey:@"ToggleLoop"]) { @@ -592,6 +583,7 @@ static PreferencesController *prefs = nil; [toggleLoopButton setTitle:[anItem description]]; } else { [hotKeysDictionary setObject:[ITKeyCombo clearKeyCombo] forKey:@"ToggleLoop"]; + [toggleLoopButton setTitle:[[ITKeyCombo clearKeyCombo] description]]; } if ([df objectForKey:@"ToggleShuffle"]) { @@ -600,6 +592,7 @@ static PreferencesController *prefs = nil; [toggleShuffleButton setTitle:[anItem description]]; } else { [hotKeysDictionary setObject:[ITKeyCombo clearKeyCombo] forKey:@"ToggleShuffle"]; + [toggleShuffleButton setTitle:[[ITKeyCombo clearKeyCombo] description]]; } // Check current track info buttons