More fun times with network prefs.
authorKent Sutherland <ksuther@ithinksw.com>
Sat, 1 Nov 2003 02:53:23 +0000 (02:53 +0000)
committerKent Sutherland <ksuther@ithinksw.com>
Sat, 1 Nov 2003 02:53:23 +0000 (02:53 +0000)
English.lproj/Preferences.nib/classes.nib
English.lproj/Preferences.nib/info.nib
English.lproj/Preferences.nib/keyedobjects.nib
MainController.h
MainController.m
PreferencesController.h
PreferencesController.m
libValidate.a

index 86838f8..2e77833 100755 (executable)
@@ -42,6 +42,7 @@
                 selectSharedPlayerButton = NSButton; 
                 selectedPlayerTextField = NSTextField; 
                 shareMenuTunesCheckbox = NSButton; 
+                sharingPanelOKButton = NSButton; 
                 sharingTableView = NSTableView; 
                 showOnChangeCheckbox = NSButton; 
                 songsInAdvance = NSTextField; 
index eb7b7a5..3ef736f 100755 (executable)
@@ -20,7 +20,6 @@
        <key>IBOpenObjects</key>
        <array>
                <integer>6</integer>
-               <integer>719</integer>
        </array>
        <key>IBSystem Version</key>
        <string>7B85</string>
index 7cdebdb..695eb60 100755 (executable)
Binary files a/English.lproj/Preferences.nib/keyedobjects.nib and b/English.lproj/Preferences.nib/keyedobjects.nib differ
index f4f9f7b..e4eeea2 100755 (executable)
@@ -70,7 +70,7 @@
 //
 
 - (void)setServerStatus:(BOOL)newStatus;
-- (BOOL)connectToServer;
+- (int)connectToServer;
 - (BOOL)disconnectFromServer;
 - (void)networkError:(NSException *)exception;
 
index bd93fca..5637bae 100755 (executable)
@@ -64,7 +64,7 @@ static MainController *sharedController;
     if ([df boolForKey:@"enableSharing"]) {
         [self setServerStatus:YES];
     } else if ([df boolForKey:@"useSharedPlayer"]) {
-        if (![self connectToServer]) {
+        if ([self connectToServer] == 0) {
             [NSTimer scheduledTimerWithTimeInterval:45 target:self selector:@selector(checkForRemoteServer:) userInfo:nil repeats:YES];
         }
     }
@@ -943,7 +943,7 @@ static MainController *sharedController;
     }
 }
 
-- (BOOL)connectToServer
+- (int)connectToServer
 {
     int result;
     ITDebugLog(@"Attempting to connect to shared remote.");
@@ -954,16 +954,16 @@ static MainController *sharedController;
         currentRemote = [[[networkController networkObject] remote] retain];
         [self timerUpdate];
         ITDebugLog(@"Connection successful.");
-        return YES;
+        return 1;
     } else if (result == 0) {
         ITDebugLog(@"Connection failed.");
         currentRemote = [remoteArray objectAtIndex:0];
-        return NO;
+        return 0;
     } else {
         //Do something about the password being invalid
         ITDebugLog(@"Connection failed.");
         currentRemote = [remoteArray objectAtIndex:0];
-        return NO;
+        return -1;
     }
 }
 
@@ -1009,7 +1009,7 @@ static MainController *sharedController;
 
 - (void)reconnect
 {
-    if (![self connectToServer]) {
+    if ([self connectToServer] == 0) {
         [NSTimer scheduledTimerWithTimeInterval:45 target:self selector:@selector(checkForRemoteServer:) userInfo:nil repeats:YES];
     }
     [[StatusWindow sharedWindow] setLocked:NO];
index f423317..97c5b92 100755 (executable)
@@ -45,6 +45,7 @@
     IBOutlet NSPanel *selectPlayerSheet;
     IBOutlet NSButton *selectSharedPlayerButton;
     IBOutlet NSButton *shareMenuTunesCheckbox;
+    IBOutlet NSButton *sharingPanelOKButton;
     IBOutlet NSTableView *sharingTableView;
     IBOutlet NSButton *showOnChangeCheckbox;
     IBOutlet NSTextField *songsInAdvance;
index 0ee689d..3fc842e 100755 (executable)
@@ -162,7 +162,7 @@ static PreferencesController *prefs = nil;
 - (IBAction)showPrefsWindow:(id)sender
 {
     ITDebugLog(@"Showing preferences window.");
-    if (! window) {  // If window does not exist yet, then the nib hasn't been loaded.
+    if (!myItems) {  // If menu array does not exist yet, then the window hasn't been setup.
         ITDebugLog(@"Window doesn't exist, initial setup.");
         [self setupCustomizationTables];  // Setup the DnD manu config tables.
         [self setupMenuItems];  // Setup the arrays of menu items
@@ -252,7 +252,7 @@ static PreferencesController *prefs = nil;
         [nameTextField setEnabled:NO];
         [selectSharedPlayerButton setEnabled:state];
         
-        if (state && [controller connectToServer]) {
+        if (state && ([controller connectToServer] == 1)) {
             [selectedPlayerTextField setStringValue:[[[NetworkController sharedController] networkObject] serverName]];
             [locationTextField setStringValue:[[NetworkController sharedController] remoteHost]];
         } else {
@@ -264,10 +264,22 @@ static PreferencesController *prefs = nil;
             
         }
     } else if ( [sender tag] == 5050 ) {
-        //Do nothing on table view click
+        //If no player is selected in the table view, turn off OK button.
+        if ([sender clickedRow] == -1 ) {
+            [sharingPanelOKButton setEnabled:NO];
+        } else {
+            [sharingPanelOKButton setEnabled:YES];
+        }
     } else if ( [sender tag] == 5051 ) {
         [df setObject:[sender stringValue] forKey:@"sharedPlayerHost"];
     } else if ( [sender tag] == 5060 ) {
+        //Set OK button state
+        if (([selectPlayerBox contentView] == zeroConfView && [sharingTableView selectedRow] == -1) ||
+            ([selectPlayerBox contentView] == manualView && [[hostTextField stringValue] length] == 0)) {
+            [sharingPanelOKButton setEnabled:NO];
+        } else {
+            [sharingPanelOKButton setEnabled:YES];
+        }
         //Show selection sheet
         [NSApp beginSheet:selectPlayerSheet modalForWindow:window modalDelegate:self didEndSelector:NULL contextInfo:nil];
     } else if ( [sender tag] == 5100 ) {
@@ -276,13 +288,20 @@ static PreferencesController *prefs = nil;
             NSRect frame = [selectPlayerSheet frame];
             frame.origin.y -= 58;
             frame.size.height = 273;
+            if ([sharingTableView selectedRow] == -1) {
+                [sharingPanelOKButton setEnabled:NO];
+            }
             [selectPlayerBox setContentView:zeroConfView];
             [selectPlayerSheet setFrame:frame display:YES animate:YES];
         } else if ( ([sender indexOfItem:[sender selectedItem]] == 1) && ([selectPlayerBox contentView] != manualView) ){
             NSRect frame = [selectPlayerSheet frame];
             frame.origin.y += 58;
             frame.size.height = 215;
-            //[window makeFirstResponder:hostTextField];
+            if ([[hostTextField stringValue] length] == 0) {
+                [sharingPanelOKButton setEnabled:NO];
+            } else {
+                [sharingPanelOKButton setEnabled:YES];
+            }
             [selectPlayerBox setContentView:manualView];
             [selectPlayerSheet setFrame:frame display:YES animate:YES];
             [hostTextField selectText:nil];
@@ -315,7 +334,7 @@ static PreferencesController *prefs = nil;
             }
         }
         
-        if ([controller connectToServer]) {
+        if ([controller connectToServer] == 1) {
             [useSharedMenuTunesCheckbox setState:NSOnState];
             [selectedPlayerTextField setStringValue:[[[NetworkController sharedController] networkObject] serverName]];
             [locationTextField setStringValue:[[NetworkController sharedController] remoteHost]];
@@ -790,6 +809,21 @@ static PreferencesController *prefs = nil;
     [(MainController *)controller closePreferences]; 
 }
 
+/*************************************************************************/
+#pragma mark -
+#pragma mark NSTextField DELEGATE METHODS
+/*************************************************************************/
+
+- (void)controlTextDidChange:(NSNotification*)note
+{
+    if ([note object] == hostTextField) {
+        if ([[hostTextField stringValue] length] == 0) {
+            [sharingPanelOKButton setEnabled:NO];
+        } else {
+            [sharingPanelOKButton setEnabled:YES];
+        }
+    }
+}
 
 /*************************************************************************/
 #pragma mark -
index 485158e..513ae4d 100755 (executable)
Binary files a/libValidate.a and b/libValidate.a differ