Stream track title change will trigger the status window. Play count
[MenuTunes.git] / MainController.m
index 8cb2643..7c60fb0 100755 (executable)
@@ -6,6 +6,7 @@
 #import <ITKit/ITHotKeyCenter.h>
 #import <ITKit/ITHotKey.h>
 #import <ITKit/ITKeyCombo.h>
+#import <ITKit/ITCategory-NSMenu.h>
 #import "StatusWindow.h"
 #import "StatusWindowController.h"
 #import "StatusItemHack.h"
@@ -810,6 +811,20 @@ static MainController *sharedController;
         [hotKey setAction:@selector(popupMenu)];
         [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]];
     }
+    
+    int i;
+    for (i = 0; i <= 5; i++) {
+        NSString *curName = [NSString stringWithFormat:@"SetRating%i", i];
+        if ([df objectForKey:curName] != nil) {
+            ITDebugLog(@"Setting up set rating %i hot key.", i);
+            hotKey = [[ITHotKey alloc] init];
+            [hotKey setName:curName];
+            [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:curName]]];
+            [hotKey setTarget:self];
+            [hotKey setAction:@selector(setRating:)];
+            [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]];
+        }
+    }
     ITDebugLog(@"Finished setting up hot keys.");
 }
 
@@ -915,7 +930,7 @@ static MainController *sharedController;
             }
         }
         
-        if ( [df boolForKey:@"showPlayCount"] ) {
+        if ( [df boolForKey:@"showPlayCount"] && ![self radioIsPlaying] ) {
             NS_DURING
                 playCount = [[self currentRemote] currentSongPlayCount];
             NS_HANDLER
@@ -976,8 +991,12 @@ static MainController *sharedController;
 
 - (void)popupMenu
 {
-    NSMenu *menu = [menuController menu];
-    [(NSCarbonMenuImpl *)[menu _menuImpl] popUpMenu:menu atLocation:[NSEvent mouseLocation] width:1 forView:nil withSelectedItem:-30 withFont:[NSFont menuFontOfSize:32]];
+    if (!_popped) {
+        NSMenu *menu = [menuController menu];
+        _popped = YES;
+        [(NSCarbonMenuImpl *)[menu _menuImpl] popUpMenu:menu atLocation:[NSEvent mouseLocation] width:1 forView:nil withSelectedItem:-30 withFont:[NSFont menuFontOfSize:32]];
+        _popped = NO;
+    }
 }
 
 - (void)incrementVolume
@@ -1078,6 +1097,13 @@ static MainController *sharedController;
     NS_ENDHANDLER
 }
 
+- (void)setRating:(ITHotKey *)sender
+{
+    float rating = ([[sender name] characterAtIndex:9] - 48) / 5.0;
+    [self selectSongRating:rating];
+    [statusWindowController showRatingWindowWithRating:rating];
+}
+
 - (void)toggleLoop
 {
     NS_DURING