X-Git-Url: http://git.ithinksw.org/MenuTunes.git/blobdiff_plain/72d97dfa58a2945c5d794d4f765db733a36360c1..9a9b400fdc1cd2f855279108d5ee7963212f2c37:/MainController.m?ds=inline diff --git a/MainController.m b/MainController.m index 2a1e7dc..50b078d 100755 --- a/MainController.m +++ b/MainController.m @@ -98,11 +98,32 @@ static MainController *sharedController; - (void)applicationDidFinishLaunching:(NSNotification *)note { + NSString *iTunesPath = [df stringForKey:@"CustomPlayerPath"]; + NSDictionary *iTunesInfoPlist; + float iTunesVersion; + //Turn on debug mode if needed - if ([df boolForKey:@"ITDebugMode"]) { + /*if ((GetCurrentKeyModifiers() & (controlKey | rightControlKey)) != 0) + if ((GetCurrentKeyModifiers() & (optionKey | rightOptionKey)) != 0) + if ((GetCurrentKeyModifiers() & (shiftKey | rightShiftKey)) != 0)*/ + if ([df boolForKey:@"ITDebugMode"] || ((GetCurrentKeyModifiers() & (controlKey | rightControlKey)) != 0)) { SetITDebugMode(YES); + [[StatusWindowController sharedController] showDebugModeEnabledWindow]; } - + + //Check if iTunes 4.7 or later is installed + if (!iTunesPath) { + iTunesPath = [[NSWorkspace sharedWorkspace] fullPathForApplication:@"iTunes.app"]; + } + iTunesInfoPlist = [[NSBundle bundleWithPath:iTunesPath] infoDictionary]; + iTunesVersion = [[iTunesInfoPlist objectForKey:@"CFBundleVersion"] floatValue]; + ITDebugLog(@"iTunes version found: %f.", iTunesVersion); + if (iTunesVersion >= 4.7) { + _needsPolling = NO; + } else { + _needsPolling = YES; + } + if (([df integerForKey:@"appVersion"] < 1200) && ([df integerForKey:@"SongsInAdvance"] > 0)) { [df removePersistentDomainForName:@"com.ithinksw.menutunes"]; [df synchronize]; @@ -189,13 +210,6 @@ static MainController *sharedController; _open = YES; } -- (void)applicationDidBecomeActive:(NSNotification *)note -{ - if (_open && !blinged && ![NSApp mainWindow] && ![[StatusWindow sharedWindow] isVisible]) { - [[MainController sharedController] showPreferences]; - } -} - - (ITMTRemote *)loadRemote { NSString *folderPath = [[NSBundle mainBundle] builtInPlugInsPath]; @@ -308,7 +322,7 @@ static MainController *sharedController; if (blinged) { [statusItem setEnabled:YES]; [[ITHotKeyCenter sharedCenter] setEnabled:YES]; - if (![refreshTimer isValid]) { + if (_needsPolling && ![refreshTimer isValid]) { [refreshTimer release]; refreshTimer = [[NSTimer scheduledTimerWithTimeInterval:([networkController isConnectedToServer] ? 10.0 : 0.5) target:self @@ -388,14 +402,12 @@ static MainController *sharedController; if (refreshTimer && identifier == nil) { if ([statusItem isEnabled]) { [statusItem setToolTip:@"iTunes not responding."]; - [[ITHotKeyCenter sharedCenter] setEnabled:NO]; } [statusItem setEnabled:NO]; return; } else if (![statusItem isEnabled]) { [statusItem setEnabled:YES]; [statusItem setToolTip:_toolTip]; - [[ITHotKeyCenter sharedCenter] setEnabled:YES]; return; } @@ -438,7 +450,7 @@ static MainController *sharedController; } else if (title) { _toolTip = title; } else { - _toolTip = @"No Song Playing"; + _toolTip = NSLocalizedString(@"noSongPlaying", @"No song is playing."); } [statusItem setToolTip:_toolTip]; } else { @@ -464,20 +476,18 @@ static MainController *sharedController; if (([[self currentRemote] playerStateUniqueIdentifier] == nil) && playerRunningState == ITMTRemotePlayerRunning) { if (refreshTimer) { if ([statusItem isEnabled]) { - [statusItem setToolTip:@"iTunes not responding."]; - [[ITHotKeyCenter sharedCenter] setEnabled:NO]; + [statusItem setToolTip:NSLocalizedString(@"iTunesNotResponding", @"iTunes is not responding.")]; } [statusItem setEnabled:NO]; } else { NSMenu *menu = [[NSMenu alloc] init]; - [menu addItemWithTitle:@"iTunes Not Responding" action:nil keyEquivalent:@""]; + [menu addItemWithTitle:NSLocalizedString(@"iTunesNotResponding", @"iTunes is not responding.") action:nil keyEquivalent:@""]; [statusItem setMenu:[menu autorelease]]; } return; } else if (![statusItem isEnabled]) { [statusItem setEnabled:YES]; [statusItem setToolTip:_toolTip]; - [[ITHotKeyCenter sharedCenter] setEnabled:YES]; return; } @@ -500,12 +510,12 @@ static MainController *sharedController; - (void)trackChanged:(NSNotification *)note { //If we're running the timer, shut it off since we don't need it! - if (refreshTimer && [refreshTimer isValid]) { + /*if (refreshTimer && [refreshTimer isValid]) { ITDebugLog(@"Invalidating refresh timer."); [refreshTimer invalidate]; [refreshTimer release]; refreshTimer = nil; - } + }*/ if (![self songChanged]) { return; @@ -554,7 +564,7 @@ static MainController *sharedController; } else if (title) { _toolTip = title; } else { - _toolTip = @"No Song Playing"; + _toolTip = NSLocalizedString(@"noSongPlaying", @"No song is playing.");; } [statusItem setToolTip:_toolTip]; } else { @@ -1003,7 +1013,7 @@ static MainController *sharedController; NSImage *art = nil; int rating = -1; int playCount = -1; - + ITDebugLog(@"Showing track info status window."); NS_DURING @@ -1355,14 +1365,16 @@ static MainController *sharedController; [self setupHotKeys]; //playerRunningState = ITMTRemotePlayerRunning; playerRunningState = [[self currentRemote] playerRunningState]; - if (refreshTimer) { - [refreshTimer invalidate]; + if (_needsPolling) { + if (refreshTimer) { + [refreshTimer invalidate]; + } + refreshTimer = [[NSTimer scheduledTimerWithTimeInterval:([networkController isConnectedToServer] ? 10.0 : 0.5) + target:self + selector:@selector(timerUpdate) + userInfo:nil + repeats:YES] retain]; } - 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; @@ -1498,11 +1510,13 @@ static MainController *sharedController; [[self currentRemote] begin]; [self setLatestSongIdentifier:@""]; [self timerUpdate]; - refreshTimer = [[NSTimer scheduledTimerWithTimeInterval:([networkController isConnectedToServer] ? 10.0 : 0.5) - target:self - selector:@selector(timerUpdate) - userInfo:nil - repeats:YES] retain]; + if (_needsPolling) { + refreshTimer = [[NSTimer scheduledTimerWithTimeInterval:([networkController isConnectedToServer] ? 10.0 : 0.5) + target:self + selector:@selector(timerUpdate) + userInfo:nil + repeats:YES] retain]; + } //[NSThread detachNewThreadSelector:@selector(startTimerInNewThread) toTarget:self withObject:nil]; if (![df boolForKey:@"UsePollingOnly"]) { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(trackChanged:) name:@"ITMTTrackChanged" object:nil]; @@ -1524,7 +1538,7 @@ static MainController *sharedController; [refreshTimer invalidate]; [refreshTimer release]; refreshTimer = nil; - [[NSNotificationCenter defaultCenter] removeObserver:self]; + [[NSNotificationCenter defaultCenter] removeObserver:self name:@"ITMTTrackChanged" object:nil]; [statusItem setEnabled:YES]; [statusItem setToolTip:@"iTunes not running."]; [self clearHotKeys]; @@ -1560,6 +1574,13 @@ static MainController *sharedController; [[NSStatusBar systemStatusBar] removeStatusItem:statusItem]; } +- (void)applicationDidBecomeActive:(NSNotification *)note +{ + //This appears to not work in 10.4 + if (_open && !blinged && ![[ITAboutBox sharedController] isVisible] && ![NSApp mainWindow] && ([[StatusWindow sharedWindow] exitMode] == ITTransientStatusWindowExitAfterDelay)) { + [[MainController sharedController] showPreferences]; + } +} /*************************************************************************/ #pragma mark -