Lots of fun changes. Reworked the hotkeys in prefs. Fixed bugs in
[MenuTunes.git] / MenuController.m
index b1ed0db..0344308 100755 (executable)
@@ -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];
             [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"];
             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];
             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];
                     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];
             }
                     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];
         [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];
             [tempItem setTarget:self];
        }
     }
-    [[eqMenu itemAtIndex:([currentRemote currentEQPresetIndex] - 1)] setState:NSOnState];
     return eqMenu;
 }
 
         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");