More fixes on timeout poop
authorKent Sutherland <ksuther@ithinksw.com>
Sun, 12 Sep 2004 23:41:03 +0000 (23:41 +0000)
committerKent Sutherland <ksuther@ithinksw.com>
Sun, 12 Sep 2004 23:41:03 +0000 (23:41 +0000)
MainController.m
MenuController.m
iTunesRemote.m

index da07757..4eb7891 100755 (executable)
 #import "StatusWindowController.h"
 #import "StatusItemHack.h"
 
+@interface NSMenu (MenuImpl)
+- (id)_menuImpl;
+@end
+
 @interface NSCarbonMenuImpl:NSObject
 {
     NSMenu *_menu;
@@ -435,7 +439,7 @@ static MainController *sharedController;
 {
     ITDebugLog(@"Menu clicked.");
        
-       if ([[self currentRemote] playerStateUniqueIdentifier] == nil) {
+       if ( ([[self currentRemote] playerStateUniqueIdentifier] == nil) && playerRunningState == ITMTRemotePlayerRunning ) {
                if ([statusItem isEnabled]) {
                        [statusItem setToolTip:@"iTunes not responding."];
                        [self clearHotKeys];
@@ -1393,6 +1397,8 @@ static MainController *sharedController;
             [refreshTimer invalidate];
             [refreshTimer release];
             refreshTimer = nil;
+                       [statusItem setEnabled:YES];
+                       [statusItem setToolTip:@"iTunes not running."];
             [self clearHotKeys];
             
             if ([df objectForKey:@"ShowPlayer"] != nil) {
index 7cc59fb..424957f 100755 (executable)
 {
     NSMenu *upcomingSongsMenu = [[NSMenu alloc] initWithTitle:@""];
     int numSongs = 0, numSongsInAdvance = [[NSUserDefaults standardUserDefaults] integerForKey:@"SongsInAdvance"];
-    
     NS_DURING
         numSongs = [[[MainController sharedController] currentRemote] numberOfSongsInPlaylistAtIndex:_currentPlaylist];
     NS_HANDLER
index b6b539c..34d49bd 100755 (executable)
 
 - (int)numberOfSongsInPlaylistAtIndex:(int)index
 {
+       /*
+               This method only returns the proper number if there's something playing.
+               This is because it gets the container of the current playlist so that it
+               gets the playlist index from the current source. Operating this way is fine,
+               since MT only ever calls this method when there is something playlist.
+               A working version of this that works in just the main source is in the
+               makePlaylistWithTerm:ofType: method.
+       */
     int temp1;
     ITDebugLog(@"Getting number of songs in playlist at index %i", index);
-    temp1 = [ITSendAEWithString([NSString stringWithFormat:@"kocl:type('cTrk'), '----':obj { form:'indx', want:type('cPly'), seld:long(%lu), from:obj { form:'prop', want:type('prop'), seld:type('ctnr'), from:obj { form:'prop', want:type('prop'), seld:type('pPla'), from:'null'() } } }",index], 'core', 'getd', &savedPSN) int32Value];
+    temp1 = (int)[ITSendAEWithString([NSString stringWithFormat:@"kocl:type('cTrk'), '----':obj { form:'indx', want:type('cPly'), seld:long(%lu), from:obj { form:'prop', want:type('prop'), seld:type('ctnr'), from:obj { form:'prop', want:type('prop'), seld:type('pPla'), from:'null'() } } }", index], 'core', 'cnte', &savedPSN) int32Value];
     ITDebugLog(@"Getting number of songs in playlist at index %i done", index);
     return temp1;
 }
 - (BOOL)makePlaylistWithTerm:(NSString *)term ofType:(int)type
 {
     int i;
-    
+       
     //Get fixed indexing status
     BOOL fixed = [ITSendAEWithString(@"'----':obj { form:'prop', want:type('prop'), seld:type('pFix'), from:'null'() }", 'core', 'getd', &savedPSN) booleanValue];
     
     //If MenuTunes playlist exists
     if ([ITSendAEWithString(@"'----':obj { form:'name', want:type('cPly'), seld:\"MenuTunes\", from:'null'() }", 'core', 'doex', &savedPSN) booleanValue]) {
         //Clear old MenuTunes playlist
-        int numSongs = [ITSendAEWithString(@"kocl:type('cTrk'), '----':obj { form:'name', want:type('cPly'), seld:\"MenuTunes\", from:obj { form:'prop', want:type('prop'), seld:type('ctnr'), from:obj { form:'prop', want:type('prop'), seld:type('pPla'), from:'null'() } } }", 'core', 'cnte', &savedPSN) int32Value];
+               int numSongs = [ITSendAEWithString(@"kocl:type('cTrk'), '----':obj { form:'name', want:type('cPly'), seld:\"MenuTunes\", from:'null'() }", 'core', 'cnte', &savedPSN) int32Value];
         for (i = 1; i <= numSongs; i++) {
             ITSendAEWithString(@"'----':obj { form:'indx', want:type('cTrk'), seld:long(1), from:obj { form:'name', want:type('cPly'), seld:\"MenuTunes\", from:'null'() } }", 'core', 'delo', &savedPSN);
         }