Group setting torrents upload limit

This commit is contained in:
buinsky 2015-02-01 12:08:45 -05:00
parent facab1681a
commit cf55751fbe
7 changed files with 56 additions and 33 deletions

View file

@ -539,6 +539,21 @@ QVariantMap getTranserInfoMap()
return map; 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) QVariantMap toMap(const QTorrentHandle& h)
{ {
libtorrent::torrent_status status = h.status(torrent_handle::query_accurate_download_counters); libtorrent::torrent_status status = h.status(torrent_handle::query_accurate_download_counters);

View file

@ -52,6 +52,7 @@ public:
static QByteArray getPropertiesForTorrent(const QString& hash); static QByteArray getPropertiesForTorrent(const QString& hash);
static QByteArray getFilesForTorrent(const QString& hash); static QByteArray getFilesForTorrent(const QString& hash);
static QByteArray getTransferInfo(); static QByteArray getTransferInfo();
static QByteArray getTorrentsRatesLimits(QStringList& hashes, bool downloadLimits);
}; // class btjson }; // class btjson
#endif // BTJSON_H #endif // BTJSON_H

View file

@ -94,9 +94,9 @@ QMap<QString, QMap<QString, WebApplication::Action> > WebApplication::initialize
ADD_ACTION(command, getGlobalDlLimit); ADD_ACTION(command, getGlobalDlLimit);
ADD_ACTION(command, setGlobalUpLimit); ADD_ACTION(command, setGlobalUpLimit);
ADD_ACTION(command, setGlobalDlLimit); ADD_ACTION(command, setGlobalDlLimit);
ADD_ACTION(command, getTorrentUpLimit); ADD_ACTION(command, getTorrentsUpLimit);
ADD_ACTION(command, getTorrentDlLimit); ADD_ACTION(command, getTorrentDlLimit);
ADD_ACTION(command, setTorrentUpLimit); ADD_ACTION(command, setTorrentsUpLimit);
ADD_ACTION(command, setTorrentDlLimit); ADD_ACTION(command, setTorrentDlLimit);
ADD_ACTION(command, alternativeSpeedLimitsEnabled); ADD_ACTION(command, alternativeSpeedLimitsEnabled);
ADD_ACTION(command, toggleAlternativeSpeedLimits); ADD_ACTION(command, toggleAlternativeSpeedLimits);
@ -454,15 +454,12 @@ void WebApplication::action_command_setGlobalDlLimit()
Preferences::instance()->setGlobalDownloadLimit(limit / 1024.); Preferences::instance()->setGlobalDownloadLimit(limit / 1024.);
} }
void WebApplication::action_command_getTorrentUpLimit() void WebApplication::action_command_getTorrentsUpLimit()
{ {
CHECK_URI(0); CHECK_URI(0);
CHECK_PARAMETERS("hash"); CHECK_PARAMETERS("hashes");
QString hash = request().posts["hash"]; QStringList hashes = request().posts["hashes"].split("|");
QTorrentHandle h = QBtSession::instance()->getTorrentHandle(hash); print(btjson::getTorrentsRatesLimits(hashes, false), Http::CONTENT_TYPE_JS);
if (h.is_valid())
print(QByteArray::number(h.upload_limit()));
} }
void WebApplication::action_command_getTorrentDlLimit() void WebApplication::action_command_getTorrentDlLimit()
@ -476,18 +473,22 @@ void WebApplication::action_command_getTorrentDlLimit()
print(QByteArray::number(h.download_limit())); print(QByteArray::number(h.download_limit()));
} }
void WebApplication::action_command_setTorrentUpLimit() void WebApplication::action_command_setTorrentsUpLimit()
{ {
CHECK_URI(0); CHECK_URI(0);
CHECK_PARAMETERS("hash" << "limit"); CHECK_PARAMETERS("hashes" << "limit");
QString hash = request().posts["hash"];
qlonglong limit = request().posts["limit"].toLongLong();
if (limit == 0) limit = -1;
QTorrentHandle h = QBtSession::instance()->getTorrentHandle(hash);
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()) if (h.is_valid())
h.set_upload_limit(limit); h.set_upload_limit(limit);
} }
}
void WebApplication::action_command_setTorrentDlLimit() void WebApplication::action_command_setTorrentDlLimit()
{ {

View file

@ -68,9 +68,9 @@ private:
void action_command_getGlobalDlLimit(); void action_command_getGlobalDlLimit();
void action_command_setGlobalUpLimit(); void action_command_setGlobalUpLimit();
void action_command_setGlobalDlLimit(); void action_command_setGlobalDlLimit();
void action_command_getTorrentUpLimit(); void action_command_getTorrentsUpLimit();
void action_command_getTorrentDlLimit(); void action_command_getTorrentDlLimit();
void action_command_setTorrentUpLimit(); void action_command_setTorrentsUpLimit();
void action_command_setTorrentDlLimit(); void action_command_setTorrentDlLimit();
void action_command_alternativeSpeedLimitsEnabled(); void action_command_alternativeSpeedLimitsEnabled();
void action_command_toggleAlternativeSpeedLimits(); void action_command_toggleAlternativeSpeedLimits();

View file

@ -107,7 +107,7 @@ initializeWindows = function() {
id: 'uploadLimitPage', id: 'uploadLimitPage',
title: "QBT_TR(Global Upload Speed Limit)QBT_TR", title: "QBT_TR(Global Upload Speed Limit)QBT_TR",
loadMethod: 'iframe', loadMethod: 'iframe',
contentURL: 'uploadlimit.html?hash=global', contentURL: 'uploadlimit.html?hashes=global',
scrollbars: false, scrollbars: false,
resizable: false, resizable: false,
maximizable: false, maximizable: false,
@ -126,7 +126,7 @@ initializeWindows = function() {
id: 'uploadLimitPage', id: 'uploadLimitPage',
title: "QBT_TR(Torrent Upload Speed Limiting)QBT_TR", title: "QBT_TR(Torrent Upload Speed Limiting)QBT_TR",
loadMethod: 'iframe', loadMethod: 'iframe',
contentURL: 'uploadlimit.html?hash=' + hash, contentURL: 'uploadlimit.html?hashes=' + h.join("|"),
scrollbars: false, scrollbars: false,
resizable: false, resizable: false,
maximizable: false, maximizable: false,

View file

@ -14,7 +14,7 @@ Requires:
*/ */
MochaUI.extend({ MochaUI.extend({
addUpLimitSlider: function(hash) { addUpLimitSlider: function(hashes) {
if ($('uplimitSliderarea')) { if ($('uplimitSliderarea')) {
var windowOptions = MochaUI.Windows.windowOptions; var windowOptions = MochaUI.Windows.windowOptions;
var sliderFirst = true; var sliderFirst = true;
@ -31,15 +31,15 @@ MochaUI.extend({
maximum = tmp / 1024. maximum = tmp / 1024.
} }
else { else {
if (hash == "global") if (hashes[0] == "global")
maximum = 10000; maximum = 10000;
else else
maximum = 1000; maximum = 1000;
} }
} }
// Get torrent upload limit // Get torrents upload limit
// And create slider // And create slider
if (hash == 'global') { if (hashes[0] == 'global') {
var up_limit = maximum; var up_limit = maximum;
if (up_limit < 0) up_limit = 0; if (up_limit < 0) up_limit = 0;
maximum = 10000; maximum = 10000;
@ -69,15 +69,21 @@ MochaUI.extend({
} }
} }
else { else {
var req = new Request({ var req = new Request.JSON({
url: 'command/getTorrentUpLimit', url: 'command/getTorrentsUpLimit',
noCache : true,
method: 'post', method: 'post',
data: { data: {
hash: hash hashes: hashes.join('|')
}, },
onSuccess: function(data) { onSuccess: function(data) {
if (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; if (up_limit < 0) up_limit = 0;
var mochaSlide = new Slider($('uplimitSliderarea'), $('uplimitSliderknob'), { var mochaSlide = new Slider($('uplimitSliderarea'), $('uplimitSliderknob'), {
steps: maximum, steps: maximum,

View file

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