Group setting torrents download limit

This commit is contained in:
buinsky 2015-02-01 12:45:37 -05:00
parent cf55751fbe
commit 902db2b938
5 changed files with 40 additions and 33 deletions

View File

@ -95,9 +95,9 @@ QMap<QString, QMap<QString, WebApplication::Action> > WebApplication::initialize
ADD_ACTION(command, setGlobalUpLimit);
ADD_ACTION(command, setGlobalDlLimit);
ADD_ACTION(command, getTorrentsUpLimit);
ADD_ACTION(command, getTorrentDlLimit);
ADD_ACTION(command, getTorrentsDlLimit);
ADD_ACTION(command, setTorrentsUpLimit);
ADD_ACTION(command, setTorrentDlLimit);
ADD_ACTION(command, setTorrentsDlLimit);
ADD_ACTION(command, alternativeSpeedLimitsEnabled);
ADD_ACTION(command, toggleAlternativeSpeedLimits);
ADD_ACTION(command, toggleSequentialDownload);
@ -462,15 +462,12 @@ void WebApplication::action_command_getTorrentsUpLimit()
print(btjson::getTorrentsRatesLimits(hashes, false), Http::CONTENT_TYPE_JS);
}
void WebApplication::action_command_getTorrentDlLimit()
void WebApplication::action_command_getTorrentsDlLimit()
{
CHECK_URI(0);
CHECK_PARAMETERS("hash");
QString hash = request().posts["hash"];
QTorrentHandle h = QBtSession::instance()->getTorrentHandle(hash);
if (h.is_valid())
print(QByteArray::number(h.download_limit()));
CHECK_PARAMETERS("hashes");
QStringList hashes = request().posts["hashes"].split("|");
print(btjson::getTorrentsRatesLimits(hashes, true), Http::CONTENT_TYPE_JS);
}
void WebApplication::action_command_setTorrentsUpLimit()
@ -490,17 +487,21 @@ void WebApplication::action_command_setTorrentsUpLimit()
}
}
void WebApplication::action_command_setTorrentDlLimit()
void WebApplication::action_command_setTorrentsDlLimit()
{
CHECK_URI(0);
CHECK_PARAMETERS("hash" << "limit");
QString hash = request().posts["hash"];
qlonglong limit = request().posts["limit"].toLongLong();
if (limit == 0) limit = -1;
QTorrentHandle h = QBtSession::instance()->getTorrentHandle(hash);
CHECK_PARAMETERS("hashes" << "limit");
qlonglong limit = request().posts["limit"].toLongLong();
if (limit == 0)
limit = -1;
QStringList hashes = request().posts["hashes"].split("|");
foreach (const QString &hash, hashes) {
QTorrentHandle h = QBtSession::instance()->getTorrentHandle(hash);
if (h.is_valid())
h.set_download_limit(limit);
}
}
void WebApplication::action_command_toggleAlternativeSpeedLimits()

View File

@ -69,9 +69,9 @@ private:
void action_command_setGlobalUpLimit();
void action_command_setGlobalDlLimit();
void action_command_getTorrentsUpLimit();
void action_command_getTorrentDlLimit();
void action_command_getTorrentsDlLimit();
void action_command_setTorrentsUpLimit();
void action_command_setTorrentDlLimit();
void action_command_setTorrentsDlLimit();
void action_command_alternativeSpeedLimitsEnabled();
void action_command_toggleAlternativeSpeedLimits();
void action_command_toggleSequentialDownload();

View File

@ -20,10 +20,10 @@
<div class="clear"></div>
</div>
<script type="text/javascript">
var hash = new URI().getData('hash');
var hashes = new URI().getData('hashes').split('|');
setDlLimit = function() {
var limit = $("dllimitUpdatevalue").value.toInt() * 1024;
if (hash == "global") {
if (hashes[0] == "global") {
new Request({
url: 'command/setGlobalDlLimit',
method: 'post',
@ -38,10 +38,10 @@
}
else {
new Request({
url: 'command/setTorrentDlLimit',
url: 'command/setTorrentsDlLimit',
method: 'post',
data: {
'hash': hash,
'hashes': hashes.join('|'),
'limit': limit
},
onComplete: function() {
@ -55,7 +55,7 @@
</div>
<script type="text/javascript">
MochaUI.addDlLimitSlider(hash);
MochaUI.addDlLimitSlider(hashes);
</script>
</body>

View File

@ -186,7 +186,7 @@ initializeWindows = function() {
id: 'downloadLimitPage',
title: "QBT_TR(Global Download Speed Limit)QBT_TR",
loadMethod: 'iframe',
contentURL: 'downloadlimit.html?hash=global',
contentURL: 'downloadlimit.html?hashes=global',
scrollbars: false,
resizable: false,
maximizable: false,
@ -205,7 +205,7 @@ initializeWindows = function() {
id: 'downloadLimitPage',
title: "QBT_TR(Torrent Download Speed Limiting)QBT_TR",
loadMethod: 'iframe',
contentURL: 'downloadlimit.html?hash=' + hash,
contentURL: 'downloadlimit.html?hashes=' + h.join("|"),
scrollbars: false,
resizable: false,
maximizable: false,

View File

@ -118,7 +118,7 @@ MochaUI.extend({
}
},
addDlLimitSlider: function(hash) {
addDlLimitSlider: function(hashes) {
if ($('dllimitSliderarea')) {
var windowOptions = MochaUI.Windows.windowOptions;
var sliderFirst = true;
@ -135,15 +135,15 @@ MochaUI.extend({
maximum = tmp / 1024.
}
else {
if (hash == "global")
if (hashes[0] == "global")
maximum = 10000;
else
maximum = 1000;
}
}
// Get torrent download limit
// Get torrents download limit
// And create slider
if (hash == "global") {
if (hashes[0] == 'global') {
var dl_limit = maximum;
if (dl_limit < 0) dl_limit = 0;
maximum = 10000;
@ -173,15 +173,21 @@ MochaUI.extend({
}
}
else {
var req = new Request({
url: 'command/getTorrentDlLimit',
var req = new Request.JSON({
url: 'command/getTorrentsDlLimit',
noCache : true,
method: 'post',
data: {
hash: hash
hashes: hashes.join('|')
},
onSuccess: function(data) {
if (data) {
var dl_limit = data.toInt();
var dl_limit = data[hashes[0]];
for(var key in data)
if (dl_limit != data[key]) {
dl_limit = 0;
break;
}
if (dl_limit < 0) dl_limit = 0;
var mochaSlide = new Slider($('dllimitSliderarea'), $('dllimitSliderknob'), {
steps: maximum,