]> granicus.if.org Git - transmission/commitdiff
inspector: update the displayed global seeding settings only when necessary; update...
authorMitchell Livingston <livings124@transmissionbt.com>
Sat, 12 Feb 2011 03:28:36 +0000 (03:28 +0000)
committerMitchell Livingston <livings124@transmissionbt.com>
Sat, 12 Feb 2011 03:28:36 +0000 (03:28 +0000)
macosx/InfoOptionsViewController.m
macosx/PrefsController.m

index c9ef1801684d87d887951f27c5f70909ba9f07eb..4953d241a1f8bee5a661f5164508578afacaabc4 100644 (file)
@@ -39,6 +39,7 @@
 @interface InfoOptionsViewController (Private)
 
 - (void) setupInfo;
+- (void) setGlobalLabels;
 
 @end
 
     return self;
 }
 
+- (void) awakeFromNib
+{
+    [self setGlobalLabels];
+    
+    [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(setGlobalLabels) name: @"UpdateGlobalOptions"
+        object: nil];
+}
+
 - (void) dealloc
 {
+    [[NSNotificationCenter defaultCenter] removeObserver: self];
+    
     [fTorrents release];
     
     [super dealloc];
         [fRatioLimitField setStringValue: @""];
     
     [fRatioLimitGlobalLabel setHidden: checkRatio != TR_RATIOLIMIT_GLOBAL];
-    if (checkRatio == TR_RATIOLIMIT_GLOBAL)
-    {
-        NSString * global = [[NSUserDefaults standardUserDefaults] boolForKey: @"RatioCheck"]
-            ? [NSString stringForRatio: [[NSUserDefaults standardUserDefaults] floatForKey: @"RatioLimit"]]
-            : NSLocalizedString(@"disabled", "Info options -> global setting");
-        [fRatioLimitGlobalLabel setStringValue: global];
-    }
     
     //set idle view
     if (checkIdle == TR_IDLELIMIT_SINGLE)
     [fIdleLimitLabel setHidden: checkIdle != TR_IDLELIMIT_SINGLE];
     
     [fIdleLimitGlobalLabel setHidden: checkIdle != TR_IDLELIMIT_GLOBAL];
-    if (checkIdle == TR_IDLELIMIT_GLOBAL)
-    {
-        NSString * global;
-        if ([[NSUserDefaults standardUserDefaults] boolForKey: @"IdleLimitCheck"])
-        {
-            const NSInteger globalMin = [[NSUserDefaults standardUserDefaults] integerForKey: @"IdleLimitMinutes"];
-            global = globalMin == 1 ? NSLocalizedString(@"1 minute", "Info options -> global setting")
-                : [NSString stringWithFormat: NSLocalizedString(@"%d minutes", "Info options -> global setting"), globalMin];
-        }
-        else
-            global = NSLocalizedString(@"disabled", "Info options -> global setting");
-        [fIdleLimitGlobalLabel setStringValue: global];
-    }
     
     //get priority info
     enumerator = [fTorrents objectEnumerator];
         [[[self view] window] makeKeyAndOrderFront: self];
     }
     
-    [self updateOptions]; //heavy-handed reload of global settings
+    [fRatioLimitGlobalLabel setHidden: setting != TR_RATIOLIMIT_GLOBAL];
 }
 
 - (void) setRatioLimit: (id) sender
         [[[self view] window] makeKeyAndOrderFront: self];
     }
     
-    [self updateOptions]; //heavy-handed reload of global settings
+    [fIdleLimitGlobalLabel setHidden: setting != TR_IDLELIMIT_GLOBAL];
 }
 
 - (void) setIdleLimit: (id) sender
         [self updateOptions];
 }
 
+- (void) setGlobalLabels
+{
+    NSString * global = [[NSUserDefaults standardUserDefaults] boolForKey: @"RatioCheck"]
+        ? [NSString stringForRatio: [[NSUserDefaults standardUserDefaults] floatForKey: @"RatioLimit"]]
+        : NSLocalizedString(@"disabled", "Info options -> global setting");
+    [fRatioLimitGlobalLabel setStringValue: global];
+    
+    //idle field
+    NSString * globalIdle;
+    if ([[NSUserDefaults standardUserDefaults] boolForKey: @"IdleLimitCheck"])
+    {
+        const NSInteger globalMin = [[NSUserDefaults standardUserDefaults] integerForKey: @"IdleLimitMinutes"];
+        globalIdle = globalMin == 1 ? NSLocalizedString(@"1 minute", "Info options -> global setting")
+            : [NSString stringWithFormat: NSLocalizedString(@"%d minutes", "Info options -> global setting"), globalMin];
+    }
+    else
+        globalIdle = NSLocalizedString(@"disabled", "Info options -> global setting");
+    [fIdleLimitGlobalLabel setStringValue: globalIdle];
+}
+
 @end
index 27aa5dbe3fb1c5e4cb3ad70f2ef070f800514536..7b5280e90e4c5f9c9081d6c84495440868621a60 100644 (file)
@@ -599,7 +599,7 @@ tr_session * fHandle;
     tr_sessionSetRatioLimit(fHandle, [fDefaults floatForKey: @"RatioLimit"]);
     
     //reload global settings in inspector
-    [[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateOptions" object: nil];
+    [[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateGlobalOptions" object: nil];
 }
 
 - (void) setRatioStop: (id) sender
@@ -623,7 +623,7 @@ tr_session * fHandle;
     tr_sessionSetIdleLimit(fHandle, [fDefaults integerForKey: @"IdleLimitMinutes"]);
     
     //reload global settings in inspector
-    [[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateOptions" object: nil];
+    [[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateGlobalOptions" object: nil];
 }
 
 - (void) setIdleStop: (id) sender
@@ -1246,7 +1246,7 @@ tr_session * fHandle;
     [[NSNotificationCenter defaultCenter] postNotificationName: @"SpeedLimitUpdate" object: nil];
     
     //reload global settings in inspector
-    [[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateOptions" object: nil];
+    [[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateGlobalOptions" object: nil];
 }
 
 @end