- (NSString *)currentSongLength;
- (NSString *)currentSongRemaining;
+- (int)currentSongRating;
+- (BOOL)setCurrentSongRating:(int)rating;
+
- (NSArray *)eqPresets;
- (int)currentEQPresetIndex;
return nil;
}
+- (int)currentSongRating
+{
+ return 0;
+}
+
+- (BOOL)setCurrentSongRating:(int)rating
+{
+ return NO;
+}
+
- (NSArray *)eqPresets;
{
return nil;
[statusItem setMenu:menu];
// Below line of code is for creating builds for Beta Testers
// [statusItem setToolTip:@[NSString stringWithFormat:@"This Nontransferable Beta (Built on %s) of iThink Software's MenuTunes is Registered to: Beta Tester (betatester@somedomain.com).",__DATE__]];
- [statusWindow orderFront:self]; //DEBUG
}
- (ITMTRemote *)loadRemote
@"<separator>",
@"Upcoming Songs",
@"Playlists",
+ @"Song Rating",
@"<separator>",
@"PreferencesÉ",
@"Quit",
[menu addItemWithTitle:@"No Song"
action:nil
keyEquivalent:@""];
+ } else if ([item isEqualToString:@"Song Rating"]) {
+ NSMenu *ratingSubmenu = [[NSMenu alloc] initWithTitle:@""];
+ unichar whiteStar = 'o';//2606;
+ unichar blackStar = 'x';//2605;
+ NSString *whiteStarString = [NSString stringWithCharacters:&whiteStar
+ length:1];
+ NSString *blackStarString = [NSString stringWithCharacters:&blackStar
+ length:1];
+ NSString *string = @"";
+ int i;
+
+ for (i = 0; i < 5; i++) {
+ string = [string stringByAppendingString:whiteStarString];
+ }
+ for (i = 0; i < 6; i++) {
+ NSMenuItem *ratingItem;
+ ratingItem = [ratingSubmenu addItemWithTitle:string action:@selector(setSongRating:) keyEquivalent:@""];
+ [ratingItem setTarget:self];
+ [ratingItem setTag:i * 20];
+ string = [string substringToIndex:4];
+ string = [blackStarString stringByAppendingString:string];
+ }
+ [[menu addItemWithTitle:@"Song Rating"
+ action:nil
+ keyEquivalent:@""] setSubmenu:ratingSubmenu];
+ [ratingSubmenu autorelease];
} else if ([item isEqualToString:@"<separator>"]) {
[menu addItem:[NSMenuItem separatorItem]];
}
[playPauseMenuItem setTitle:@"Play"];
}
+- (void)setSongRating:(id)sender
+{
+ //[currentRemote setCurrentSongRating:[sender tag]];
+}
+
//
//
// Plugin independent selectors
[allTableView registerForDraggedTypes:[NSArray arrayWithObjects:@"MenuTableViewPboardType", @"AllTableViewPboardType", nil]];
//Set the list of items you can have.
- availableItems = [[NSMutableArray alloc] initWithObjects:@"Current Track Info", @"Upcoming Songs", @"Playlists", @"EQ Presets", @"Play/Pause", @"Next Track", @"Previous Track", @"Fast Forward", @"Rewind", @"<separator>", nil];
+ availableItems = [[NSMutableArray alloc] initWithObjects:@"Current Track Info", @"Upcoming Songs", @"Playlists", @"EQ Presets", @"Song Rating", @"Play/Pause", @"Next Track", @"Previous Track", @"Fast Forward", @"Rewind", @"<separator>", nil];
//Get our preferred menu
myItems = [[[NSUserDefaults standardUserDefaults] arrayForKey:@"menu"] mutableCopy];
}
//Items that show should a submenu image
- submenuItems = [[NSArray alloc] initWithObjects:@"Upcoming Songs", @"Playlists", @"EQ Presets", nil];
+ submenuItems = [[NSArray alloc] initWithObjects:@"Upcoming Songs", @"Playlists", @"EQ Presets", @"Song Rating", nil];
//Fill in the number of songs in advance to show field
[songsInAdvance setIntValue:[defaults integerForKey:@"SongsInAdvance"]];
return [[NSNumber numberWithLong:duration - current] stringValue];
}
+- (int)currentSongRating
+{
+ return 0;
+}
+
+- (BOOL)setCurrentSongRating:(int)rating
+{
+ return NO;
+}
+
- (NSArray *)eqPresets;
{
int i;
- (BOOL)switchToPlaylistAtIndex:(int)index
{
[[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"'----':obj { form:'indx', want:type('cPly'), seld:long(%lu), from:() }",index] eventClass:@"hook" eventID:@"Play" appPSN:iTunesPSN];
- return NO;
+ return YES;
}
- (BOOL)switchToSongAtIndex:(int)index
{
[[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"'----':obj { form:'indx', want:type('cTrk'), seld:long(%lu), from:obj { form:'prop', want:type('prop'), seld:type('pPla'), from:() } }",index] eventClass:@"hook" eventID:@"Play" appPSN:iTunesPSN];
- return NO;
+ return YES;
}
- (BOOL)switchToEQAtIndex:(int)index
{
[[ITAppleEventCenter sharedCenter] sendAEWithSendString:[NSString stringWithFormat:@"data:obj { form:'indx', want:type('cEQP'), seld:long(%lu), from:'null'() }, '----':obj { form:'prop', want:type('prop'), seld:type('pEQP'), from:'null'() }",index] eventClass:@"core" eventID:@"setd" appPSN:iTunesPSN];
[[ITAppleEventCenter sharedCenter] sendAEWithSendString:@"data:1, '----':obj { form:'prop', want:type('prop'), seld:type('pEQ '), from:'null'() }" eventClass:@"core" eventID:@"setd" appPSN:iTunesPSN];
- return NO;
+ return YES;
}
- (ProcessSerialNumber)iTunesPSN