(trunk web) Add turtle mode. Patch from Grug. Fixes #2157

This commit is contained in:
Kevin Glowacz
2009-11-10 05:42:57 +00:00
parent 8d16fdc31b
commit fe8743be5c
6 changed files with 246 additions and 58 deletions

View File

@@ -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
};
/*

View File

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

View File

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

View File

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