X-Git-Url: http://git.ithinksw.org/MenuTunes.git/blobdiff_plain/635a5437a4d35597ac0fce8c5f7bcb3dd406d5e3..bc4fa9cf6435c18c42de06c478480c6f6673ca4b:/MenuController.m diff --git a/MenuController.m b/MenuController.m index a38ec5b..0190406 100755 --- a/MenuController.m +++ b/MenuController.m @@ -8,6 +8,7 @@ #import "MenuController.h" #import "MainController.h" +#import "NetworkController.h" #import "ITMTRemote.h" #import #import @@ -46,13 +47,14 @@ NSEnumerator *itemEnum; ITHotKey *hotKey; NSArray *hotKeys = [[ITHotKeyCenter sharedCenter] allHotKeys]; - int currentSongRating; + ITMTRemote *mtr = [[MainController sharedController] currentRemote]; + int currentSongRating = 0; //Get the information NS_DURING - _currentPlaylist = [[[MainController sharedController] currentRemote] currentPlaylistIndex]; - _playingRadio = ([[[MainController sharedController] currentRemote] currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist); - currentSongRating = ( [[[MainController sharedController] currentRemote] currentSongRating] != -1 ); + _currentPlaylist = [mtr currentPlaylistIndex]; + _playingRadio = ([mtr currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist); + currentSongRating = ( [mtr currentSongRating] != -1 ); NS_HANDLER [[MainController sharedController] networkError:localException]; NS_ENDHANDLER @@ -105,7 +107,7 @@ ITDebugLog(@"Set \"Play\"/\"Pause\" menu item's title to correct state."); NS_DURING - switch ([[[MainController sharedController] currentRemote] playerPlayingState]) { + switch ([mtr playerPlayingState]) { case ITMTRemotePlayerPlaying: [tempItem setTitle:NSLocalizedString(@"pause", @"Pause")]; break; @@ -182,7 +184,7 @@ NS_DURING tempItem = [menu addItemWithTitle:[NSString stringWithFormat:@"%@ %@", NSLocalizedString(@"show", @"Show"), - [[[MainController sharedController] currentRemote] playerSimpleName]] + [mtr playerSimpleName]] action:@selector(performMainMenuAction:) keyEquivalent:@""]; NS_HANDLER @@ -225,9 +227,9 @@ ITDebugLog(@"Check to see if a Track is playing..."); //Handle playing radio too if (_currentPlaylist) { - NSString *title; + NSString *title = nil; NS_DURING - title = [[[MainController sharedController] currentRemote] currentSongTitle]; + title = [mtr currentSongTitle]; NS_HANDLER [[MainController sharedController] networkError:localException]; NS_ENDHANDLER @@ -243,9 +245,9 @@ if (!_playingRadio) { if ([defaults boolForKey:@"showAlbum"]) { - NSString *curAlbum; + NSString *curAlbum = nil; NS_DURING - curAlbum = [[[MainController sharedController] currentRemote] currentSongAlbum]; + curAlbum = [mtr currentSongAlbum]; NS_HANDLER [[MainController sharedController] networkError:localException]; NS_ENDHANDLER @@ -257,9 +259,9 @@ } if ([defaults boolForKey:@"showArtist"]) { - NSString *curArtist; + NSString *curArtist = nil; NS_DURING - curArtist = [[[MainController sharedController] currentRemote] currentSongArtist]; + curArtist = [mtr currentSongArtist]; NS_HANDLER [[MainController sharedController] networkError:localException]; NS_ENDHANDLER @@ -271,9 +273,9 @@ } if ([defaults boolForKey:@"showComposer"]) { - NSString *curComposer; + NSString *curComposer = nil; NS_DURING - curComposer = [[[MainController sharedController] currentRemote] currentSongComposer]; + curComposer = [mtr currentSongComposer]; NS_HANDLER [[MainController sharedController] networkError:localException]; NS_ENDHANDLER @@ -285,9 +287,9 @@ } if ([defaults boolForKey:@"showTrackNumber"]) { - int track; + int track = 0; NS_DURING - track = [[[MainController sharedController] currentRemote] currentSongTrack]; + track = [mtr currentSongTrack]; NS_HANDLER [[MainController sharedController] networkError:localException]; NS_ENDHANDLER @@ -300,9 +302,9 @@ } NS_DURING - if ([defaults boolForKey:@"showTime"] && ( ([[[MainController sharedController] currentRemote] currentSongElapsed] != nil) || ([[[MainController sharedController] currentRemote] currentSongLength] != nil) )) { - ITDebugLog(@"Add Track Elapsed (\"%@/%@\") menu item.", [[[MainController sharedController] currentRemote] currentSongElapsed], [[[MainController sharedController] currentRemote] currentSongLength]); - [menu indentItem:[menu addItemWithTitle:[NSString stringWithFormat:@"%@/%@", [[[MainController sharedController] currentRemote] currentSongElapsed], [[[MainController sharedController] currentRemote] currentSongLength]] action:nil keyEquivalent:@""]]; + if ([defaults boolForKey:@"showTime"] && ( ([mtr currentSongElapsed] != nil) || ([mtr currentSongLength] != nil) )) { + ITDebugLog(@"Add Track Elapsed (\"%@/%@\") menu item.", [mtr currentSongElapsed], [mtr currentSongLength]); + [menu indentItem:[menu addItemWithTitle:[NSString stringWithFormat:@"%@/%@", [mtr currentSongElapsed], [mtr currentSongLength]] action:nil keyEquivalent:@""]]; } NS_HANDLER [[MainController sharedController] networkError:localException]; @@ -310,9 +312,9 @@ if (!_playingRadio) { NS_DURING - if ([defaults boolForKey:@"showTrackRating"] && ( [[[MainController sharedController] currentRemote] currentSongRating] != -1.0 )) { + if ([defaults boolForKey:@"showTrackRating"] && ( [mtr currentSongRating] != -1.0 )) { NSString *string = nil; - switch ((int)([[[MainController sharedController] currentRemote] currentSongRating] * 5)) { + switch ((int)([mtr currentSongRating] * 5)) { case 0: string = [NSString stringWithUTF8String:"☆☆☆☆☆"]; break; @@ -338,6 +340,23 @@ NS_HANDLER [[MainController sharedController] networkError:localException]; NS_ENDHANDLER + + /*if ([tempItem respondsToSelector:@selector(setAttributedTitle:)] && [defaults boolForKey:@"showAlbumArtwork"] && ![[NetworkController sharedController] isConnectedToServer]) { + NSImage *image = [mtr currentSongAlbumArt]; + if (image) { + NSSize oldSize, newSize; + oldSize = [image size]; + if (oldSize.width > oldSize.height) newSize = NSMakeSize(110,oldSize.height * (110.0f / oldSize.width)); + else newSize = NSMakeSize(oldSize.width * (110.0f / oldSize.height),110); + image = [[[[NSImage alloc] initWithData:[image TIFFRepresentation]] autorelease] imageScaledSmoothlyToSize:newSize]; + + tempItem = [menu addItemWithTitle:@"" action:nil keyEquivalent:@""]; + NSTextAttachment *attachment = [[[NSTextAttachment alloc] init] autorelease]; + [[attachment attachmentCell] setImage:image]; + NSAttributedString *attrString = [NSAttributedString attributedStringWithAttachment:attachment]; + [tempItem setAttributedTitle:attrString]; + } + }*/ } } else { ITDebugLog(@"No Track is Playing, Add \"No Song\" menu item."); @@ -367,7 +386,7 @@ [tempItem setState:NSOffState]; } NS_DURING - [[_eqMenu itemAtIndex:([[[MainController sharedController] currentRemote] currentEQPresetIndex] - 1)] setState:NSOnState]; + [[_eqMenu itemAtIndex:([mtr currentEQPresetIndex] - 1)] setState:NSOnState]; NS_HANDLER [[MainController sharedController] networkError:localException]; NS_ENDHANDLER @@ -388,7 +407,7 @@ } NS_DURING - [[_ratingMenu itemAtIndex:([[[MainController sharedController] currentRemote] currentSongRating] * 5)] setState:NSOnState]; + [[_ratingMenu itemAtIndex:([mtr currentSongRating] * 5)] setState:NSOnState]; NS_HANDLER [[MainController sharedController] networkError:localException]; NS_ENDHANDLER @@ -413,7 +432,7 @@ - (NSMenu *)menuForNoPlayer { NSMenu *menu = [[NSMenu alloc] initWithTitle:@""]; - id tempItem; + id tempItem = nil; ITDebugLog(@"Creating menu for when player isn't running."); NS_DURING ITDebugLog(@"Add \"Open %@\" menu item.", [[[MainController sharedController] currentRemote] playerSimpleName]); @@ -453,9 +472,13 @@ [[MainController sharedController] networkError:localException]; NS_ENDHANDLER ITDebugLog(@"Releasing old submenus."); + ITDebugLog(@" - Rating menu"); [_ratingMenu release]; + ITDebugLog(@" - Upcoming songs menu"); [_upcomingSongsMenu release]; + ITDebugLog(@" - Playlists menu"); [_playlistsMenu release]; + ITDebugLog(@" - EQ menu"); [_eqMenu release]; ITDebugLog(@"Beginning Rebuild of \"Song Rating\" submenu."); _ratingMenu = [self ratingMenu]; @@ -500,7 +523,7 @@ - (NSMenu *)upcomingSongsMenu { NSMenu *upcomingSongsMenu = [[NSMenu alloc] initWithTitle:@""]; - int numSongs, numSongsInAdvance = [[NSUserDefaults standardUserDefaults] integerForKey:@"SongsInAdvance"]; + int numSongs = 0, numSongsInAdvance = [[NSUserDefaults standardUserDefaults] integerForKey:@"SongsInAdvance"]; NS_DURING numSongs = [[[MainController sharedController] currentRemote] numberOfSongsInPlaylistAtIndex:_currentPlaylist]; @@ -514,7 +537,7 @@ int i; for (i = _currentTrack + 1; i <= _currentTrack + numSongsInAdvance; i++) { if (i <= numSongs) { - NSString *curSong; + NSString *curSong = nil; NS_DURING curSong = [[[MainController sharedController] currentRemote] songTitleAtIndex:i]; NS_HANDLER @@ -583,7 +606,7 @@ - (NSMenu *)playlistsMenu { NSMenu *playlistsMenu = [[NSMenu alloc] initWithTitle:@""]; - NSArray *playlists; + NSArray *playlists = nil; id tempItem; ITMTRemotePlayerSource source = [[[MainController sharedController] currentRemote] currentSource]; int i, j; @@ -660,7 +683,7 @@ - (NSMenu *)eqMenu { NSMenu *eqMenu = [[NSMenu alloc] initWithTitle:@""]; - NSArray *eqPresets; + NSArray *eqPresets = nil; id tempItem; int i;