Even more fixage! Now when you reconnect after the host has quit and relaunched while...
[MenuTunes.git] / MainController.m
index a8c28d0..4417228 100755 (executable)
@@ -334,10 +334,6 @@ static MainController *sharedController;
 
 - (void)timerUpdate
 {
-    if ([networkController isConnectedToServer]) {
-        [statusItem setMenu:[menuController menu]];
-    }
-    
     if ( [self songChanged] && (timerUpdating != YES) && (playerRunningState == ITMTRemotePlayerRunning) ) {
         ITDebugLog(@"The song changed.");
         
@@ -358,7 +354,7 @@ static MainController *sharedController;
         }
         
         timerUpdating = YES;
-        [_statusItem setEnabled:NO];
+        [statusItem setEnabled:NO];
         
         NS_DURING
             latestPlaylistClass = [[self currentRemote] currentPlaylistClass];
@@ -392,7 +388,11 @@ static MainController *sharedController;
         NS_ENDHANDLER
         
         timerUpdating = NO;
-        [_statusItem setEnabled:YES];
+        [statusItem setEnabled:YES];
+    }
+    
+    if ([networkController isConnectedToServer]) {
+        [statusItem setMenu:[menuController menu]];
     }
 }
 
@@ -1091,6 +1091,10 @@ static MainController *sharedController;
     if (result == 1) {
         [[PreferencesController sharedPrefs] resetRemotePlayerTextFields];
         currentRemote = [[[networkController networkObject] remote] retain];
+        
+        [self setupHotKeys];
+        playerRunningState = ITMTRemotePlayerRunning;
+        
         [refreshTimer invalidate];
         refreshTimer = [[NSTimer scheduledTimerWithTimeInterval:([networkController isConnectedToServer] ? 10.0 : 0.5)
                                 target:self
@@ -1119,6 +1123,12 @@ static MainController *sharedController;
     [currentRemote release];
     currentRemote = [remoteArray objectAtIndex:0];
     [networkController disconnect];
+    
+    if ([[self currentRemote] playerRunningState] == ITMTRemotePlayerRunning) {
+        [self applicationLaunched:nil];
+    } else {
+        [self applicationTerminated:nil];
+    }
     [self timerUpdate];
     return YES;
 }