All of the submenus are done now. have to optimize now. Key equivalents
authorKent Sutherland <ksuther@ithinksw.com>
Sun, 11 May 2003 01:15:58 +0000 (01:15 +0000)
committerKent Sutherland <ksuther@ithinksw.com>
Sun, 11 May 2003 01:15:58 +0000 (01:15 +0000)
don't show yet either.

MenuController.m

index 72bee7a..c86e10e 100755 (executable)
             [tempItem setTag:MTMenuQuitItem];
             [tempItem setTarget:self];
         } else if ([nextObject isEqualToString:@"Current Track Info"]) {
+            //Handle playing radio too
             if (_currentPlaylist) {
                 NSString *title = [currentRemote currentSongTitle];
                 
                     action:nil
                     keyEquivalent:@""];
             [tempItem setSubmenu:[self ratingMenu]];
+            if (_playingRadio || !_currentPlaylist) {
+                [tempItem setEnabled:NO];
+            }
         } else if ([nextObject isEqualToString:@"Upcoming Songs"]) {
             tempItem = [menu addItemWithTitle:@"Upcoming Songs"
                     action:nil
                     keyEquivalent:@""];
             [tempItem setSubmenu:[self upcomingSongsMenu]];
+            if (_playingRadio || !_currentPlaylist) {
+                [tempItem setEnabled:NO];
+            }
         } else if ([nextObject isEqualToString:@"Playlists"]) {
             tempItem = [menu addItemWithTitle:@"Playlists"
                     action:nil
 - (NSMenu *)ratingMenu
 {
     NSMenu *ratingMenu = [[NSMenu alloc] initWithTitle:@""];
+    
+    if (_currentPlaylist && !_playingRadio) {
+        NSEnumerator *itemEnum;
+        id  anItem;
+        int itemTag = 0;
+        SEL itemSelector = @selector(performRatingMenuAction:);
+        
+        [ratingMenu addItemWithTitle:[NSString stringWithUTF8String:"☆☆☆☆☆"] action:nil keyEquivalent:@""];
+        [ratingMenu addItemWithTitle:[NSString stringWithUTF8String:"★☆☆☆☆"] action:nil keyEquivalent:@""];
+        [ratingMenu addItemWithTitle:[NSString stringWithUTF8String:"★★☆☆☆"] action:nil keyEquivalent:@""];
+        [ratingMenu addItemWithTitle:[NSString stringWithUTF8String:"★★★☆☆"] action:nil keyEquivalent:@""];
+        [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];
+            [anItem setTarget:self];
+            [anItem setTag:itemTag];
+            itemTag += 20;
+        }
+    }
+    
     return [ratingMenu autorelease];
 }
 
 - (NSMenu *)playlistsMenu
 {
     NSMenu *playlistsMenu = [[NSMenu alloc] initWithTitle:@""];
+    NSArray *playlists = [currentRemote playlists];
+    NSMenuItem *tempItem;
+    int i;
+    
+    for (i = 0; i < [playlists count]; i++) {
+        tempItem = [playlistsMenu addItemWithTitle:[playlists objectAtIndex:i] action:@selector(performPlaylistMenuAction:) keyEquivalent:@""];
+        [tempItem setTag:i + 1];
+        [tempItem setTarget:self];
+    }
+    
+    if (!_playingRadio && _currentPlaylist) {
+        [[playlistsMenu itemAtIndex:_currentPlaylist - 1] setState:NSOnState];
+    }
     return [playlistsMenu autorelease];
 }
 
 - (NSMenu *)eqMenu
 {
     NSMenu *eqMenu = [[NSMenu alloc] initWithTitle:@""];
+    NSArray *eqPresets = [currentRemote eqPresets];
+    NSMenuItem *tempItem;
+    int i;
+    
+    for (i = 0; i < [eqPresets count]; i++) {
+        NSString *name;
+       if ( ( name = [eqPresets objectAtIndex:i] ) ) {
+            tempItem = [eqMenu addItemWithTitle:name action:@selector(performEqualizerMenuAction:) keyEquivalent:@""];
+            [tempItem setTag:i];
+            [tempItem setTarget:self];
+       }
+    }
+    [[eqMenu itemAtIndex:([currentRemote currentEQPresetIndex] - 1)] setState:NSOnState];
     return [eqMenu autorelease];
 }