Oops, I suck at making things compile
[MenuTunes.git] / PreferencesController.m
index d731bd2..51271ab 100755 (executable)
@@ -1,5 +1,6 @@
 #import "PreferencesController.h"
 #import "MainController.h"
+#import "MenuController.h"
 #import "NetworkController.h"
 #import "NetworkObject.h"
 #import "StatusWindow.h"
@@ -9,6 +10,8 @@
 #import <netinet/in.h>
 #import <arpa/inet.h>
 #import <openssl/sha.h>
+#import <sys/types.h>
+#import <sys/stat.h>
 
 #import <ITFoundation/ITFoundation.h>
 
@@ -147,10 +150,10 @@ static PreferencesController *prefs = nil;
     [passwordPanelTitle setStringValue:@"Password Required"];
     [passwordPanelMessage setStringValue:[NSString stringWithFormat:@"Please enter a password for access to the MenuTunes player named %@ at %@.", [[[NetworkController sharedController] networkObject] serverName], [[NetworkController sharedController] remoteHost]]];
     [passwordPanel setLevel:NSStatusWindowLevel];
-    [NSApp activateIgnoringOtherApps: YES];
-    [window center];
-    [window orderFrontRegardless];
-    [window makeKeyWindow];
+    [NSApp activateIgnoringOtherApps:YES];
+    [passwordPanel center];
+    [passwordPanel orderFrontRegardless];
+    [passwordPanel makeKeyWindow];
     if ([NSApp runModalForWindow:passwordPanel]) {
         return YES;
     } else {
@@ -165,10 +168,10 @@ static PreferencesController *prefs = nil;
     [passwordPanelTitle setStringValue:@"Invalid Password"];
     [passwordPanelMessage setStringValue:[NSString stringWithFormat:@"The password entered for access to the MenuTunes player named %@ at %@ is invalid.  Please provide a new password.", [[[NetworkController sharedController] networkObject] serverName], [[NetworkController sharedController] remoteHost]]];
     [passwordPanel setLevel:NSStatusWindowLevel];
-    [NSApp activateIgnoringOtherApps: YES];
-    [window center];
-    [window orderFrontRegardless];
-    [window makeKeyWindow];
+    [NSApp activateIgnoringOtherApps:YES];
+    [passwordPanel center];
+    [passwordPanel orderFrontRegardless];
+    [passwordPanel makeKeyWindow];
     if ([NSApp runModalForWindow:passwordPanel]) {
         return YES;
     } else {
@@ -197,16 +200,11 @@ static PreferencesController *prefs = nil;
     }
 
     [self resetRemotePlayerTextFields];
-    [NSApp activateIgnoringOtherApps: YES];
+    [launchAtLoginCheckbox becomeFirstResponder];
+    [NSApp activateIgnoringOtherApps:YES];
     [window center];
     [window orderFrontRegardless];
     [window makeKeyWindow];
-    [window performSelector:@selector(makeKeyAndOrderFront:) withObject:self afterDelay:0.0];
-}
-
-- (IBAction)showTestWindow:(id)sender
-{
-    [controller showTestWindow];
 }
 
 - (IBAction)changeGeneralSetting:(id)sender
@@ -218,12 +216,14 @@ static PreferencesController *prefs = nil;
         [df setBool:SENDER_STATE forKey:@"LaunchPlayerWithMT"];
     } else if ( [sender tag] == 1030) {
         [df setInteger:[sender intValue] forKey:@"SongsInAdvance"];
-
+        [[controller menuController] rebuildSubmenus];
     } else if ( [sender tag] == 1040) {
         // This will not be executed.  Song info always shows the title of the song.
         // [df setBool:SENDER_STATE forKey:@"showName"];
     } else if ( [sender tag] == 1050) {
         [df setBool:SENDER_STATE forKey:@"showArtist"];
+    } else if ( [sender tag] == 1055) {
+        [df setBool:SENDER_STATE forKey:@"showComposer"];
     } else if ( [sender tag] == 1060) {
         [df setBool:SENDER_STATE forKey:@"showAlbum"];
     } else if ( [sender tag] == 1070) {
@@ -234,6 +234,17 @@ static PreferencesController *prefs = nil;
         [df setBool:SENDER_STATE forKey:@"showTrackRating"];
     } else if ( [sender tag] == 1100) {
         [df setBool:SENDER_STATE forKey:@"showAlbumArtwork"];
+    } else if ( [sender tag] == 1110) {
+        [df setBool:SENDER_STATE forKey:@"runScripts"];
+        if (SENDER_STATE) {
+            [runScriptsCheckbox setState:NSOnState];
+            [showScriptsButton setEnabled:YES];
+        } else {
+            [showScriptsButton setEnabled:NO];
+        }
+    } else if ( [sender tag] == 1120) {
+        mkdir([[NSHomeDirectory() stringByAppendingPathComponent:@"Library/Application Support/MenuTunes/Scripts"] cString], 0744);
+        [[NSWorkspace sharedWorkspace] openFile:[NSHomeDirectory() stringByAppendingPathComponent:@"Library/Application Support/MenuTunes/Scripts"]];
     }
     [df synchronize];
 }
@@ -435,10 +446,12 @@ static PreferencesController *prefs = nil;
     } else if ( [sender tag] == 2030) {
     
         [self setStatusWindowEntryEffect:[[sender selectedItem] representedObject]];
+        [(MainController *)controller showCurrentTrackInfo];
         
     } else if ( [sender tag] == 2040) {
     
         [self setStatusWindowExitEffect:[[sender selectedItem] representedObject]];
+        [(MainController *)controller showCurrentTrackInfo];
         
     } else if ( [sender tag] == 2050) {
         float newTime = ( -([sender floatValue]) );
@@ -472,9 +485,11 @@ static PreferencesController *prefs = nil;
         }
 
         [df setInteger:setting forKey:@"statusWindowBackgroundMode"];
+        [(MainController *)controller showCurrentTrackInfo];
         
     } else if ( [sender tag] == 2091) {
         [self setCustomColor:[sender color] updateWell:NO];
+        [(MainController *)controller showCurrentTrackInfo];
     } else if ( [sender tag] == 2092) {
         
         int selectedItem = [sender indexOfSelectedItem];
@@ -492,6 +507,7 @@ static PreferencesController *prefs = nil;
         } else {
             [self setCustomColor:[NSColor colorWithCalibratedWhite:0.15 alpha:0.70] updateWell:YES];
         }
+        [(MainController *)controller showCurrentTrackInfo];
 
     } else if ( [sender tag] == 2095) {
         [df setInteger:[sender indexOfSelectedItem] forKey:@"statusWindowSizing"];
@@ -523,12 +539,15 @@ static PreferencesController *prefs = nil;
         @"quit",
         nil] forKey:@"menu"];
 
-    [df setInteger:1200 forKey:@"appVersion"];
+    [df setInteger:MT_CURRENT_VERSION forKey:@"appVersion"];
     [df setInteger:5 forKey:@"SongsInAdvance"];
 //  [df setBool:YES forKey:@"showName"];  // Song info will always show song title.
     [df setBool:YES forKey:@"showArtist"];
+    [df setBool:YES forKey:@"showAlbumArtwork"];
     [df setBool:NO forKey:@"showAlbum"];
+    [df setBool:NO forKey:@"showComposer"];
     [df setBool:NO forKey:@"showTime"];
+    [df setBool:NO forKey:@"showToolTip"];
 
     [df setObject:@"ITCutWindowEffect" forKey:@"statusWindowAppearanceEffect"];
     [df setObject:@"ITDissolveWindowEffect" forKey:@"statusWindowVanishEffect"];
@@ -756,6 +775,8 @@ static PreferencesController *prefs = nil;
     int selectedBGStyle;
     id anItem;
     
+    [df setInteger:MT_CURRENT_VERSION forKey:@"appVersion"];
+    
     ITDebugLog(@"Setting up preferences UI.");
     // Fill in the number of songs in advance to show field
     [songsInAdvance setIntValue:[df integerForKey:@"SongsInAdvance"]];
@@ -778,11 +799,19 @@ static PreferencesController *prefs = nil;
     [nameCheckbox setState:NSOnState];  // Song info will ALWAYS show song title.
     [nameCheckbox setEnabled:NO];  // Song info will ALWAYS show song title.
     [artistCheckbox setState:[df boolForKey:@"showArtist"] ? NSOnState : NSOffState];
+    [composerCheckbox setState:[df boolForKey:@"showComposer"] ? NSOnState : NSOffState];
     [trackTimeCheckbox setState:[df boolForKey:@"showTime"] ? NSOnState : NSOffState];
     [trackNumberCheckbox setState:[df boolForKey:@"showTrackNumber"] ? NSOnState : NSOffState];
     [ratingCheckbox setState:[df boolForKey:@"showTrackRating"] ? NSOnState : NSOffState];
     [albumArtworkCheckbox setState:[df boolForKey:@"showAlbumArtwork"] ? NSOnState : NSOffState];
     
+    if ([df boolForKey:@"runScripts"]) {
+        [runScriptsCheckbox setState:NSOnState];
+        [showScriptsButton setEnabled:YES];
+    } else {
+        [showScriptsButton setEnabled:NO];
+    }
+    
     // Set the launch at login checkbox state
     ITDebugLog(@"Setting launch at login state.");
     [df synchronize];