diff --git a/macosx/Controller.h b/macosx/Controller.h index b294b8fc3..30a332708 100644 --- a/macosx/Controller.h +++ b/macosx/Controller.h @@ -186,6 +186,8 @@ typedef enum - (void) resizeStatusButton; - (void) setBottomCountText: (BOOL) filtering; +- (void) updateSpeedFieldsToolTips; + - (void) updateTorrentsInQueue; - (NSInteger) numToStartFromQueue: (BOOL) downloadQueue; diff --git a/macosx/Controller.m b/macosx/Controller.m index 8f85499b8..2386741d6 100644 --- a/macosx/Controller.m +++ b/macosx/Controller.m @@ -348,8 +348,7 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy //set up status bar [fStatusBar setHidden: YES]; - [fTotalDLField setToolTip: NSLocalizedString(@"Total download speed", "Status Bar -> speed tooltip")]; - [fTotalULField setToolTip: NSLocalizedString(@"Total upload speed", "Status Bar -> speed tooltip")]; + [self updateSpeedFieldsToolTips]; NSRect statusBarFrame = [fStatusBar frame]; statusBarFrame.size.width = windowSize.width; @@ -489,6 +488,10 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy //update when groups change [nc addObserver: self selector: @selector(updateGroupsFilters:) name: @"UpdateGroups" object: nil]; + + //update when speed limits are changed + [nc addObserver: self selector: @selector(updateSpeedFieldsToolTips) + name: @"SpeedLimitUpdate" object: nil]; //timer to update the interface every second [self updateUI]; @@ -1593,6 +1596,42 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy [fTotalTorrentsField setStringValue: totalTorrentsString]; } +- (void) updateSpeedFieldsToolTips +{ + NSString * uploadText, * downloadText; + + if ([fDefaults boolForKey: @"SpeedLimit"]) + { + NSString * speedString = [NSString stringWithFormat: @"%@ (%@)", NSLocalizedString(@"%d KB/s", "Status Bar -> speed tooltip"), + NSLocalizedString(@"Speed Limit", "Status Bar -> speed tooltip")]; + + uploadText = [NSString stringWithFormat: speedString, [fDefaults integerForKey: @"SpeedLimitUploadLimit"]]; + downloadText = [NSString stringWithFormat: speedString, [fDefaults integerForKey: @"SpeedLimitDownloadLimit"]]; + } + else + { + if ([fDefaults boolForKey: @"CheckUpload"]) + uploadText = [NSString stringWithFormat: NSLocalizedString(@"%d KB/s", "Status Bar -> speed tooltip"), + [fDefaults integerForKey: @"UploadLimit"]]; + else + uploadText = NSLocalizedString(@"unlimited", "Status Bar -> speed tooltip"); + + if ([fDefaults boolForKey: @"CheckDownload"]) + downloadText = [NSString stringWithFormat: NSLocalizedString(@"%d KB/s", "Status Bar -> speed tooltip"), + [fDefaults integerForKey: @"DownloadLimit"]]; + else + downloadText = NSLocalizedString(@"unlimited", "Status Bar -> speed tooltip"); + } + + uploadText = [NSLocalizedString(@"Total upload rate", "Status Bar -> speed tooltip") + stringByAppendingFormat: @": %@", uploadText]; + downloadText = [NSLocalizedString(@"Total download rate", "Status Bar -> speed tooltip") + stringByAppendingFormat: @": %@", downloadText]; + + [fTotalULField setToolTip: uploadText]; + [fTotalDLField setToolTip: downloadText]; +} + - (void) updateTorrentsInQueue { BOOL download = [fDefaults boolForKey: @"Queue"], diff --git a/macosx/PrefsController.m b/macosx/PrefsController.m index 3c16dfb69..84008bc84 100644 --- a/macosx/PrefsController.m +++ b/macosx/PrefsController.m @@ -536,6 +536,8 @@ tr_handle * fHandle; tr_sessionSetSpeedLimitEnabled(fHandle, TR_DOWN, [fDefaults boolForKey: @"CheckDownload"]); tr_sessionSetSpeedLimit(fHandle, TR_DOWN, [fDefaults integerForKey: @"DownloadLimit"]); } + + [[NSNotificationCenter defaultCenter] postNotificationName: @"SpeedLimitUpdate" object: nil]; } - (void) applyRatioSetting: (id) sender @@ -1044,6 +1046,8 @@ tr_handle * fHandle; int upLimit = tr_sessionGetSpeedLimit(fHandle, TR_UP); [fDefaults setInteger: upLimit forKey: @"UploadLimit"]; + [[NSNotificationCenter defaultCenter] postNotificationName: @"SpeedLimitUpdate" object: nil]; + //update gui if loaded if (fHasLoaded) {