mirror of
https://github.com/transmission/transmission.git
synced 2025-12-24 20:35:36 +00:00
#1679 speed limit for specific day(s) only in Mac gui
This commit is contained in:
@@ -36,6 +36,17 @@
|
||||
#define DOWNLOAD_FOLDER 0
|
||||
#define DOWNLOAD_TORRENT 2
|
||||
|
||||
#define SCHED_ALL_TAG 0
|
||||
#define SCHED_WEEKDAY_TAG 1
|
||||
#define SCHED_WEEKEND_TAG 2
|
||||
#define SCHED_MON_TAG 3
|
||||
#define SCHED_TUES_TAG 4
|
||||
#define SCHED_WED_TAG 5
|
||||
#define SCHED_THURS_TAG 6
|
||||
#define SCHED_FRI_TAG 7
|
||||
#define SCHED_SAT_TAG 8
|
||||
#define SCHED_SUN_TAG 9
|
||||
|
||||
#define PROXY_HTTP 0
|
||||
#define PROXY_SOCKS4 1
|
||||
#define PROXY_SOCKS5 2
|
||||
@@ -100,6 +111,9 @@ tr_session * fHandle;
|
||||
[fDefaults removeObjectForKey: @"DownloadChoice"];
|
||||
}
|
||||
|
||||
//set auto speed limit day
|
||||
[self updateAutoSpeedLimitDay];
|
||||
|
||||
//save a new random port
|
||||
if ([fDefaults boolForKey: @"RandomPort"])
|
||||
[fDefaults setInteger: tr_sessionGetPeerPort(fHandle) forKey: @"BindPort"];
|
||||
@@ -187,6 +201,42 @@ tr_session * fHandle;
|
||||
[fSpeedLimitUploadField setIntValue: [fDefaults integerForKey: @"SpeedLimitUploadLimit"]];
|
||||
[fSpeedLimitDownloadField setIntValue: [fDefaults integerForKey: @"SpeedLimitDownloadLimit"]];
|
||||
|
||||
int schedDay;
|
||||
switch (tr_sessionGetAltSpeedDay(fHandle))
|
||||
{
|
||||
case TR_SCHED_ALL:
|
||||
schedDay = SCHED_ALL_TAG;
|
||||
break;
|
||||
case TR_SCHED_WEEKDAY:
|
||||
schedDay = SCHED_WEEKDAY_TAG;
|
||||
break;
|
||||
case TR_SCHED_WEEKEND:
|
||||
schedDay = SCHED_WEEKEND_TAG;
|
||||
break;
|
||||
case TR_SCHED_MON:
|
||||
schedDay = SCHED_MON_TAG;
|
||||
break;
|
||||
case TR_SCHED_TUES:
|
||||
schedDay = SCHED_TUES_TAG;
|
||||
break;
|
||||
case TR_SCHED_WED:
|
||||
schedDay = SCHED_WED_TAG;
|
||||
break;
|
||||
case TR_SCHED_THURS:
|
||||
schedDay = SCHED_THURS_TAG;
|
||||
break;
|
||||
case TR_SCHED_FRI:
|
||||
schedDay = SCHED_FRI_TAG;
|
||||
break;
|
||||
case TR_SCHED_SAT:
|
||||
schedDay = SCHED_SAT_TAG;
|
||||
break;
|
||||
case TR_SCHED_SUN:
|
||||
schedDay = SCHED_SUN_TAG;
|
||||
break;
|
||||
}
|
||||
[fAutoSpeedDayTypePopUp selectItemWithTag: schedDay];
|
||||
|
||||
//set port
|
||||
[fPortField setIntValue: [fDefaults integerForKey: @"BindPort"]];
|
||||
fNatStatus = -1;
|
||||
@@ -207,7 +257,7 @@ tr_session * fHandle;
|
||||
//set proxy type
|
||||
[fProxyAddressField setStringValue: [fDefaults stringForKey: @"ProxyAddress"]];
|
||||
int proxyType;
|
||||
switch(tr_sessionGetProxyType(fHandle))
|
||||
switch (tr_sessionGetProxyType(fHandle))
|
||||
{
|
||||
case TR_PROXY_SOCKS4:
|
||||
proxyType = PROXY_SOCKS4;
|
||||
@@ -609,6 +659,83 @@ tr_session * fHandle;
|
||||
tr_sessionSetAltSpeedEnd(fHandle, [PrefsController dateToTimeSum: [fDefaults objectForKey: @"SpeedLimitAutoOffDate"]]);
|
||||
}
|
||||
|
||||
- (void) setAutoSpeedLimitDay: (id) sender
|
||||
{
|
||||
NSString * day;
|
||||
switch ([[sender selectedItem] tag])
|
||||
{
|
||||
case SCHED_ALL_TAG:
|
||||
day = @"ALL";
|
||||
break;
|
||||
case SCHED_WEEKDAY_TAG:
|
||||
day = @"WEEKDAY";
|
||||
break;
|
||||
case SCHED_WEEKEND_TAG:
|
||||
day = @"WEEKEND";
|
||||
break;
|
||||
case SCHED_MON_TAG:
|
||||
day = @"MON";
|
||||
break;
|
||||
case SCHED_TUES_TAG:
|
||||
day = @"TUES";
|
||||
break;
|
||||
case SCHED_WED_TAG:
|
||||
day = @"WED";
|
||||
break;
|
||||
case SCHED_THURS_TAG:
|
||||
day = @"THURS";
|
||||
break;
|
||||
case SCHED_FRI_TAG:
|
||||
day = @"FRI";
|
||||
break;
|
||||
case SCHED_SAT_TAG:
|
||||
day = @"SAT";
|
||||
break;
|
||||
case SCHED_SUN_TAG:
|
||||
day = @"SUN";
|
||||
break;
|
||||
}
|
||||
|
||||
[fDefaults setObject: day forKey: @"SpeedLimitAutoDay"];
|
||||
[self updateAutoSpeedLimitDay];
|
||||
}
|
||||
|
||||
- (void) updateAutoSpeedLimitDay
|
||||
{
|
||||
NSString * dayString = [fDefaults stringForKey: @"SpeedLimitAutoDay"];
|
||||
tr_sched_day day;
|
||||
if ([dayString isEqualToString: @"WEEKDAY"])
|
||||
day = TR_SCHED_WEEKDAY;
|
||||
else if ([dayString isEqualToString: @"WEEKEND"])
|
||||
day = TR_SCHED_WEEKEND;
|
||||
else if ([dayString isEqualToString: @"MON"])
|
||||
day = TR_SCHED_MON;
|
||||
else if ([dayString isEqualToString: @"TUES"])
|
||||
day = TR_SCHED_TUES;
|
||||
else if ([dayString isEqualToString: @"WED"])
|
||||
day = TR_SCHED_WED;
|
||||
else if ([dayString isEqualToString: @"THURS"])
|
||||
day = TR_SCHED_THURS;
|
||||
else if ([dayString isEqualToString: @"FRI"])
|
||||
day = TR_SCHED_FRI;
|
||||
else if ([dayString isEqualToString: @"SAT"])
|
||||
day = TR_SCHED_SAT;
|
||||
else if ([dayString isEqualToString: @"SUN"])
|
||||
day = TR_SCHED_SUN;
|
||||
else
|
||||
{
|
||||
//safety
|
||||
if (![dayString isEqualToString: @"ALL"])
|
||||
{
|
||||
dayString = @"ALL";
|
||||
[fDefaults setObject: dayString forKey: @"SpeedLimitAutoDay"];
|
||||
}
|
||||
day = TR_SCHED_ALL;
|
||||
}
|
||||
|
||||
tr_sessionSetAltSpeedDay(fHandle, day);
|
||||
}
|
||||
|
||||
+ (NSInteger) dateToTimeSum: (NSDate *) date
|
||||
{
|
||||
NSCalendar * calendar = [NSCalendar currentCalendar];
|
||||
|
||||
Reference in New Issue
Block a user