From 3901916d25083f444f6568081a70308164c4f833 Mon Sep 17 00:00:00 2001 From: Kent Sutherland Date: Sat, 17 May 2003 20:17:56 +0000 Subject: [PATCH] Lots of fun changes. Reworked the hotkeys in prefs. Fixed bugs in MenuController. Added hotkey support for rating and song and shuffle and loop. Shuffle and loop don't work in iTunesRemote yet though. Made hotkey text field in prefs unselectable, because it looks better like that. --- English.lproj/Preferences.nib/info.nib | 2 +- .../Preferences.nib/keyedobjects.nib | Bin 39991 -> 39991 bytes MainController.m | 92 ++++++++++++++++-- MenuController.m | 45 +++++++-- PreferencesController.m | 71 ++++++++------ iTunesRemote.m | 5 +- 6 files changed, 165 insertions(+), 50 deletions(-) diff --git a/English.lproj/Preferences.nib/info.nib b/English.lproj/Preferences.nib/info.nib index 783d23f..8ed99ef 100755 --- a/English.lproj/Preferences.nib/info.nib +++ b/English.lproj/Preferences.nib/info.nib @@ -25,6 +25,6 @@ 6 IBSystem Version - 6L29 + 6L60 diff --git a/English.lproj/Preferences.nib/keyedobjects.nib b/English.lproj/Preferences.nib/keyedobjects.nib index 8de35c3a052f21a6a542623e3adb71af111d39e5..fc202f9eb57876c00c200a446774d0273829b38a 100755 GIT binary patch delta 6336 zcmaJ_2Ygh;)}M0k&g|0e(1IY5Dj*1K62J-qQl$qef*_DUHrc)#NU|H2o1F_HEn!1R z2vraZPt*v?(}(iuQw*X=mGV>`C`AlK!~##=xf=-K^Y?v8W_Rj2|8wTdf6nBccgZ{N zk~gMXBG0o0Y$03Bir7-iW>(Bru$62zTca?xj;&`evW@Iz_8R*e+sfWz??MV9b#XzW9&Hl7dyp%U}xA_?-?BZN`3QH{kO> z>?TJXa|`GA2X4ca5nhYe;dQy-^?5_yh⪼@#7+6X@c@2` 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 1.0) { + volume = 1.0; + } + [currentRemote setVolume:volume]; + + //Show volume status window +} + +- (void)decrementVolume +{ + float volume = [currentRemote volume]; + volume -= 0.2; + if (volume < 0.0) { + volume = 0.0; + } + [currentRemote setVolume:volume]; + + //Show volume status window +} + +- (void)incrementRating +{ + float rating = [currentRemote currentSongRating]; + rating += 0.2; + if (rating > 1.0) { + rating = 1.0; + } + [currentRemote setCurrentSongRating:rating]; + + //Show rating status window +} + +- (void)decrementRating +{ + float rating = [currentRemote currentSongRating]; + rating -= 0.2; + if (rating < 0.0) { + rating = 0.0; + } + [currentRemote setCurrentSongRating:rating]; + + //Show rating status window +} + +- (void)toggleLoop +{ + ITMTRemotePlayerRepeatMode repeatMode = [currentRemote repeatMode]; + + switch (repeatMode) { + case ITMTRemotePlayerRepeatOff: + repeatMode = ITMTRemotePlayerRepeatAll; + break; + case ITMTRemotePlayerRepeatAll: + repeatMode = ITMTRemotePlayerRepeatOne; + break; + case ITMTRemotePlayerRepeatOne: + repeatMode = ITMTRemotePlayerRepeatOff; + break; + } + [currentRemote setRepeatMode:repeatMode]; + + //Show loop status window +} + +- (void)toggleShuffle +{ + [currentRemote setShuffleEnabled:![currentRemote shuffleEnabled]]; + //Show shuffle status window +} + /*************************************************************************/ #pragma mark - #pragma mark WORKSPACE NOTIFICATION HANDLERS @@ -455,6 +528,7 @@ static MainController *sharedController; - (void)applicationLaunched:(NSNotification *)note { if (!note || [[[note userInfo] objectForKey:@"NSApplicationName"] isEqualToString:[currentRemote playerFullName]]) { + [self setLatestSongIdentifier:@""]; [self timerUpdate]; [NSThread detachNewThreadSelector:@selector(startTimerInNewThread) toTarget:self withObject:nil]; [self setupHotKeys]; diff --git a/MenuController.m b/MenuController.m index b1ed0db..0344308 100755 --- a/MenuController.m +++ b/MenuController.m @@ -8,12 +8,16 @@ #import "MenuController.h" #import "NewMainController.h" +#import "HotKeyCenter.h" +#import "KeyCombo.h" @interface MenuController (SubmenuMethods) - (NSMenu *)ratingMenu; - (NSMenu *)upcomingSongsMenu; - (NSMenu *)playlistsMenu; - (NSMenu *)eqMenu; +- (void)setKeyEquivalentForCode:(short)code andModifiers:(long)modifiers + onItem:(NSMenuItem *)item; @end @implementation MenuController @@ -33,6 +37,8 @@ NSEnumerator *enumerator = [menuArray objectEnumerator]; NSString *nextObject; NSMenuItem *tempItem; + NSEnumerator *itemEnum; + KeyCombo *keyCombo; //Get the information _currentPlaylist = [currentRemote currentPlaylistIndex]; @@ -65,6 +71,12 @@ [tempItem setTag:MTMenuPlayPauseItem]; [tempItem setTarget:self]; + if ( (keyCombo = [[HotKeyCenter sharedCenter] keyComboForName:@"PlayPause"]) ) { + [self setKeyEquivalentForCode:[keyCombo keyCode] + andModifiers:[keyCombo modifiers] + onItem:tempItem]; + } + switch ([currentRemote playerPlayingState]) { case ITMTRemotePlayerPlaying: [tempItem setTitle:@"Pause"]; @@ -80,6 +92,13 @@ tempItem = [menu addItemWithTitle:@"Next Track" action:@selector(performMainMenuAction:) keyEquivalent:@""]; + + if ( (keyCombo = [[HotKeyCenter sharedCenter] keyComboForName:@"NextTrack"]) ) { + [self setKeyEquivalentForCode:[keyCombo keyCode] + andModifiers:[keyCombo modifiers] + onItem:tempItem]; + } + if (_currentPlaylist) { [tempItem setTag:MTMenuNextTrackItem]; [tempItem setTarget:self]; @@ -88,6 +107,13 @@ tempItem = [menu addItemWithTitle:@"Previous Track" action:@selector(performMainMenuAction:) keyEquivalent:@""]; + + if ( (keyCombo = [[HotKeyCenter sharedCenter] keyComboForName:@"PrevTrack"]) ) { + [self setKeyEquivalentForCode:[keyCombo keyCode] + andModifiers:[keyCombo modifiers] + onItem:tempItem]; + } + if (_currentPlaylist) { [tempItem setTag:MTMenuPreviousTrackItem]; [tempItem setTarget:self]; @@ -143,6 +169,13 @@ keyEquivalent:@""]; [tempItem setSubmenu:_ratingMenu]; [tempItem setTag:1]; + + itemEnum = [[_ratingMenu itemArray] objectEnumerator]; + while ( (tempItem = [itemEnum nextObject]) ) { + [tempItem setState:NSOffState]; + } + + [[_ratingMenu itemAtIndex:([currentRemote currentSongRating] * 5)] setState:NSOnState]; if (_playingRadio || !_currentPlaylist) { [tempItem setEnabled:NO]; } @@ -167,6 +200,12 @@ keyEquivalent:@""]; [tempItem setSubmenu:_eqMenu]; [tempItem setTag:4]; + + itemEnum = [[_eqMenu itemArray] objectEnumerator]; + while ( (tempItem = [itemEnum nextObject]) ) { + [tempItem setState:NSOffState]; + } + [[_eqMenu itemAtIndex:([currentRemote currentEQPresetIndex] - 1)] setState:NSOnState]; } } [_currentMenu release]; @@ -224,8 +263,6 @@ [ratingMenu addItemWithTitle:[NSString stringWithUTF8String:"★★★★☆"] action:nil keyEquivalent:@""]; [ratingMenu addItemWithTitle:[NSString stringWithUTF8String:"★★★★★"] action:nil keyEquivalent:@""]; - [[ratingMenu itemAtIndex:([currentRemote currentSongRating] * 5)] setState:NSOnState]; - itemEnum = [[ratingMenu itemArray] objectEnumerator]; while ( (anItem = [itemEnum nextObject]) ) { [anItem setAction:itemSelector]; @@ -297,7 +334,6 @@ [tempItem setTarget:self]; } } - [[eqMenu itemAtIndex:([currentRemote currentEQPresetIndex] - 1)] setState:NSOnState]; return eqMenu; } @@ -308,17 +344,14 @@ case MTMenuPlayPauseItem: NSLog(@"MenuController: Play/Pause"); [[MainController sharedController] playPause]; - //We're gonna have to change the Play menu item to Pause here too. break; case MTMenuFastForwardItem: NSLog(@"MenuController: Fast Forward"); [[MainController sharedController] fastForward]; - //make sure play/pause item says sane through this break; case MTMenuRewindItem: NSLog(@"MenuController: Rewind"); [[MainController sharedController] rewind]; - //make sure play/pause item says sane through this break; case MTMenuPreviousTrackItem: NSLog(@"MenuController: Previous Track"); diff --git a/PreferencesController.m b/PreferencesController.m index 63e7101..802fdcb 100755 --- a/PreferencesController.m +++ b/PreferencesController.m @@ -1,5 +1,5 @@ #import "PreferencesController.h" -#import "MainController.h" +#import "NewMainController.h" #import "HotKeyCenter.h" #import @@ -296,7 +296,6 @@ static PreferencesController *prefs = nil; NSString *string = [combo userDisplayRep]; NSEnumerator *enumerator = [hotKeysDictionary keyEnumerator]; NSString *enumKey; - BOOL duplicateCombo = NO; if (string == nil) { string = @""; @@ -343,35 +342,45 @@ static PreferencesController *prefs = nil; } } - if (!duplicateCombo) { - [hotKeysDictionary setObject:combo forKey:currentHotKey]; - [df setKeyCombo: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]; - } + [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]; } diff --git a/iTunesRemote.m b/iTunesRemote.m index babfb96..529cd67 100755 --- a/iTunesRemote.m +++ b/iTunesRemote.m @@ -213,7 +213,7 @@ - (float)currentSongRating { - return [[ITAppleEventCenter sharedCenter] + return (float)[[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pRte" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:[self iTunesPSN]] / 100.0; } @@ -261,8 +261,7 @@ - (float)volume { - long vol = [[ITAppleEventCenter sharedCenter] sendAEWithRequestedKeyForNumber:@"pVol" eventClass:@"core" eventID:@"getd" appPSN:[self iTunesPSN]]; - return vol / 100; + return (float)[[ITAppleEventCenter sharedCenter] sendAEWithRequestedKeyForNumber:@"pVol" eventClass:@"core" eventID:@"getd" appPSN:[self iTunesPSN]] / 100; } - (BOOL)setVolume:(float)volume -- 2.20.1