- (ITMTRemote *)loadRemote;
- (void)timerUpdate;
- (void)setLatestSongIdentifier:(NSString *)newIdentifier;
-- (void)showCurrentTrackInfo;
- (void)applicationLaunched:(NSNotification *)note;
- (void)applicationTerminated:(NSNotification *)note;
@end
- (ITMTRemote *)currentRemote
{
+ if ([networkController isConnectedToServer] && ![[networkController networkObject] isValid]) {
+ [self networkError:nil];
+ return nil;
+ }
return currentRemote;
}
if (result == 1) {
[[PreferencesController sharedPrefs] resetRemotePlayerTextFields];
currentRemote = [[[networkController networkObject] remote] retain];
+ [refreshTimer invalidate];
+ refreshTimer = [[NSTimer scheduledTimerWithTimeInterval:([networkController isConnectedToServer] ? 10.0 : 0.5)
+ target:self
+ selector:@selector(timerUpdate)
+ userInfo:nil
+ repeats:YES] retain];
[self timerUpdate];
ITDebugLog(@"Connection successful.");
return 1;
if ([networkController checkForServerAtHost:[df stringForKey:@"sharedPlayerHost"]]) {
ITDebugLog(@"Remote server found.");
[timer invalidate];
- if (![networkController isConnectedToServer]) {
+ if (![networkController isServerOn] && ![networkController isConnectedToServer]) {
[[StatusWindowController sharedController] showReconnectQueryWindow];
}
} else {
- (void)networkError:(NSException *)exception
{
ITDebugLog(@"Remote exception thrown: %@: %@", [exception name], [exception reason]);
- NSLog(@"%@", [exception reason]);
- if ([[exception name] isEqualToString:NSPortTimeoutException] && [networkController isConnectedToServer]) {
+ if ( ((exception == nil) || [[exception name] isEqualToString:NSPortTimeoutException]) && [networkController isConnectedToServer]) {
NSRunCriticalAlertPanel(@"Remote MenuTunes Disconnected", @"The MenuTunes server you were connected to stopped responding or quit. MenuTunes will revert back to the local player.", @"OK", nil, nil);
if ([self disconnectFromServer]) {
[[PreferencesController sharedPrefs] resetRemotePlayerTextFields];
refreshTimer = nil;
[self clearHotKeys];
playerRunningState = ITMTRemotePlayerNotRunning;
+
+ if ([df objectForKey:@"ShowPlayer"] != nil) {
+ ITHotKey *hotKey;
+ ITDebugLog(@"Setting up show player hot key.");
+ hotKey = [[ITHotKey alloc] init];
+ [hotKey setName:@"ShowPlayer"];
+ [hotKey setKeyCombo:[ITKeyCombo keyComboWithPlistRepresentation:[df objectForKey:@"ShowPlayer"]]];
+ [hotKey setTarget:self];
+ [hotKey setAction:@selector(showPlayer)];
+ [[ITHotKeyCenter sharedCenter] registerHotKey:[hotKey autorelease]];
+ }
}
NS_HANDLER
[self networkError:localException];