-//Updates the menu with current player state, song, and upcoming songs
-- (void)updateMenu
-{
- NSMenuItem *menuItem;
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
-
- if ( ( isAppRunning == ITMTRemotePlayerNotRunning ) ) {
- return;
- }
-
- if (upcomingSongsItem) {
- [self rebuildUpcomingSongsMenu];
- }
-
- if (playlistItem) {
- [self rebuildPlaylistMenu];
- }
-
- if (eqItem) {
- [self rebuildEQPresetsMenu];
- }
- if (trackInfoIndex > -1) {
- NSString *curSongName, *curAlbumName = @"", *curArtistName = @"";
- curSongName = [currentRemote currentSongTitle];
-
- if ([defaults boolForKey:@"showAlbum"]) {
- curAlbumName = [currentRemote currentSongAlbum];
- }
-
- if ([defaults boolForKey:@"showArtist"]) {
- curArtistName = [currentRemote currentSongArtist];
- }
-
- if ([curSongName length] > 0) {
- int index = [menu indexOfItemWithTitle:@"Now Playing"];
- if (index > -1) {
- if ([defaults boolForKey:@"showName"]) {
- [menu removeItemAtIndex:index + 1];
- }
- if (didHaveAlbumName && [defaults boolForKey:@"showAlbum"]) {
- [menu removeItemAtIndex:index + 1];
- }
- if (didHaveArtistName && [defaults boolForKey:@"showArtist"]) {
- [menu removeItemAtIndex:index + 1];
- }
- if ([defaults boolForKey:@"showTime"]) {
- [menu removeItemAtIndex:index + 1];
- }
- }
-
- if (!isPlayingRadio) {
- if ([defaults boolForKey:@"showTime"]) {
- menuItem = [[NSMenuItem alloc] initWithTitle:[NSString stringWithFormat:@" %@", [currentRemote currentSongLength]]
- action:nil
- keyEquivalent:@""];
- [menu insertItem:menuItem atIndex:trackInfoIndex + 1];
- [menuItem release];
- }
-
- if ([curArtistName length] > 0) {
- menuItem = [[NSMenuItem alloc] initWithTitle:[NSString stringWithFormat:@" %@", curArtistName]
- action:nil
- keyEquivalent:@""];
- [menu insertItem:menuItem atIndex:trackInfoIndex + 1];
- [menuItem release];
- }
-
- if ([curAlbumName length] > 0) {
- menuItem = [[NSMenuItem alloc] initWithTitle:[NSString stringWithFormat:@" %@", curAlbumName]
- action:nil
- keyEquivalent:@""];
- [menu insertItem:menuItem atIndex:trackInfoIndex + 1];
- [menuItem release];
- }
-
- if (songRatingMenuItem) {
- int rating = (int)[currentRemote currentSongRating] * 10;
- int i;
- for (i = 0; i < 5; i++) {
- [[ratingMenu itemAtIndex:i] setState:NSOffState];
- [[ratingMenu itemAtIndex:i] setTarget:self];
- }
- [[ratingMenu itemAtIndex:rating / 2] setState:NSOnState];
- }
- }
-
- if ([defaults boolForKey:@"showName"]) {
- menuItem = [[NSMenuItem alloc] initWithTitle:[NSString stringWithFormat:@" %@", curSongName]
- action:nil
- keyEquivalent:@""];
- [menu insertItem:menuItem atIndex:trackInfoIndex + 1];
- [menuItem release];
- }
-
- if (index == -1) {
- menuItem = [[NSMenuItem alloc] initWithTitle:@"Now Playing" action:nil keyEquivalent:@""];
- [menu removeItemAtIndex:[menu indexOfItemWithTitle:@"No Song"]];
- [menu insertItem:menuItem atIndex:trackInfoIndex];
- [menuItem release];
-
- [songRatingMenuItem setSubmenu:ratingMenu];
- [songRatingMenuItem setEnabled:YES];
- }
- } else if ([menu indexOfItemWithTitle:@"No Song"] == -1) {
- [menu removeItemAtIndex:trackInfoIndex];
-
- if ([defaults boolForKey:@"showName"] == YES) {
- [menu removeItemAtIndex:trackInfoIndex];
- }
-
- if ([defaults boolForKey:@"showTime"] == YES) {
- [menu removeItemAtIndex:trackInfoIndex];
- }
-
- if (didHaveArtistName && [defaults boolForKey:@"showArtist"]) {
- [menu removeItemAtIndex:trackInfoIndex];
- }
-
- if (didHaveAlbumName && [defaults boolForKey:@"showAlbum"]) {
- [menu removeItemAtIndex:trackInfoIndex];
- }
-
- menuItem = [[NSMenuItem alloc] initWithTitle:@"No Song" action:nil keyEquivalent:@""];
- [menu insertItem:menuItem atIndex:trackInfoIndex];
- [menuItem release];
- }
-
- if ([defaults boolForKey:@"showArtist"]) {
- didHaveArtistName = (([curArtistName length] > 0) ? YES : NO);
- }
-
- if ([defaults boolForKey:@"showAlbum"]) {
- didHaveAlbumName = (([curAlbumName length] > 0) ? YES : NO);
- }
- }
- [menu update];
-}
-