mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-11-28 13:28:50 +03:00
Group setting torrents upload limit
This commit is contained in:
parent
facab1681a
commit
cf55751fbe
7 changed files with 56 additions and 33 deletions
|
@ -539,6 +539,21 @@ QVariantMap getTranserInfoMap()
|
|||
return map;
|
||||
}
|
||||
|
||||
QByteArray btjson::getTorrentsRatesLimits(QStringList &hashes, bool downloadLimits)
|
||||
{
|
||||
QVariantMap map;
|
||||
|
||||
foreach (const QString &hash, hashes) {
|
||||
int limit = -1;
|
||||
QTorrentHandle h = QBtSession::instance()->getTorrentHandle(hash);
|
||||
if (h.is_valid())
|
||||
limit = downloadLimits ? h.download_limit() : h.upload_limit();
|
||||
map[hash] = limit;
|
||||
}
|
||||
|
||||
return json::toJson(map);
|
||||
}
|
||||
|
||||
QVariantMap toMap(const QTorrentHandle& h)
|
||||
{
|
||||
libtorrent::torrent_status status = h.status(torrent_handle::query_accurate_download_counters);
|
||||
|
|
|
@ -52,6 +52,7 @@ public:
|
|||
static QByteArray getPropertiesForTorrent(const QString& hash);
|
||||
static QByteArray getFilesForTorrent(const QString& hash);
|
||||
static QByteArray getTransferInfo();
|
||||
static QByteArray getTorrentsRatesLimits(QStringList& hashes, bool downloadLimits);
|
||||
}; // class btjson
|
||||
|
||||
#endif // BTJSON_H
|
||||
|
|
|
@ -94,9 +94,9 @@ QMap<QString, QMap<QString, WebApplication::Action> > WebApplication::initialize
|
|||
ADD_ACTION(command, getGlobalDlLimit);
|
||||
ADD_ACTION(command, setGlobalUpLimit);
|
||||
ADD_ACTION(command, setGlobalDlLimit);
|
||||
ADD_ACTION(command, getTorrentUpLimit);
|
||||
ADD_ACTION(command, getTorrentsUpLimit);
|
||||
ADD_ACTION(command, getTorrentDlLimit);
|
||||
ADD_ACTION(command, setTorrentUpLimit);
|
||||
ADD_ACTION(command, setTorrentsUpLimit);
|
||||
ADD_ACTION(command, setTorrentDlLimit);
|
||||
ADD_ACTION(command, alternativeSpeedLimitsEnabled);
|
||||
ADD_ACTION(command, toggleAlternativeSpeedLimits);
|
||||
|
@ -454,15 +454,12 @@ void WebApplication::action_command_setGlobalDlLimit()
|
|||
Preferences::instance()->setGlobalDownloadLimit(limit / 1024.);
|
||||
}
|
||||
|
||||
void WebApplication::action_command_getTorrentUpLimit()
|
||||
void WebApplication::action_command_getTorrentsUpLimit()
|
||||
{
|
||||
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.upload_limit()));
|
||||
CHECK_PARAMETERS("hashes");
|
||||
QStringList hashes = request().posts["hashes"].split("|");
|
||||
print(btjson::getTorrentsRatesLimits(hashes, false), Http::CONTENT_TYPE_JS);
|
||||
}
|
||||
|
||||
void WebApplication::action_command_getTorrentDlLimit()
|
||||
|
@ -476,17 +473,21 @@ void WebApplication::action_command_getTorrentDlLimit()
|
|||
print(QByteArray::number(h.download_limit()));
|
||||
}
|
||||
|
||||
void WebApplication::action_command_setTorrentUpLimit()
|
||||
void WebApplication::action_command_setTorrentsUpLimit()
|
||||
{
|
||||
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_upload_limit(limit);
|
||||
}
|
||||
}
|
||||
|
||||
void WebApplication::action_command_setTorrentDlLimit()
|
||||
|
|
|
@ -68,9 +68,9 @@ private:
|
|||
void action_command_getGlobalDlLimit();
|
||||
void action_command_setGlobalUpLimit();
|
||||
void action_command_setGlobalDlLimit();
|
||||
void action_command_getTorrentUpLimit();
|
||||
void action_command_getTorrentsUpLimit();
|
||||
void action_command_getTorrentDlLimit();
|
||||
void action_command_setTorrentUpLimit();
|
||||
void action_command_setTorrentsUpLimit();
|
||||
void action_command_setTorrentDlLimit();
|
||||
void action_command_alternativeSpeedLimitsEnabled();
|
||||
void action_command_toggleAlternativeSpeedLimits();
|
||||
|
|
|
@ -107,7 +107,7 @@ initializeWindows = function() {
|
|||
id: 'uploadLimitPage',
|
||||
title: "QBT_TR(Global Upload Speed Limit)QBT_TR",
|
||||
loadMethod: 'iframe',
|
||||
contentURL: 'uploadlimit.html?hash=global',
|
||||
contentURL: 'uploadlimit.html?hashes=global',
|
||||
scrollbars: false,
|
||||
resizable: false,
|
||||
maximizable: false,
|
||||
|
@ -126,7 +126,7 @@ initializeWindows = function() {
|
|||
id: 'uploadLimitPage',
|
||||
title: "QBT_TR(Torrent Upload Speed Limiting)QBT_TR",
|
||||
loadMethod: 'iframe',
|
||||
contentURL: 'uploadlimit.html?hash=' + hash,
|
||||
contentURL: 'uploadlimit.html?hashes=' + h.join("|"),
|
||||
scrollbars: false,
|
||||
resizable: false,
|
||||
maximizable: false,
|
||||
|
|
|
@ -14,7 +14,7 @@ Requires:
|
|||
|
||||
*/
|
||||
MochaUI.extend({
|
||||
addUpLimitSlider: function(hash) {
|
||||
addUpLimitSlider: function(hashes) {
|
||||
if ($('uplimitSliderarea')) {
|
||||
var windowOptions = MochaUI.Windows.windowOptions;
|
||||
var sliderFirst = true;
|
||||
|
@ -31,15 +31,15 @@ MochaUI.extend({
|
|||
maximum = tmp / 1024.
|
||||
}
|
||||
else {
|
||||
if (hash == "global")
|
||||
if (hashes[0] == "global")
|
||||
maximum = 10000;
|
||||
else
|
||||
maximum = 1000;
|
||||
}
|
||||
}
|
||||
// Get torrent upload limit
|
||||
// Get torrents upload limit
|
||||
// And create slider
|
||||
if (hash == 'global') {
|
||||
if (hashes[0] == 'global') {
|
||||
var up_limit = maximum;
|
||||
if (up_limit < 0) up_limit = 0;
|
||||
maximum = 10000;
|
||||
|
@ -69,15 +69,21 @@ MochaUI.extend({
|
|||
}
|
||||
}
|
||||
else {
|
||||
var req = new Request({
|
||||
url: 'command/getTorrentUpLimit',
|
||||
var req = new Request.JSON({
|
||||
url: 'command/getTorrentsUpLimit',
|
||||
noCache : true,
|
||||
method: 'post',
|
||||
data: {
|
||||
hash: hash
|
||||
hashes: hashes.join('|')
|
||||
},
|
||||
onSuccess: function(data) {
|
||||
if (data) {
|
||||
var up_limit = data.toInt();
|
||||
var up_limit = data[hashes[0]];
|
||||
for(var key in data)
|
||||
if (up_limit != data[key]) {
|
||||
up_limit = 0;
|
||||
break;
|
||||
}
|
||||
if (up_limit < 0) up_limit = 0;
|
||||
var mochaSlide = new Slider($('uplimitSliderarea'), $('uplimitSliderknob'), {
|
||||
steps: maximum,
|
||||
|
|
|
@ -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('|');
|
||||
setUpLimit = function() {
|
||||
var limit = $("uplimitUpdatevalue").value.toInt() * 1024;
|
||||
if (hash == "global") {
|
||||
if (hashes[0] == "global") {
|
||||
new Request({
|
||||
url: 'command/setGlobalUpLimit',
|
||||
method: 'post',
|
||||
|
@ -38,10 +38,10 @@
|
|||
}
|
||||
else {
|
||||
new Request({
|
||||
url: 'command/setTorrentUpLimit',
|
||||
url: 'command/setTorrentsUpLimit',
|
||||
method: 'post',
|
||||
data: {
|
||||
'hash': hash,
|
||||
'hashes': hashes.join('|'),
|
||||
'limit': limit
|
||||
},
|
||||
onComplete: function() {
|
||||
|
@ -55,7 +55,7 @@
|
|||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
MochaUI.addUpLimitSlider(hash);
|
||||
MochaUI.addUpLimitSlider(hashes);
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
|
Loading…
Reference in a new issue