From 26e7dbbdfdddcb98beb83c19a83b8e35416821ff Mon Sep 17 00:00:00 2001 From: Kent Sutherland Date: Thu, 6 Mar 2003 20:29:16 +0000 Subject: [PATCH] Added stuff for current song rating. Right now in the submenu there are x's and o's because stars don't want to show up. Empty song rating methods added to the plugin. --- ITMTRemote.h | 3 +++ ITMTRemote.m | 10 ++++++++++ MenuTunes.m | 33 ++++++++++++++++++++++++++++++++- PreferencesController.m | 4 ++-- iTunesRemote.m | 16 +++++++++++++--- 5 files changed, 60 insertions(+), 6 deletions(-) diff --git a/ITMTRemote.h b/ITMTRemote.h index c757cdd..b20eaee 100755 --- a/ITMTRemote.h +++ b/ITMTRemote.h @@ -103,6 +103,9 @@ typedef enum { - (NSString *)currentSongLength; - (NSString *)currentSongRemaining; +- (int)currentSongRating; +- (BOOL)setCurrentSongRating:(int)rating; + - (NSArray *)eqPresets; - (int)currentEQPresetIndex; diff --git a/ITMTRemote.m b/ITMTRemote.m index 8653e5f..7b6742c 100755 --- a/ITMTRemote.m +++ b/ITMTRemote.m @@ -103,6 +103,16 @@ return nil; } +- (int)currentSongRating +{ + return 0; +} + +- (BOOL)setCurrentSongRating:(int)rating +{ + return NO; +} + - (NSArray *)eqPresets; { return nil; diff --git a/MenuTunes.m b/MenuTunes.m index be4dcbf..7c5e543 100755 --- a/MenuTunes.m +++ b/MenuTunes.m @@ -67,7 +67,6 @@ Things to do: [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 @@ -130,6 +129,7 @@ Things to do: @"", @"Upcoming Songs", @"Playlists", + @"Song Rating", @"", @"PreferencesÉ", @"Quit", @@ -288,6 +288,32 @@ Things to do: [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:@""]) { [menu addItem:[NSMenuItem separatorItem]]; } @@ -741,6 +767,11 @@ Things to do: [playPauseMenuItem setTitle:@"Play"]; } +- (void)setSongRating:(id)sender +{ + //[currentRemote setCurrentSongRating:[sender tag]]; +} + // // // Plugin independent selectors diff --git a/PreferencesController.m b/PreferencesController.m index 4e5a84f..8acaab7 100755 --- a/PreferencesController.m +++ b/PreferencesController.m @@ -32,7 +32,7 @@ [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", @"", nil]; + availableItems = [[NSMutableArray alloc] initWithObjects:@"Current Track Info", @"Upcoming Songs", @"Playlists", @"EQ Presets", @"Song Rating", @"Play/Pause", @"Next Track", @"Previous Track", @"Fast Forward", @"Rewind", @"", nil]; //Get our preferred menu myItems = [[[NSUserDefaults standardUserDefaults] arrayForKey:@"menu"] mutableCopy]; @@ -47,7 +47,7 @@ } //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"]]; diff --git a/iTunesRemote.m b/iTunesRemote.m index b06c989..a66105f 100755 --- a/iTunesRemote.m +++ b/iTunesRemote.m @@ -166,6 +166,16 @@ return [[NSNumber numberWithLong:duration - current] stringValue]; } +- (int)currentSongRating +{ + return 0; +} + +- (BOOL)setCurrentSongRating:(int)rating +{ + return NO; +} + - (NSArray *)eqPresets; { int i; @@ -227,20 +237,20 @@ - (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 -- 2.20.1