mirror of
https://github.com/transmission/transmission.git
synced 2025-12-24 04:18:39 +00:00
(trunk web) Add turtle mode. Patch from Grug. Fixes #2157
This commit is contained in:
@@ -252,6 +252,29 @@ String.prototype.compareTo = function( that ) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Switch between different dialog tabs
|
||||
*/
|
||||
function changeTab(tab, id) {
|
||||
for ( var x = 0, node; tab.parentNode.childNodes[x]; x++ ) {
|
||||
node = tab.parentNode.childNodes[x];
|
||||
if (node == tab) {
|
||||
node.className = "prefs_tab_enabled";
|
||||
} else {
|
||||
node.className = "prefs_tab_disabled";
|
||||
}
|
||||
}
|
||||
for ( x = 0; tab.parentNode.parentNode.childNodes[x]; x++ ) {
|
||||
node = tab.parentNode.parentNode.childNodes[x];
|
||||
if (node.tagName == "DIV") {
|
||||
if (node.id == id) {
|
||||
node.style.display = "block";
|
||||
} else {
|
||||
node.style.display = "none";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/***
|
||||
**** Preferences
|
||||
@@ -287,6 +310,7 @@ Prefs._SortByProgress = 'percent_completed';
|
||||
Prefs._SortByState = 'state';
|
||||
Prefs._SortByTracker = 'tracker';
|
||||
|
||||
Prefs._TurtleState = 'turtle-state';
|
||||
|
||||
Prefs._Defaults =
|
||||
{
|
||||
@@ -296,7 +320,8 @@ Prefs._Defaults =
|
||||
'show_filter': true,
|
||||
'show_inspector': false,
|
||||
'sort_direction': 'ascending',
|
||||
'sort_method': 'name'
|
||||
'sort_method': 'name',
|
||||
'turtle-state' : false
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -25,6 +25,6 @@ if(!$(this).is('.trans_menu')){$(this).addClass('trans_menu');}
|
||||
$('ul',this).shadowBox();$(this).bind('closemenu',function(){clean();});var liElems=$(this).children('li');for(var j=0;j<liElems.length;j++){if(getOneChild(getOneChild(getOneChild(liElems[j],'DIV'),'UL'),'LI')){$(liElems[j]).click(mainClick);}}
|
||||
$(liElems).hover(mainHoverIn,mainHoverOut).addClass('main').find('>div').addClass('inner');if(transMenuSettings.arrow_char){var arrow_markup=$("<span class='arrow'>"+transMenuSettings.arrow_char+'</span>');if($.browser.mozilla&&+$.browser.version.replace(/\./g,'').slice(0,3)<191){arrow_markup.css('margin-top','-13px');}
|
||||
$('div.inner div.outerbox',this).before(arrow_markup);}
|
||||
$(this).wrap('<div class="main_container"></div>').after('<div style="clear: both; visibility: hidden;"></div>');});};$.fn.transMenu.setDefaults=function(o){$.extend(defaults,o);};$.fn.shadowBox=function(){return this.each(function(){var outer=$('<div class="outerbox"></div>').get(0);if($(this).css('position')=='absolute'){$(outer).css({position:'relative',width:this.offsetWidth,height:this.offsetHeight});}else{$(outer).css('position','absolute');}
|
||||
});};$.fn.transMenu.setDefaults=function(o){$.extend(defaults,o);};$.fn.shadowBox=function(){return this.each(function(){var outer=$('<div class="outerbox"></div>').get(0);if($(this).css('position')=='absolute'){$(outer).css({position:'relative',width:this.offsetWidth,height:this.offsetHeight});}else{$(outer).css('position','absolute');}
|
||||
$(this).addClass('innerBox').wrap(outer).before('<div class="shadowbox1"></div><div class="shadowbox2"></div><div class="shadowbox3"></div>');});};$.fn.selectMenuItem=function(){if(this.find('span.selected').length==0){this.prepend($("<span class='selected'>"+transMenuSettings.selected_char+"</span>"));}
|
||||
return this;};$.fn.deselectMenuItem=function(){return this.find('span.selected').remove();};$.fn.menuItemIsSelected=function(){return(this.find('span.selected').length>0);};$.fn.deselectMenuSiblings=function(){this.parent().find('span.selected').remove();this.selectMenuItem();return this;};})(jQuery);
|
||||
|
||||
@@ -52,6 +52,7 @@ Transmission.prototype =
|
||||
$('#open_link').bind('click', function(e){ tr.openTorrentClicked(e); });
|
||||
$('#upload_confirm_button').bind('click', function(e){ tr.confirmUploadClicked(e); return false;});
|
||||
$('#upload_cancel_button').bind('click', function(e){ tr.cancelUploadClicked(e); return false; });
|
||||
$('#turtle_button').bind('click', function(e){ tr.toggleTurtleClicked(e); return false; });
|
||||
if (iPhone) {
|
||||
$('#inspector_close').bind('click', function(e){ tr.hideInspector(); });
|
||||
$('#preferences_link').bind('click', function(e){ tr.releaseClutchPreferencesButton(e); });
|
||||
@@ -65,6 +66,7 @@ Transmission.prototype =
|
||||
this.createContextMenu();
|
||||
this.createSettingsMenu();
|
||||
}
|
||||
this.initTurtleDropDowns();
|
||||
|
||||
this._torrent_list = $('#torrent_list')[0];
|
||||
this._inspector_file_list = $('#inspector_file_list')[0];
|
||||
@@ -309,6 +311,19 @@ Transmission.prototype =
|
||||
},
|
||||
|
||||
|
||||
initTurtleDropDowns: function() {
|
||||
var i, out, hour, mins;
|
||||
// Build the list of times
|
||||
out = "";
|
||||
for (i = 0; i < 24 * 4; i++) {
|
||||
hour = parseInt(i / 4);
|
||||
mins = ((i % 4) * 15);
|
||||
out += "<option value='" + (i * 15) + "'>" + hour + ":" + (mins == 0 ? "00" : mins) + "</option>";
|
||||
}
|
||||
setInnerHTML( $('#turtle_start_time')[0], out );
|
||||
setInnerHTML( $('#turtle_end_time')[0], out );
|
||||
},
|
||||
|
||||
/*--------------------------------------------
|
||||
*
|
||||
* U T I L I T I E S
|
||||
@@ -604,15 +619,22 @@ Transmission.prototype =
|
||||
|
||||
// pass the new prefs upstream to the RPC server
|
||||
var o = { };
|
||||
o[RPC._PeerPort] = parseInt( $('#prefs_form #port')[0].value );
|
||||
o[RPC._UpSpeedLimit] = parseInt( $('#prefs_form #upload_rate')[0].value );
|
||||
o[RPC._DownSpeedLimit] = parseInt( $('#prefs_form #download_rate')[0].value );
|
||||
o[RPC._DownloadDir] = $('#prefs_form #download_location')[0].value;
|
||||
o[RPC._UpSpeedLimited] = $('#prefs_form #limit_upload')[0].checked;
|
||||
o[RPC._DownSpeedLimited] = $('#prefs_form #limit_download')[0].checked;
|
||||
o[RPC._Encryption] = $('#prefs_form #encryption')[0].checked
|
||||
? RPC._EncryptionRequired
|
||||
: RPC._EncryptionPreferred;
|
||||
o[RPC._PeerPort] = parseInt( $('#prefs_form #port')[0].value );
|
||||
o[RPC._UpSpeedLimit] = parseInt( $('#prefs_form #upload_rate')[0].value );
|
||||
o[RPC._DownSpeedLimit] = parseInt( $('#prefs_form #download_rate')[0].value );
|
||||
o[RPC._DownloadDir] = $('#prefs_form #download_location')[0].value;
|
||||
o[RPC._UpSpeedLimited] = $('#prefs_form #limit_upload')[0].checked;
|
||||
o[RPC._DownSpeedLimited] = $('#prefs_form #limit_download')[0].checked;
|
||||
o[RPC._Encryption] = $('#prefs_form #encryption')[0].checked
|
||||
? RPC._EncryptionRequired
|
||||
: RPC._EncryptionPreferred;
|
||||
o[RPC._TurtleDownSpeedLimit] = parseInt( $('#prefs_form #turtle_download_rate')[0].value );
|
||||
o[RPC._TurtleUpSpeedLimit] = parseInt( $('#prefs_form #turtle_upload_rate')[0].value );
|
||||
o[RPC._TurtleTimeEnabled] = $('#prefs_form #turtle_schedule')[0].checked;
|
||||
o[RPC._TurtleTimeBegin] = parseInt( $('#prefs_form #turtle_start_time').val() );
|
||||
o[RPC._TurtleTimeEnd] = parseInt( $('#prefs_form #turtle_end_time').val() );
|
||||
o[RPC._TurtleTimeDay] = parseInt( $('#prefs_form #turtle_days').val() );
|
||||
|
||||
tr.remote.savePrefs( o );
|
||||
|
||||
tr.hidePrefsDialog( );
|
||||
@@ -730,6 +752,25 @@ Transmission.prototype =
|
||||
}
|
||||
},
|
||||
|
||||
toggleTurtleClicked: function() {
|
||||
// Toggle the value
|
||||
this[Prefs._TurtleState] = !this[Prefs._TurtleState];
|
||||
// Store the result
|
||||
var args = { };
|
||||
args[RPC._TurtleState] = this[Prefs._TurtleState];
|
||||
this.remote.savePrefs( args );
|
||||
},
|
||||
|
||||
updateTurtleButton: function() {
|
||||
if ( this[Prefs._TurtleState] ) {
|
||||
$('#turtle_button').addClass('turtleEnabled');
|
||||
$('#turtle_button').removeClass('turtleDisabled');
|
||||
} else {
|
||||
$('#turtle_button').removeClass('turtleEnabled');
|
||||
$('#turtle_button').addClass('turtleDisabled');
|
||||
}
|
||||
},
|
||||
|
||||
/*--------------------------------------------
|
||||
*
|
||||
* I N T E R F A C E F U N C T I O N S
|
||||
@@ -782,6 +823,12 @@ Transmission.prototype =
|
||||
$('input#upload_rate')[0].value = up_limit;
|
||||
$('input#refresh_rate')[0].value = prefs[Prefs._RefreshRate];
|
||||
$('div.encryption input')[0].checked = prefs[RPC._Encryption] == RPC._EncryptionRequired;
|
||||
$('input#turtle_download_rate')[0].value = prefs[RPC._TurtleDownSpeedLimit];
|
||||
$('input#turtle_upload_rate')[0].value = prefs[RPC._TurtleUpSpeedLimit];
|
||||
$('input#turtle_schedule')[0].checked = prefs[RPC._TurtleTimeEnabled];
|
||||
$('select#turtle_start_time').val( prefs[RPC._TurtleTimeBegin] );
|
||||
$('select#turtle_end_time').val( prefs[RPC._TurtleTimeEnd] );
|
||||
$('select#turtle_days').val( prefs[RPC._TurtleTimeDay] );
|
||||
|
||||
if (!iPhone)
|
||||
{
|
||||
@@ -795,6 +842,9 @@ Transmission.prototype =
|
||||
: '#unlimited_upload_rate';
|
||||
$(key).deselectMenuSiblings().selectMenuItem();
|
||||
}
|
||||
|
||||
this[Prefs._TurtleState] = prefs[RPC._TurtleState];
|
||||
this.updateTurtleButton();
|
||||
},
|
||||
|
||||
setSearch: function( search ) {
|
||||
|
||||
@@ -20,6 +20,13 @@ RPC._DownloadDir = 'download-dir';
|
||||
RPC._PeerPort = 'peer-port';
|
||||
RPC._UpSpeedLimited = 'speed-limit-up-enabled';
|
||||
RPC._DownSpeedLimited = 'speed-limit-down-enabled';
|
||||
RPC._TurtleState = 'alt-speed-enabled';
|
||||
RPC._TurtleUpSpeedLimit = 'alt-speed-up';
|
||||
RPC._TurtleDownSpeedLimit = 'alt-speed-down';
|
||||
RPC._TurtleTimeEnabled = 'alt-speed-time-enabled';
|
||||
RPC._TurtleTimeBegin = 'alt-speed-time-begin';
|
||||
RPC._TurtleTimeEnd = 'alt-speed-time-end';
|
||||
RPC._TurtleTimeDay = 'alt-speed-time-day';
|
||||
|
||||
function TransmissionRemote( controller )
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user