1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2025-03-09 13:50:00 +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:
Mitchell Livingston 2006-06-30 23:43:43 +00:00
parent 05467ddfe4
commit 3beaefcf93
11 changed files with 130 additions and 28 deletions

View file

@ -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;

View file

@ -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)

View file

@ -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>

View file

@ -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;

View file

@ -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>

Binary file not shown.

View file

@ -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;

View file

@ -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>

View file

@ -40,9 +40,12 @@
* 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,6 +55,7 @@
IBOutlet SUUpdater * fUpdater;
NSString * fDownloadFolder;
BOOL fSpeedLimit;
NSUserDefaults * fDefaults;
}
@ -70,12 +74,15 @@
- (void) folderSheetShow: (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) enableSpeedLimit: (BOOL) enable;
- (void) setRatio: (id) sender;
- (void) setRatioCheck: (id) sender;
- (void) setRatioEnabled: (BOOL) enable;

View file

@ -122,8 +122,6 @@
[fUploadField setIntValue: uploadLimit];
[fUploadField setEnabled: checkUpload];
tr_setUploadLimit(fHandle, checkUpload ? uploadLimit : -1);
//set download limit
BOOL checkDownload = [fDefaults boolForKey: @"CheckDownload"];
int downloadLimit = [fDefaults integerForKey: @"DownloadLimit"];
@ -132,7 +130,26 @@
[fDownloadField setIntValue: downloadLimit];
[fDownloadField setEnabled: checkDownload];
//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"];
@ -291,11 +308,14 @@
[sender setIntValue: limit];
}
else
{
if (!fSpeedLimit)
{
if (sender == fUploadField)
tr_setUploadLimit(fHandle, [fUploadCheck state] == NSOffState ? -1 : limit);
tr_setUploadLimit(fHandle, [fUploadCheck state] ? limit : -1);
else
tr_setDownloadLimit(fHandle, [fDownloadCheck state] == NSOffState ? -1 : limit);
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];