]> granicus.if.org Git - transmission/commitdiff
only have a single proxy password, regardless of account name, address, etc; only...
authorMitchell Livingston <livings124@transmissionbt.com>
Fri, 13 Jun 2008 03:44:56 +0000 (03:44 +0000)
committerMitchell Livingston <livings124@transmissionbt.com>
Fri, 13 Jun 2008 03:44:56 +0000 (03:44 +0000)
macosx/PrefsController.h
macosx/PrefsController.m

index 5ce8d5e533d8ebd39521d2e0a2fece1e0c30d967..daa23b01f75e17d96cffa598fcc5a355219c472c 100644 (file)
@@ -60,6 +60,7 @@
     IBOutlet NSTextField * fProxyAddressField, * fProxyPasswordField;
     IBOutlet NSPopUpButton * fProxyTypePopUp;
     NSString * fProxyPassword;
+    BOOL fProxyPasswordSet;
     
     IBOutlet NSTextField * fRPCPortField;
     IBOutlet NSTableView * fRPCAccessTable;
index 8ef0bdfbc2f0e99891c55ad061031c282c2e77f1..95a1821fb6a88ead8a238628066809fbdbbc0479 100644 (file)
         
         //set proxy type
         [self updateProxyType];
-        [self updateProxyPassword];
+        
+        fProxyPasswordSet = NO;
+        if ([fProxyPasswordField isEnabled])
+            [self updateProxyPassword];
         
         //update rpc access list
         fRPCAccessArray = [[fDefaults arrayForKey: @"RPCAccessList"] mutableCopy];
             proxyType = PROXY_HTTP;
     }
     [fProxyTypePopUp selectItemAtIndex: proxyType];
-    [fProxyPasswordField setStringValue: fProxyPassword];
+    [fProxyPasswordField setStringValue: fProxyPassword ? fProxyPassword : @""];
     
     //set blocklist
     [self updateBlocklistFields];
 - (void) setProxyEnabled: (id) sender
 {
     tr_sessionSetProxyEnabled(fHandle, [fDefaults boolForKey: @"Proxy"]);
+    
+    //if proxy password hasn't be retrieved, get it now
+    if (!fProxyPasswordSet && [fProxyPasswordField isEnabled])
+    {
+        [self updateProxyPassword];
+        [fProxyPasswordField setStringValue: fProxyPassword];
+    }
 }
 
 - (void) setProxyAddress: (id) sender
 - (void) setProxyAuthorize: (id) sender
 {
     tr_sessionSetProxyAuthEnabled(fHandle, [fDefaults boolForKey: @"ProxyAuthorize"]);
+    
+    //if proxy password hasn't be retrieved, get it now
+    if (!fProxyPasswordSet && [fProxyPasswordField isEnabled])
+    {
+        [self updateProxyPassword];
+        [fProxyPasswordField setStringValue: fProxyPassword];
+    }
 }
 
 - (void) setProxyUsername: (id) sender
 {
     tr_sessionSetProxyUsername(fHandle, [[fDefaults stringForKey: @"ProxyUsername"] UTF8String]);
-    
-    //new username means new password
-    [self updateProxyPassword];
-    [fProxyPasswordField setStringValue: fProxyPassword];
 }
 
 - (void) setProxyPassword: (id) sender
 {
-    NSString * username = [fDefaults stringForKey: @"ProxyUsername"];
-    
-    //don't allow passwords to be set if no user name
-    if ([username isEqualToString: @""])
-    {
-        [sender setStringValue: @""];
-        
-        [fProxyPassword release];
-        fProxyPassword = [@"" retain];
-        return;
-    }
-    
     [fProxyPassword release];
     fProxyPassword = [[sender stringValue] retain];
     
     EMGenericKeychainItem * keychainItem = [[EMKeychainProxy sharedProxy] genericKeychainItemForService: @"Transmission:Proxy"
-                                            withUsername: username];
+                                            withUsername: @"Proxy"];
     if (keychainItem)
         [keychainItem setPassword: fProxyPassword];
     else
-        [[EMKeychainProxy sharedProxy] addGenericKeychainItemForService: @"Transmission:Proxy" withUsername: username
+        [[EMKeychainProxy sharedProxy] addGenericKeychainItemForService: @"Transmission:Proxy" withUsername: @"Proxy"
             password: fProxyPassword];
     
     tr_sessionSetProxyPassword(fHandle, [fProxyPassword UTF8String]);
 
 - (void) updateProxyPassword
 {
-    [fProxyPassword release];
+    fProxyPasswordSet = YES;
     
-    NSString * username = [fDefaults stringForKey: @"ProxyUsername"];
+    [fProxyPassword release];
     
-    if (![username isEqualToString: @""])
-    {
-        EMGenericKeychainItem * keychainItem = [[EMKeychainProxy sharedProxy] genericKeychainItemForService: @"Transmission:Proxy"
-                                                withUsername: [fDefaults stringForKey: @"ProxyUsername"]];
-        if (!(fProxyPassword = [keychainItem password]))
-            fProxyPassword = @"";
-    }
-    else
+    EMGenericKeychainItem * keychainItem = [[EMKeychainProxy sharedProxy] genericKeychainItemForService: @"Transmission:Proxy"
+                                            withUsername: @"Proxy"];
+    if (!(fProxyPassword = [keychainItem password]))
         fProxyPassword = @"";
-    
     [fProxyPassword retain];
     
     tr_sessionSetProxyPassword(fHandle, [fProxyPassword UTF8String]);