Finally fixed all the memory leaks, I hope. Fixed iTunesRemote to not
[MenuTunes.git] / PreferencesController.m
index 4773ab8..7e953d9 100755 (executable)
@@ -86,6 +86,8 @@ static PreferencesController *prefs = nil;
         hotKeysArray = [[NSArray alloc] initWithObjects:@"PlayPause",
                                                        @"NextTrack",
                                                        @"PrevTrack",
+                                                       @"FastForward",
+                                                       @"Rewind",
                                                        @"ShowPlayer",
                                                        @"TrackInfo",
                                                        @"UpcomingSongs",
@@ -95,11 +97,20 @@ static PreferencesController *prefs = nil;
                                                        @"DecrementRating",
                                                        @"ToggleShuffle",
                                                        @"ToggleLoop",
+                                                       @"PopupMenu",
+                                                       @"SetRating0",
+                                                       @"SetRating1",
+                                                       @"SetRating2",
+                                                       @"SetRating3",
+                                                       @"SetRating4",
+                                                       @"SetRating5",
                                                        nil];
         
         hotKeyNamesArray = [[NSArray alloc] initWithObjects:@"Play/Pause",
                                                        @"Next Track",
                                                        @"Previous Track",
+                                                       @"Fast Forward",
+                                                       @"Rewind",
                                                        @"Show Player",
                                                        @"Track Info",
                                                        @"Upcoming Songs",
@@ -109,6 +120,13 @@ static PreferencesController *prefs = nil;
                                                        @"Decrement Rating",
                                                        @"Toggle Shuffle",
                                                        @"Toggle Loop",
+                                                       @"Pop-up status menu",
+                                                       [NSString stringWithUTF8String:"Set Rating: ☆☆☆☆☆"],
+                                                       [NSString stringWithUTF8String:"Set Rating: ★☆☆☆☆"],
+                                                       [NSString stringWithUTF8String:"Set Rating: ★★☆☆☆"],
+                                                       [NSString stringWithUTF8String:"Set Rating: ★★★☆☆"],
+                                                       [NSString stringWithUTF8String:"Set Rating: ★★★★☆"],
+                                                       [NSString stringWithUTF8String:"Set Rating: ★★★★★"],
                                                        nil];
         hotKeysDictionary = [[NSMutableDictionary alloc] init];
         controller = nil;
@@ -188,6 +206,7 @@ static PreferencesController *prefs = nil;
         [self setupUI]; // Sets up additional UI
         [window setDelegate:self];
         [menuTableView reloadData];
+        [hotKeysTableView reloadData];
         [hotKeysTableView setDoubleAction:@selector(hotKeysTableViewDoubleClicked:)];
         
         //Change the launch player checkbox to the proper name
@@ -216,7 +235,7 @@ static PreferencesController *prefs = nil;
     } else if ( [sender tag] == 1030) {
         [df setInteger:[sender intValue] forKey:@"SongsInAdvance"];
         if ([[controller currentRemote] playerRunningState] == ITMTRemotePlayerRunning) {
-            [[controller menuController] rebuildSubmenus];
+            [[controller menuController] performSelector:@selector(rebuildSubmenus) withObject:nil afterDelay:0];
         }
     } else if ( [sender tag] == 1040) {
         // This will not be executed.  Song info always shows the title of the song.
@@ -231,6 +250,8 @@ static PreferencesController *prefs = nil;
         [df setBool:SENDER_STATE forKey:@"showTime"];
     } else if ( [sender tag] == 1080) {
         [df setBool:SENDER_STATE forKey:@"showTrackNumber"];
+    } else if ( [sender tag] == 1085) {
+        [df setBool:SENDER_STATE forKey:@"showPlayCount"];
     } else if ( [sender tag] == 1090) {
         [df setBool:SENDER_STATE forKey:@"showTrackRating"];
     } else if ( [sender tag] == 1100) {
@@ -718,6 +739,8 @@ static PreferencesController *prefs = nil;
         @"trackInfo",
         @"upcomingSongs",
         @"playlists",
+        @"artists",
+        @"albums",
         @"eqPresets",
         @"songRating",
         @"playPause",
@@ -744,6 +767,8 @@ static PreferencesController *prefs = nil;
     submenuItems = [[NSArray alloc] initWithObjects:
         @"upcomingSongs",
         @"playlists",
+        @"artists",
+        @"albums",
         @"eqPresets",
         @"songRating",
         nil];
@@ -784,6 +809,7 @@ static PreferencesController *prefs = nil;
     [composerCheckbox setState:[df boolForKey:@"showComposer"] ? NSOnState : NSOffState];
     [trackTimeCheckbox setState:[df boolForKey:@"showTime"] ? NSOnState : NSOffState];
     [trackNumberCheckbox setState:[df boolForKey:@"showTrackNumber"] ? NSOnState : NSOffState];
+    [playCountCheckbox setState:[df boolForKey:@"showPlayCount"] ? NSOnState : NSOffState];
     [ratingCheckbox setState:[df boolForKey:@"showTrackRating"] ? NSOnState : NSOffState];
     [albumArtworkCheckbox setState:[df boolForKey:@"showAlbumArtwork"] ? NSOnState : NSOffState];
     
@@ -994,6 +1020,8 @@ static PreferencesController *prefs = nil;
     [df setObject:myItems forKey:@"menu"];
     [df synchronize];
     
+    [[controller menuController] performSelector:@selector(rebuildSubmenus) withObject:nil afterDelay:0.0];
+    
     //If we're connected over a network, refresh the menu immediately
     if ([[NetworkController sharedController] isConnectedToServer]) {
         [controller timerUpdate];