mirror of
https://github.com/transmission/transmission
synced 2025-03-09 05:14:09 +00:00
Speed Limit: a way to quickly change the upload and download limits for when less bandwidth has to be used.
This commit is contained in:
parent
05467ddfe4
commit
3beaefcf93
11 changed files with 130 additions and 28 deletions
|
@ -49,7 +49,7 @@
|
|||
IBOutlet TorrentTableView * fTableView;
|
||||
NSToolbar * fToolbar;
|
||||
|
||||
IBOutlet NSMenuItem * fAdvancedBarItem;
|
||||
IBOutlet NSMenuItem * fAdvancedBarItem, * fSpeedLimitItem;
|
||||
IBOutlet NSButton * fActionButton;
|
||||
|
||||
IBOutlet SmoothAquaView * fStatusBar;
|
||||
|
@ -124,6 +124,8 @@
|
|||
- (void) sortTorrents;
|
||||
- (void) setSort: (id) sender;
|
||||
|
||||
- (void) toggleSpeedLimit: (id) sender;
|
||||
|
||||
- (void) setLimitGlobalEnabled: (id) sender;
|
||||
- (void) setQuickLimitGlobal: (id) sender;
|
||||
- (void) limitGlobalChange: (NSNotification *) notification;
|
||||
|
|
|
@ -125,6 +125,10 @@ static void sleepCallBack(void * controller, io_service_t y,
|
|||
+ [fScrollView frame].size.height)];
|
||||
[self showStatusBar: [fDefaults boolForKey: @"StatusBar"] animate: NO];
|
||||
|
||||
//set speed limit
|
||||
BOOL speedLimit = [fDefaults boolForKey: @"SpeedLimit"];
|
||||
[fSpeedLimitItem setState: speedLimit];
|
||||
|
||||
[fActionButton setToolTip: @"Shortcuts for changing global settings."];
|
||||
|
||||
[fTableView setTorrents: fTorrents];
|
||||
|
@ -915,6 +919,16 @@ static void sleepCallBack(void * controller, io_service_t y,
|
|||
[self sortTorrents];
|
||||
}
|
||||
|
||||
- (void) toggleSpeedLimit: (id) sender
|
||||
{
|
||||
BOOL enable = [fSpeedLimitItem state] == NSOffState;
|
||||
|
||||
[fSpeedLimitItem setState: enable];
|
||||
[fDefaults setBool: enable forKey: @"SpeedLimit"];
|
||||
|
||||
[fPrefsController enableSpeedLimit: enable];
|
||||
}
|
||||
|
||||
- (void) setLimitGlobalEnabled: (id) sender
|
||||
{
|
||||
[fPrefsController setLimitEnabled: (sender == fUploadLimitItem || sender == fDownloadLimitItem)
|
||||
|
|
|
@ -50,6 +50,12 @@
|
|||
<false/>
|
||||
<key>Sort</key>
|
||||
<string>Order</string>
|
||||
<key>SpeedLimit</key>
|
||||
<false/>
|
||||
<key>SpeedLimitDownloadLimit</key>
|
||||
<integer>10</integer>
|
||||
<key>SpeedLimitUploadLimit</key>
|
||||
<integer>10</integer>
|
||||
<key>StartSetting</key>
|
||||
<string>Start</string>
|
||||
<key>StatusBar</key>
|
||||
|
|
2
macosx/English.lproj/MainMenu.nib/classes.nib
generated
2
macosx/English.lproj/MainMenu.nib/classes.nib
generated
|
@ -26,6 +26,7 @@
|
|||
showPreferenceWindow = id;
|
||||
stopAllTorrents = id;
|
||||
stopTorrent = id;
|
||||
toggleSpeedLimit = id;
|
||||
toggleStatusBar = id;
|
||||
};
|
||||
CLASS = Controller;
|
||||
|
@ -45,6 +46,7 @@
|
|||
fRatioNotSetItem = NSMenuItem;
|
||||
fRatioSetItem = NSMenuItem;
|
||||
fScrollView = NSScrollView;
|
||||
fSpeedLimitItem = NSMenuItem;
|
||||
fStateSortItem = NSMenuItem;
|
||||
fStatusBar = SmoothAquaView;
|
||||
fTableView = TorrentTableView;
|
||||
|
|
3
macosx/English.lproj/MainMenu.nib/info.nib
generated
3
macosx/English.lproj/MainMenu.nib/info.nib
generated
|
@ -30,9 +30,8 @@
|
|||
<key>IBOpenObjects</key>
|
||||
<array>
|
||||
<integer>29</integer>
|
||||
<integer>21</integer>
|
||||
</array>
|
||||
<key>IBSystem Version</key>
|
||||
<string>8I127</string>
|
||||
<string>8J135</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
BIN
macosx/English.lproj/MainMenu.nib/keyedobjects.nib
generated
BIN
macosx/English.lproj/MainMenu.nib/keyedobjects.nib
generated
Binary file not shown.
3
macosx/English.lproj/PrefsWindow.nib/classes.nib
generated
3
macosx/English.lproj/PrefsWindow.nib/classes.nib
generated
|
@ -14,6 +14,7 @@
|
|||
setRatio = id;
|
||||
setRatioCheck = id;
|
||||
setShowMessage = id;
|
||||
setSpeedLimit = id;
|
||||
setStartSetting = id;
|
||||
setUpdate = id;
|
||||
setWaitToStart = id;
|
||||
|
@ -38,6 +39,8 @@
|
|||
fRatioField = NSTextField;
|
||||
fRemoveCheck = NSButton;
|
||||
fRemoveDownloadingCheck = NSButton;
|
||||
fSpeedLimitDownloadField = NSTextField;
|
||||
fSpeedLimitUploadField = NSTextField;
|
||||
fStartMatrix = NSMatrix;
|
||||
fTransfersView = NSView;
|
||||
fUpdatePopUp = NSPopUpButton;
|
||||
|
|
9
macosx/English.lproj/PrefsWindow.nib/info.nib
generated
9
macosx/English.lproj/PrefsWindow.nib/info.nib
generated
|
@ -7,20 +7,19 @@
|
|||
<key>IBEditorPositions</key>
|
||||
<dict>
|
||||
<key>153</key>
|
||||
<string>261 290 536 130 0 0 1152 842 </string>
|
||||
<string>302 469 548 217 0 0 1152 842 </string>
|
||||
<key>28</key>
|
||||
<string>308 451 536 254 0 0 1152 842 </string>
|
||||
<string>122 427 548 254 0 0 1152 842 </string>
|
||||
<key>41</key>
|
||||
<string>308 438 536 280 0 0 1152 842 </string>
|
||||
<string>130 394 548 297 0 0 1152 842 </string>
|
||||
<key>66</key>
|
||||
<string>300 526 551 104 0 0 1152 842 </string>
|
||||
<string>182 510 548 104 0 0 1152 842 </string>
|
||||
</dict>
|
||||
<key>IBFramework Version</key>
|
||||
<string>446.1</string>
|
||||
<key>IBOpenObjects</key>
|
||||
<array>
|
||||
<integer>153</integer>
|
||||
<integer>28</integer>
|
||||
</array>
|
||||
<key>IBSystem Version</key>
|
||||
<string>8J135</string>
|
||||
|
|
BIN
macosx/English.lproj/PrefsWindow.nib/keyedobjects.nib
generated
BIN
macosx/English.lproj/PrefsWindow.nib/keyedobjects.nib
generated
Binary file not shown.
|
@ -40,8 +40,11 @@
|
|||
* fCopyTorrentCheck, * fDeleteOriginalTorrentCheck;
|
||||
IBOutlet NSPopUpButton * fUpdatePopUp;
|
||||
|
||||
IBOutlet NSTextField * fPortField, * fUploadField, * fDownloadField;
|
||||
IBOutlet NSTextField * fUploadField, * fDownloadField,
|
||||
* fSpeedLimitUploadField, * fSpeedLimitDownloadField;
|
||||
IBOutlet NSButton * fUploadCheck, * fDownloadCheck;
|
||||
|
||||
IBOutlet NSTextField * fPortField;
|
||||
|
||||
IBOutlet NSButton * fRatioCheck;
|
||||
IBOutlet NSTextField * fRatioField;
|
||||
|
@ -52,14 +55,15 @@
|
|||
IBOutlet SUUpdater * fUpdater;
|
||||
|
||||
NSString * fDownloadFolder;
|
||||
BOOL fSpeedLimit;
|
||||
NSUserDefaults * fDefaults;
|
||||
}
|
||||
|
||||
- (void) setPrefs: (tr_handle_t *) handle;
|
||||
|
||||
- (void) setShowMessage: (id) sender;
|
||||
- (void) setBadge: (id) sender;
|
||||
- (void) setUpdate: (id) sender;
|
||||
- (void) setShowMessage: (id) sender;
|
||||
- (void) setBadge: (id) sender;
|
||||
- (void) setUpdate: (id) sender;
|
||||
- (void) checkUpdate;
|
||||
|
||||
- (void) setStartSetting: (id) sender;
|
||||
|
@ -69,16 +73,19 @@
|
|||
- (void) setDownloadLocation: (id) sender;
|
||||
- (void) folderSheetShow: (id) sender;
|
||||
|
||||
- (void) setPort: (id) sender;
|
||||
- (void) setPort: (id) sender;
|
||||
- (void) setSpeedLimit: (id) sender;
|
||||
|
||||
- (void) setLimit: (id) sender;
|
||||
- (void) setLimitCheck: (id) sender;
|
||||
- (void) setLimitEnabled: (BOOL) enable type: (NSString *) type;
|
||||
- (void) setQuickLimit: (int) limit type: (NSString *) type;
|
||||
- (void) setLimit: (id) sender;
|
||||
- (void) setLimitCheck: (id) sender;
|
||||
- (void) setLimitEnabled: (BOOL) enable type: (NSString *) type;
|
||||
- (void) setQuickLimit: (int) limit type: (NSString *) type;
|
||||
|
||||
- (void) setRatio: (id) sender;
|
||||
- (void) setRatioCheck: (id) sender;
|
||||
- (void) setRatioEnabled: (BOOL) enable;
|
||||
- (void) setQuickRatio: (float) ratioLimit;
|
||||
- (void) enableSpeedLimit: (BOOL) enable;
|
||||
|
||||
- (void) setRatio: (id) sender;
|
||||
- (void) setRatioCheck: (id) sender;
|
||||
- (void) setRatioEnabled: (BOOL) enable;
|
||||
- (void) setQuickRatio: (float) ratioLimit;
|
||||
|
||||
@end
|
||||
|
|
|
@ -121,8 +121,6 @@
|
|||
[fUploadCheck setState: checkUpload];
|
||||
[fUploadField setIntValue: uploadLimit];
|
||||
[fUploadField setEnabled: checkUpload];
|
||||
|
||||
tr_setUploadLimit(fHandle, checkUpload ? uploadLimit : -1);
|
||||
|
||||
//set download limit
|
||||
BOOL checkDownload = [fDefaults boolForKey: @"CheckDownload"];
|
||||
|
@ -132,7 +130,26 @@
|
|||
[fDownloadField setIntValue: downloadLimit];
|
||||
[fDownloadField setEnabled: checkDownload];
|
||||
|
||||
tr_setDownloadLimit(fHandle, checkDownload ? downloadLimit : -1);
|
||||
//set speed limit
|
||||
fSpeedLimit = [fDefaults boolForKey: @"SpeedLimit"];
|
||||
|
||||
int speedLimitUploadLimit = [fDefaults integerForKey: @"SpeedLimitUploadLimit"];
|
||||
[fSpeedLimitUploadField setIntValue: speedLimitUploadLimit];
|
||||
|
||||
int speedLimitDownloadLimit = [fDefaults integerForKey: @"SpeedLimitDownloadLimit"];
|
||||
[fSpeedLimitDownloadField setIntValue: speedLimitDownloadLimit];
|
||||
|
||||
//actually set bandwidth limits
|
||||
if (fSpeedLimit)
|
||||
{
|
||||
tr_setUploadLimit(fHandle, speedLimitUploadLimit);
|
||||
tr_setDownloadLimit(fHandle, speedLimitDownloadLimit);
|
||||
}
|
||||
else
|
||||
{
|
||||
tr_setUploadLimit(fHandle, checkUpload ? uploadLimit : -1);
|
||||
tr_setDownloadLimit(fHandle, checkDownload ? downloadLimit : -1);
|
||||
}
|
||||
|
||||
//set ratio limit
|
||||
BOOL ratioCheck = [fDefaults boolForKey: @"RatioCheck"];
|
||||
|
@ -292,10 +309,13 @@
|
|||
}
|
||||
else
|
||||
{
|
||||
if (sender == fUploadField)
|
||||
tr_setUploadLimit(fHandle, [fUploadCheck state] == NSOffState ? -1 : limit);
|
||||
else
|
||||
tr_setDownloadLimit(fHandle, [fDownloadCheck state] == NSOffState ? -1 : limit);
|
||||
if (!fSpeedLimit)
|
||||
{
|
||||
if (sender == fUploadField)
|
||||
tr_setUploadLimit(fHandle, [fUploadCheck state] ? limit : -1);
|
||||
else
|
||||
tr_setDownloadLimit(fHandle, [fDownloadCheck state] ? limit : -1);
|
||||
}
|
||||
|
||||
[fDefaults setInteger: limit forKey: key];
|
||||
}
|
||||
|
@ -353,6 +373,56 @@
|
|||
[self setLimitCheck: check];
|
||||
}
|
||||
|
||||
- (void) enableSpeedLimit: (BOOL) enable
|
||||
{
|
||||
if (fSpeedLimit != enable)
|
||||
{
|
||||
fSpeedLimit = enable;
|
||||
[fDefaults setBool: fSpeedLimit forKey: @"SpeedLimit"];
|
||||
|
||||
if (fSpeedLimit)
|
||||
{
|
||||
tr_setUploadLimit(fHandle, [fDefaults integerForKey: @"SpeedLimitUploadLimit"]);
|
||||
tr_setDownloadLimit(fHandle, [fDefaults integerForKey: @"SpeedLimitDownloadLimit"]);
|
||||
}
|
||||
else
|
||||
{
|
||||
tr_setUploadLimit(fHandle, [fUploadCheck state] ? [fDefaults integerForKey: @"UploadLimit"] : -1);
|
||||
tr_setDownloadLimit(fHandle, [fDownloadCheck state] ? [fDefaults integerForKey: @"DownloadLimit"] : -1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void) setSpeedLimit: (id) sender
|
||||
{
|
||||
NSString * key;
|
||||
if (sender == fSpeedLimitUploadField)
|
||||
key = @"SpeedLimitUploadLimit";
|
||||
else
|
||||
key = @"SpeedLimitDownloadLimit";
|
||||
|
||||
int limit = [sender intValue];
|
||||
if (![[sender stringValue] isEqualToString: [NSString stringWithFormat: @"%d", limit]]
|
||||
|| limit < 0)
|
||||
{
|
||||
NSBeep();
|
||||
limit = [fDefaults integerForKey: key];
|
||||
[sender setIntValue: limit];
|
||||
}
|
||||
else
|
||||
{
|
||||
if (fSpeedLimit)
|
||||
{
|
||||
if (sender == fSpeedLimitUploadField)
|
||||
tr_setUploadLimit(fHandle, limit);
|
||||
else
|
||||
tr_setDownloadLimit(fHandle, limit);
|
||||
}
|
||||
|
||||
[fDefaults setInteger: limit forKey: key];
|
||||
}
|
||||
}
|
||||
|
||||
- (void) setRatio: (id) sender
|
||||
{
|
||||
float ratioLimit = [sender floatValue];
|
||||
|
|
Loading…
Add table
Reference in a new issue