From 9cebb1f7452afe422cb940e970c9f30b5180a239 Mon Sep 17 00:00:00 2001 From: Kent Sutherland Date: Sat, 11 Sep 2004 01:18:39 +0000 Subject: [PATCH] Should disable the status item when iTunes is locked. --- MainController.h | 2 +- MainController.m | 21 +++++++++++++++------ MenuController.m | 6 ------ StatusItemHack.m | 4 +++- iTunesRemote.m | 14 ++++++++++---- 5 files changed, 29 insertions(+), 18 deletions(-) diff --git a/MainController.h b/MainController.h index 21848e7..ca26af8 100755 --- a/MainController.h +++ b/MainController.h @@ -34,7 +34,7 @@ //Used in updating the menu automatically NSTimer *refreshTimer; - NSString *_latestSongIdentifier; + NSString *_latestSongIdentifier, *_toolTip; StatusWindowController *statusWindowController; //Shows status windows MenuController *menuController; diff --git a/MainController.m b/MainController.m index 40f50ce..8784dd1 100755 --- a/MainController.m +++ b/MainController.m @@ -357,7 +357,17 @@ static MainController *sharedController; - (void)timerUpdate { - if ( [self songChanged] && (timerUpdating != YES) && (playerRunningState == ITMTRemotePlayerRunning) ) { + if ([[self currentRemote] playerStateUniqueIdentifier] == nil) { + [statusItem setEnabled:NO]; + [statusItem setToolTip:@"iTunes not responding."]; + return; + } else if (![statusItem isEnabled]) { + [statusItem setEnabled:YES]; + [statusItem setToolTip:_toolTip]; + return; + } + + if ( [self songChanged] && (timerUpdating != YES) && (playerRunningState == ITMTRemotePlayerRunning) ) { ITDebugLog(@"The song changed."); if ([df boolForKey:@"runScripts"]) { NSArray *scripts = [[NSFileManager defaultManager] directoryContentsAtPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Library/Application Support/MenuTunes/Scripts"]]; @@ -392,16 +402,15 @@ static MainController *sharedController; if ( [df boolForKey:@"showToolTip"] ) { NSString *artist = [[self currentRemote] currentSongArtist]; NSString *title = [[self currentRemote] currentSongTitle]; - NSString *toolTip; ITDebugLog(@"Creating status item tooltip."); if (artist) { - toolTip = [NSString stringWithFormat:@"%@ - %@", artist, title]; + _toolTip = [NSString stringWithFormat:@"%@ - %@", artist, title]; } else if (title) { - toolTip = title; + _toolTip = title; } else { - toolTip = @"No Song Playing"; + _toolTip = @"No Song Playing"; } - [statusItem setToolTip:toolTip]; + [statusItem setToolTip:_toolTip]; } else { [statusItem setToolTip:nil]; } diff --git a/MenuController.m b/MenuController.m index e65cc1d..7cc59fb 100755 --- a/MenuController.m +++ b/MenuController.m @@ -403,7 +403,6 @@ NS_DURING [[_eqMenu itemAtIndex:0] setState:[mtr equalizerEnabled] ? NSOnState : NSOffState]; [[_eqMenu itemAtIndex:([mtr currentEQPresetIndex] + 1)] setState:NSOnState]; - [[_eqMenu itemAtIndex:([mtr currentEQPresetIndex] - 1)] setState:NSOnState]; NS_HANDLER [[MainController sharedController] networkError:localException]; NS_ENDHANDLER @@ -748,11 +747,6 @@ tempItem = [eqMenu addItemWithTitle:@"Enabled" action:@selector(performEqualizerMenuAction:) keyEquivalent:@""]; [tempItem setTag:-1]; [tempItem setTarget:self]; - NS_DURING - [tempItem setState:[[[MainController sharedController] currentRemote] equalizerEnabled] ? NSOnState : NSOffState]; - NS_HANDLER - [[MainController sharedController] networkError:localException]; - NS_ENDHANDLER [eqMenu addItem:[NSMenuItem separatorItem]]; for (i = 0; i < [eqPresets count]; i++) { diff --git a/StatusItemHack.m b/StatusItemHack.m index 62e8369..d493046 100755 --- a/StatusItemHack.m +++ b/StatusItemHack.m @@ -10,7 +10,9 @@ - (void)mouseDown:(NSEvent *)event { - [[MainController sharedController] menuClicked]; + if ([self isEnabled]) { + [[MainController sharedController] menuClicked]; + } [super mouseDown:event]; } diff --git a/iTunesRemote.m b/iTunesRemote.m index 7bbe551..b6b539c 100755 --- a/iTunesRemote.m +++ b/iTunesRemote.m @@ -376,10 +376,17 @@ { NSString *temp1; ITDebugLog(@"Getting current unique identifier."); - SInt32 cls = [ITSendAEWithString(@"'----':obj { form:'prop', want:type('prop'), seld:type('pcls'), from:obj { form:'prop', want:type('prop'), seld:type('pTrk'), from:'null'() } }", 'core', 'getd', &savedPSN) int32Value]; + NSAppleEventDescriptor *descriptor = ITSendAEWithString(@"'----':obj { form:'prop', want:type('prop'), seld:type('pcls'), from:obj { form:'prop', want:type('prop'), seld:type('pTrk'), from:'null'() } }", 'core', 'getd', &savedPSN); + if (descriptor == nil) { + return nil; + } + SInt32 cls = [descriptor int32Value]; if ( ([self currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist) || (cls == 'cURT') ) { + NSString *bad = [NSString stringWithUTF8String:"浳湧"]; temp1 = [ITSendAEWithKey('pStT', 'core', 'getd', &savedPSN) stringValue]; - NSLog(@"%@", temp1); + if ([temp1 isEqualToString:bad]) { + temp1 = [ITSendAEWithString(@"'----':obj { form:'prop', want:type('prop'), seld:type('pnam'), from:obj { form:'prop', want:type('prop'), seld:type('pTrk'), from:'null'() } }", 'core', 'getd', &savedPSN) stringValue]; + } } else { temp1 = [NSString stringWithFormat:@"%i-%i", [self currentPlaylistIndex], [ITSendAEWithString(@"'----':obj { form:'prop', want:type('prop'), seld:type('pDID'), from:obj { form:'prop', want:type('prop'), seld:type('pTrk'), from:'null'() } }", 'core', 'getd', &savedPSN) int32Value]]; } @@ -406,7 +413,6 @@ NSString *bad = [NSString stringWithUTF8String:"浳湧"]; temp1 = [ITSendAEWithKey('pStT', 'core', 'getd', &savedPSN) stringValue]; if ([temp1 isEqualToString:bad]) { - NSLog(@"arrrr"); temp1 = [ITSendAEWithString(@"'----':obj { form:'prop', want:type('prop'), seld:type('pnam'), from:obj { form:'prop', want:type('prop'), seld:type('pTrk'), from:'null'() } }", 'core', 'getd', &savedPSN) stringValue]; } temp1 = [temp1 stringByAppendingString:@" (Stream)"]; @@ -502,7 +508,7 @@ NSString *finalString; ITDebugLog(@"Getting current song elapsed time."); - final = (long)[ITSendAEWithString(@"'----':obj { form:'prop', want:type('prop'), seld:type('pPos'), from:'null'() }", 'core', 'getd', &savedPSN) int32Value]; + final = (long)[ITSendAEWithKey('pPos', 'core', 'getd', &savedPSN) int32Value]; finalString = [self formatTimeInSeconds:final]; ITDebugLog(@"Getting current song elapsed time done."); return finalString; -- 2.20.1