}
statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength];
- [[[statusItem _button] cell] setType:0];
+ [[[statusItem _button] cell] setType:NSNullCellType];
[statusItem setImage:[NSImage imageNamed:@"menu"]];
[[statusItem _button] setAlternateImage:[NSImage imageNamed:@"selected_image"]];
[statusItem setHighlightMode:YES];
//Updates the menu with current player state, song, and upcoming songs
- (void)updateMenu
{
- NSString *curSongName, *curAlbumName;
+ NSString *curAlbumName = [self runScriptAndReturnResult:@"return album of current track"];
NSMenuItem *menuItem;
-
if ((iTunesPSN.highLongOfPSN == kNoProcess) && (iTunesPSN.lowLongOfPSN == 0)) {
return;
}
- //Get the current track name and album.
- curSongName = [self runScriptAndReturnResult:@"return name of current track"];
- curAlbumName = [self runScriptAndReturnResult:@"return album of current track"];
-
if (upcomingSongsItem) {
[self rebuildUpcomingSongsMenu];
}
[self rebuildEQPresetsMenu];
}
- if ([curSongName length] > 0) {
- int index = [menu indexOfItemWithTitle:@"Now Playing"];
-
- if (index > -1) {
- [menu removeItemAtIndex:index + 1];
+ if (trackInfoIndex > -1)
+ {
+ NSString *curSongName;
+ curSongName = [self runScriptAndReturnResult:@"return name of current track"];
+ if ([curSongName length] > 0) {
+ int index = [menu indexOfItemWithTitle:@"Now Playing"];
- if (didHaveAlbumName) {
+ if (index > -1) {
[menu removeItemAtIndex:index + 1];
+
+ if (!isPlayingRadio) {
+ if (didHaveAlbumName) {
+ [menu removeItemAtIndex:index + 1];
+ }
+ }
}
- }
-
- if ([curAlbumName length] > 0) {
- menuItem = [[NSMenuItem alloc] initWithTitle:[NSString stringWithFormat:@" %@", curAlbumName]
- action:nil
- keyEquivalent:@""];
+ if (!isPlayingRadio) {
+ if ([curAlbumName length] > 0) {
+ menuItem = [[NSMenuItem alloc] initWithTitle:[NSString stringWithFormat:@" %@", curAlbumName]
+ action:nil
+ keyEquivalent:@""];
+ [menu insertItem:menuItem atIndex:trackInfoIndex + 1];
+ [menuItem release];
+ }
+ }
+ menuItem = [[NSMenuItem alloc] initWithTitle:[NSString stringWithFormat:@" %@", curSongName]
+ action:nil
+ keyEquivalent:@""];
[menu insertItem:menuItem atIndex:trackInfoIndex + 1];
[menuItem release];
- }
-
- 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"]];
+
+ 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];
+ }
+
+ } else if ([menu indexOfItemWithTitle:@"No Song"] == -1) {
+ [menu removeItemAtIndex:trackInfoIndex];
+ [menu removeItemAtIndex:trackInfoIndex];
+
+ if (didHaveAlbumName) {
+ [menu removeItemAtIndex:trackInfoIndex];
+ }
+
+ menuItem = [[NSMenuItem alloc] initWithTitle:@"No Song" action:nil keyEquivalent:@""];
[menu insertItem:menuItem atIndex:trackInfoIndex];
[menuItem release];
}
-
- } else if ([menu indexOfItemWithTitle:@"No Song"] == -1) {
- [menu removeItemAtIndex:trackInfoIndex];
- [menu removeItemAtIndex:trackInfoIndex];
-
- if (didHaveAlbumName) {
- [menu removeItemAtIndex:trackInfoIndex];
- }
-
- menuItem = [[NSMenuItem alloc] initWithTitle:@"No Song" action:nil keyEquivalent:@""];
- [menu insertItem:menuItem atIndex:trackInfoIndex];
- [menuItem release];
}
-
didHaveAlbumName = (([curAlbumName length] > 0) ? YES : NO);
}
{
int numSongs = [[self runScriptAndReturnResult:@"return number of tracks in current playlist"] intValue];
int numSongsInAdvance = [[NSUserDefaults standardUserDefaults] integerForKey:@"SongsInAdvance"];
-
- if (numSongs > 0) {
- int curTrack = [[self runScriptAndReturnResult:@"return index of current track"] intValue];
- int i;
-
- [upcomingSongsMenu release];
- upcomingSongsMenu = [[NSMenu alloc] initWithTitle:@""];
-
- for (i = curTrack + 1; i <= curTrack + numSongsInAdvance; i++) {
- if (i <= numSongs) {
- NSString *curSong = [self runScriptAndReturnResult:[NSString stringWithFormat:@"return name of track %i of current playlist", i]];
- NSMenuItem *songItem;
- songItem = [[NSMenuItem alloc] initWithTitle:curSong action:@selector(playTrack:) keyEquivalent:@""];
- [songItem setTarget:self];
- [songItem setRepresentedObject:[NSNumber numberWithInt:i]];
- [upcomingSongsMenu addItem:songItem];
- [songItem release];
- } else {
- [upcomingSongsMenu addItemWithTitle:@"End of playlist." action:nil keyEquivalent:@""];
- break;
+ if (!isPlayingRadio) {
+ if (numSongs > 0) {
+ int curTrack = [[self runScriptAndReturnResult:@"return index of current track"] intValue];
+ int i;
+
+ [upcomingSongsMenu release];
+ upcomingSongsMenu = [[NSMenu alloc] initWithTitle:@""];
+
+ for (i = curTrack + 1; i <= curTrack + numSongsInAdvance; i++) {
+ if (i <= numSongs) {
+ NSString *curSong = [self runScriptAndReturnResult:[NSString stringWithFormat:@"return name of track %i of current playlist", i]];
+ NSMenuItem *songItem;
+ songItem = [[NSMenuItem alloc] initWithTitle:curSong action:@selector(playTrack:) keyEquivalent:@""];
+ [songItem setTarget:self];
+ [songItem setRepresentedObject:[NSNumber numberWithInt:i]];
+ [upcomingSongsMenu addItem:songItem];
+ [songItem release];
+ } else {
+ [upcomingSongsMenu addItemWithTitle:@"End of playlist." action:nil keyEquivalent:@""];
+ break;
+ }
}
+ [upcomingSongsItem setSubmenu:upcomingSongsMenu];
+ [upcomingSongsItem setEnabled:YES];
}
- [upcomingSongsItem setSubmenu:upcomingSongsMenu];
- [upcomingSongsItem setEnabled:YES];
+ } else {
+ [upcomingSongsItem setSubmenu:nil];
+ [upcomingSongsItem setEnabled:NO];
}
}
int numPlaylists = [[self runScriptAndReturnResult:@"return number of playlists"] intValue];
int i, curPlaylist = [[self runScriptAndReturnResult:@"return index of current playlist"] intValue];
+ if (isPlayingRadio)
+ {
+ curPlaylist = 0;
+ }
+
if (playlistMenu && (numPlaylists == [playlistMenu numberOfItems]))
return;
int trackPlayingIndex = [[self runScriptAndReturnResult:@"return index of current track"] intValue];
if (trackPlayingIndex != curTrackIndex) {
+ isPlayingRadio = [[self runScriptAndReturnResult:@"return class of current playlist"] isEqualToString:@"radio tuner playlist"];
[self updateMenu];
curTrackIndex = trackPlayingIndex;
}
- (void)selectPlaylist:(id)sender
{
int playlist = [[sender representedObject] intValue];
+ int curPlaylist = [[self runScriptAndReturnResult:@"return index of current playlist"] intValue];
+ [[playlistMenu itemAtIndex:curPlaylist - 1] setState:NSOffState];
[self runScriptAndReturnResult:[NSString stringWithFormat:@"play playlist %i", playlist]];
[[playlistMenu itemAtIndex:playlist - 1] setState:NSOnState];
[self updateMenu];