[menu addItemWithTitle:title action:nil keyEquivalent:@""]];
}
- if (!_playingRadio) {
if ([defaults boolForKey:@"showAlbum"]) {
NSString *curAlbum = [currentRemote currentSongAlbum];
ITDebugLog(@"Add Track Album (\"%@\") menu item.", curAlbum);
if ([defaults boolForKey:@"showTrackNumber"]) {
int track = [currentRemote currentSongTrack];
ITDebugLog(@"Add Track Number (\"Track %i\") menu item.", track);
- if ( track ) {
+ if ( track > 0 ) {
[menu indentItem:
[menu addItemWithTitle:[NSString stringWithFormat:@"%@ %i", NSLocalizedString(@"track", @"Track"), track] action:nil keyEquivalent:@""]];
}
}
- if ([defaults boolForKey:@"showTime"]) {
- int left = [[currentRemote currentSongElapsed] intValue];
- NSString *elapsed = [NSString stringWithFormat:@"%i:%02i", left / 60, left % 60];
- ITDebugLog(@"Add Track Elapsed (\"%@/%@\") menu item.", elapsed, [currentRemote currentSongLength]);
- [menu indentItem:[menu addItemWithTitle:[NSString stringWithFormat:@"%@/%@", elapsed, [currentRemote currentSongLength]] action:nil keyEquivalent:@""]];
+ if ([defaults boolForKey:@"showTime"] && ( ([currentRemote currentSongElapsed] != nil) || ([currentRemote currentSongLength] != nil) )) {
+ ITDebugLog(@"Add Track Elapsed (\"%@/%@\") menu item.", [currentRemote currentSongElapsed], [currentRemote currentSongLength]);
+ [menu indentItem:[menu addItemWithTitle:[NSString stringWithFormat:@"%@/%@", [currentRemote currentSongElapsed], [currentRemote currentSongLength]] action:nil keyEquivalent:@""]];
}
- if ([defaults boolForKey:@"showTrackRating"]) {
+ if ([defaults boolForKey:@"showTrackRating"] && ( [currentRemote currentSongRating] != -1.0 )) {
NSString *string = nil;
switch ((int)([currentRemote currentSongRating] * 5)) {
case 0:
ITDebugLog(@"Add Track Rating (\"%@\") menu item.", string);
[menu indentItem:[menu addItemWithTitle:string action:nil keyEquivalent:@""]];
}
- }
+
} else {
ITDebugLog(@"No Track is Playing, Add \"No Song\" menu item.");
[menu addItemWithTitle:NSLocalizedString(@"noSong", @"No Song") action:NULL keyEquivalent:@""];
[tempItem setState:NSOffState];
}
[[_eqMenu itemAtIndex:([currentRemote currentEQPresetIndex] - 1)] setState:NSOnState];
- }
-
- if (!_playingRadio) {
- if ([nextObject isEqualToString:@"songRating"]) {
+ } else if ([nextObject isEqualToString:@"songRating"] && ( [currentRemote currentSongRating] != -1 )) {
ITDebugLog(@"Add \"Song Rating\" submenu.");
tempItem = [menu addItemWithTitle:NSLocalizedString(@"songRating", @"Song Rating")
action:nil
}
}
}
- }
ITDebugLog(@"Finished building menu.");
[_currentMenu release];
_currentMenu = menu;
int temp1;
ITDebugLog(@"Getting current album track count.");
temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pTrC" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ if ( [self currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist ) { temp1 = 0; }
ITDebugLog(@"Getting current album track count done.");
return temp1;
}
int temp1;
ITDebugLog(@"Getting current song track.");
temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKeyForNumber:@"pTrN" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ if ( [self currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist ) { temp1 = 0; }
ITDebugLog(@"Getting current song track done.");
return temp1;
}
{
NSString *temp1;
ITDebugLog(@"Getting current song artist.");
- temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pArt" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ if ( [self currentPlaylistClass] != ITMTRemotePlayerRadioPlaylist ) {
+ temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pArt" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ } else {
+ temp1 = @"";
+ }
ITDebugLog(@"Getting current song artist done.");
return ( ([temp1 length]) ? temp1 : nil ) ;
}
{
NSString *temp1;
ITDebugLog(@"Getting current song album.");
- temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pAlb" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ if ( [self currentPlaylistClass] != ITMTRemotePlayerRadioPlaylist ) {
+ temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pAlb" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ } else {
+ temp1 = @"";
+ }
ITDebugLog(@"Getting current song album done.");
return ( ([temp1 length]) ? temp1 : nil ) ;
}
NSString *temp1;
ITDebugLog(@"Getting current song length.");
temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pTim" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
+ if ( [self currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist ) { temp1 = nil; }
ITDebugLog(@"Getting current song length done.");
return temp1;
}
final = duration - current;
finalString = [self formatTimeInSeconds:final];
+ if ( [self currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist ) { finalString = nil; }
+
ITDebugLog(@"Getting current song remaining time done.");
return finalString;
sendAEWithRequestedKeyForNumber:@"pPos" eventClass:@"core" eventID:@"getd" appPSN:savedPSN];
finalString = [self formatTimeInSeconds:final];
+ if ( [self currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist ) { finalString = nil; }
ITDebugLog(@"Getting current song elapsed time done.");
return finalString;
}
ITDebugLog(@"Getting current song rating.");
temp1 = ((float)[[ITAppleEventCenter sharedCenter]
sendTwoTierAEWithRequestedKeyForNumber:@"pRte" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN] / 100.0);
+ if ( [self currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist ) { temp1 = -1.0; }
ITDebugLog(@"Getting current song rating done.");
return temp1;
}
- (BOOL)setCurrentSongRating:(float)rating
{
ITDebugLog(@"Setting current song rating to %f.", rating);
+ if ( [self currentPlaylistClass] == ITMTRemotePlayerRadioPlaylist ) { return NO; }
[[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"data:long(%lu), '----':obj { form:'prop', want:type('prop'), seld:type('pRte'), from:obj { form:'indx', want:type('cTrk'), seld:long(%lu), from:obj { form:'prop', want:type('prop'), seld:type('pPla'), from:'null'() } } }",(long)(rating*100),[self currentSongIndex]] eventClass:@"core" eventID:@"setd" appPSN:savedPSN];
ITDebugLog(@"Setting current song rating to %f done.", rating);
return YES;