Browse Source

Merge pull request #7276 from Chocobo1/pr_7063

Auto torrent management from webui context menu
adaptive-webui-19844
Mike Tzou 7 years ago committed by GitHub
parent
commit
ea749bb052
  1. 2
      src/webui/btjson.cpp
  2. 46
      src/webui/webapplication.cpp
  3. 1
      src/webui/webapplication.h
  4. 3
      src/webui/www/private/index.html
  5. 13
      src/webui/www/public/scripts/contextmenu.js
  6. 21
      src/webui/www/public/scripts/mocha-init.js
  7. 3
      src/webui/www/public/transferlist.html

2
src/webui/btjson.cpp

@ -110,6 +110,7 @@ static const char KEY_TORRENT_RATIO_LIMIT[] = "ratio_limit"; @@ -110,6 +110,7 @@ static const char KEY_TORRENT_RATIO_LIMIT[] = "ratio_limit";
static const char KEY_TORRENT_LAST_SEEN_COMPLETE_TIME[] = "seen_complete";
static const char KEY_TORRENT_LAST_ACTIVITY_TIME[] = "last_activity";
static const char KEY_TORRENT_TOTAL_SIZE[] = "total_size";
static const char KEY_TORRENT_AUTO_TORRENT_MANAGEMENT[] = "auto_tmm";
// Peer keys
static const char KEY_PEER_IP[] = "ip";
@ -824,6 +825,7 @@ QVariantMap toMap(BitTorrent::TorrentHandle *const torrent) @@ -824,6 +825,7 @@ QVariantMap toMap(BitTorrent::TorrentHandle *const torrent)
ret[KEY_TORRENT_AMOUNT_COMPLETED] = torrent->completedSize();
ret[KEY_TORRENT_RATIO_LIMIT] = torrent->maxRatio();
ret[KEY_TORRENT_LAST_SEEN_COMPLETE_TIME] = torrent->lastSeenComplete().toTime_t();
ret[KEY_TORRENT_AUTO_TORRENT_MANAGEMENT] = torrent->isAutoTMMEnabled();
if (torrent->isPaused() || torrent->isChecking())
ret[KEY_TORRENT_LAST_ACTIVITY_TIME] = 0;

46
src/webui/webapplication.cpp

@ -122,6 +122,7 @@ QMap<QString, QMap<QString, WebApplication::Action> > WebApplication::initialize @@ -122,6 +122,7 @@ QMap<QString, QMap<QString, WebApplication::Action> > WebApplication::initialize
ADD_ACTION(command, bottomPrio);
ADD_ACTION(command, setLocation);
ADD_ACTION(command, rename);
ADD_ACTION(command, setAutoTMM);
ADD_ACTION(command, recheck);
ADD_ACTION(command, setCategory);
ADD_ACTION(command, addCategory);
@ -595,7 +596,7 @@ void WebApplication::action_command_getTorrentsUpLimit() @@ -595,7 +596,7 @@ void WebApplication::action_command_getTorrentsUpLimit()
{
CHECK_URI(0);
CHECK_PARAMETERS("hashes");
QStringList hashes = request().posts["hashes"].split("|");
QStringList hashes = request().posts["hashes"].split('|');
print(btjson::getTorrentsRatesLimits(hashes, false), Http::CONTENT_TYPE_JSON);
}
@ -603,7 +604,7 @@ void WebApplication::action_command_getTorrentsDlLimit() @@ -603,7 +604,7 @@ void WebApplication::action_command_getTorrentsDlLimit()
{
CHECK_URI(0);
CHECK_PARAMETERS("hashes");
QStringList hashes = request().posts["hashes"].split("|");
QStringList hashes = request().posts["hashes"].split('|');
print(btjson::getTorrentsRatesLimits(hashes, true), Http::CONTENT_TYPE_JSON);
}
@ -616,7 +617,7 @@ void WebApplication::action_command_setTorrentsUpLimit() @@ -616,7 +617,7 @@ void WebApplication::action_command_setTorrentsUpLimit()
if (limit == 0)
limit = -1;
QStringList hashes = request().posts["hashes"].split("|");
QStringList hashes = request().posts["hashes"].split('|');
foreach (const QString &hash, hashes) {
BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
if (torrent)
@ -633,7 +634,7 @@ void WebApplication::action_command_setTorrentsDlLimit() @@ -633,7 +634,7 @@ void WebApplication::action_command_setTorrentsDlLimit()
if (limit == 0)
limit = -1;
QStringList hashes = request().posts["hashes"].split("|");
QStringList hashes = request().posts["hashes"].split('|');
foreach (const QString &hash, hashes) {
BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
if (torrent)
@ -659,7 +660,7 @@ void WebApplication::action_command_toggleSequentialDownload() @@ -659,7 +660,7 @@ void WebApplication::action_command_toggleSequentialDownload()
{
CHECK_URI(0);
CHECK_PARAMETERS("hashes");
QStringList hashes = request().posts["hashes"].split("|");
QStringList hashes = request().posts["hashes"].split('|');
foreach (const QString &hash, hashes) {
BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
if (torrent)
@ -671,7 +672,7 @@ void WebApplication::action_command_toggleFirstLastPiecePrio() @@ -671,7 +672,7 @@ void WebApplication::action_command_toggleFirstLastPiecePrio()
{
CHECK_URI(0);
CHECK_PARAMETERS("hashes");
QStringList hashes = request().posts["hashes"].split("|");
QStringList hashes = request().posts["hashes"].split('|');
foreach (const QString &hash, hashes) {
BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
if (torrent)
@ -684,7 +685,7 @@ void WebApplication::action_command_setSuperSeeding() @@ -684,7 +685,7 @@ void WebApplication::action_command_setSuperSeeding()
CHECK_URI(0);
CHECK_PARAMETERS("hashes" << "value");
bool value = request().posts["value"] == "true";
QStringList hashes = request().posts["hashes"].split("|");
QStringList hashes = request().posts["hashes"].split('|');
foreach (const QString &hash, hashes) {
BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
if (torrent)
@ -697,7 +698,7 @@ void WebApplication::action_command_setForceStart() @@ -697,7 +698,7 @@ void WebApplication::action_command_setForceStart()
CHECK_URI(0);
CHECK_PARAMETERS("hashes" << "value");
bool value = request().posts["value"] == "true";
QStringList hashes = request().posts["hashes"].split("|");
QStringList hashes = request().posts["hashes"].split('|');
foreach (const QString &hash, hashes) {
BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
if (torrent)
@ -709,7 +710,7 @@ void WebApplication::action_command_delete() @@ -709,7 +710,7 @@ void WebApplication::action_command_delete()
{
CHECK_URI(0);
CHECK_PARAMETERS("hashes");
QStringList hashes = request().posts["hashes"].split("|");
QStringList hashes = request().posts["hashes"].split('|');
foreach (const QString &hash, hashes)
BitTorrent::Session::instance()->deleteTorrent(hash, false);
}
@ -718,7 +719,7 @@ void WebApplication::action_command_deletePerm() @@ -718,7 +719,7 @@ void WebApplication::action_command_deletePerm()
{
CHECK_URI(0);
CHECK_PARAMETERS("hashes");
QStringList hashes = request().posts["hashes"].split("|");
QStringList hashes = request().posts["hashes"].split('|');
foreach (const QString &hash, hashes)
BitTorrent::Session::instance()->deleteTorrent(hash, true);
}
@ -733,7 +734,7 @@ void WebApplication::action_command_increasePrio() @@ -733,7 +734,7 @@ void WebApplication::action_command_increasePrio()
return;
}
QStringList hashes = request().posts["hashes"].split("|");
QStringList hashes = request().posts["hashes"].split('|');
BitTorrent::Session::instance()->increaseTorrentsPriority(hashes);
}
@ -747,7 +748,7 @@ void WebApplication::action_command_decreasePrio() @@ -747,7 +748,7 @@ void WebApplication::action_command_decreasePrio()
return;
}
QStringList hashes = request().posts["hashes"].split("|");
QStringList hashes = request().posts["hashes"].split('|');
BitTorrent::Session::instance()->decreaseTorrentsPriority(hashes);
}
@ -761,7 +762,7 @@ void WebApplication::action_command_topPrio() @@ -761,7 +762,7 @@ void WebApplication::action_command_topPrio()
return;
}
QStringList hashes = request().posts["hashes"].split("|");
QStringList hashes = request().posts["hashes"].split('|');
BitTorrent::Session::instance()->topTorrentsPriority(hashes);
}
@ -775,7 +776,7 @@ void WebApplication::action_command_bottomPrio() @@ -775,7 +776,7 @@ void WebApplication::action_command_bottomPrio()
return;
}
QStringList hashes = request().posts["hashes"].split("|");
QStringList hashes = request().posts["hashes"].split('|');
BitTorrent::Session::instance()->bottomTorrentsPriority(hashes);
}
@ -822,6 +823,21 @@ void WebApplication::action_command_rename() @@ -822,6 +823,21 @@ void WebApplication::action_command_rename()
}
}
void WebApplication::action_command_setAutoTMM()
{
CHECK_URI(0);
CHECK_PARAMETERS("hashes" << "enable");
QStringList hashes = request().posts["hashes"].split('|');
QString enableStr = request().posts["enable"];
foreach (const QString &hash, hashes) {
BitTorrent::TorrentHandle *const torrent = BitTorrent::Session::instance()->findTorrent(hash);
if (torrent)
torrent->setAutoTMMEnabled(QString::compare(enableStr, "true", Qt::CaseInsensitive) == 0);
}
}
void WebApplication::action_command_recheck()
{
CHECK_URI(0);
@ -837,7 +853,7 @@ void WebApplication::action_command_setCategory() @@ -837,7 +853,7 @@ void WebApplication::action_command_setCategory()
CHECK_URI(0);
CHECK_PARAMETERS("hashes" << "category");
QStringList hashes = request().posts["hashes"].split("|");
QStringList hashes = request().posts["hashes"].split('|');
QString category = request().posts["category"].trimmed();
foreach (const QString &hash, hashes) {

1
src/webui/webapplication.h

@ -92,6 +92,7 @@ private: @@ -92,6 +92,7 @@ private:
void action_command_bottomPrio();
void action_command_setLocation();
void action_command_rename();
void action_command_setAutoTMM();
void action_command_recheck();
void action_command_setCategory();
void action_command_addCategory();

3
src/webui/www/private/index.html

@ -115,6 +115,9 @@ @@ -115,6 +115,9 @@
<a href="#Category" class="arrow-right"><img src="theme/view-categories" alt="QBT_TR(Category)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(Category)QBT_TR[CONTEXT=TransferListWidget]</a>
<ul id="contextCategoryList" class="scrollableMenu"></ul>
</li>
<li>
<a href="#AutoTorrentManagement"><img src="theme/checked" alt="QBT_TR(Automatic Torrent Management)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(Automatic Torrent Management)QBT_TR[CONTEXT=TransferListWidget]</a>
</li>
<li id="queueingMenuItems" class="separator">
<a href="#priority" class="arrow-right"><span style="display: inline-block; width:16px"></span> QBT_TR(Priority)QBT_TR[CONTEXT=TransferListWidget]</a>
<ul>

13
src/webui/www/public/scripts/contextmenu.js

@ -255,6 +255,8 @@ var TorrentsTableContextMenu = new Class({ @@ -255,6 +255,8 @@ var TorrentsTableContextMenu = new Class({
all_are_force_start = true;
there_are_force_start = false;
all_are_super_seeding = true;
all_are_auto_tmm = true;
there_are_auto_tmm = false;
var h = torrentsTable.selectedRowsIds();
h.each(function(item, index){
@ -284,6 +286,11 @@ var TorrentsTableContextMenu = new Class({ @@ -284,6 +286,11 @@ var TorrentsTableContextMenu = new Class({
all_are_force_start = false;
else
there_are_force_start = true;
if (data['auto_tmm'] === true)
there_are_auto_tmm = true;
else
all_are_auto_tmm = false;
});
show_seq_dl = true;
@ -336,6 +343,12 @@ var TorrentsTableContextMenu = new Class({ @@ -336,6 +343,12 @@ var TorrentsTableContextMenu = new Class({
this.hideItem('ForceStart');
else if (!there_are_paused && !there_are_force_start)
this.hideItem('Start');
if (!all_are_auto_tmm && there_are_auto_tmm)
this.hideItem('AutoTorrentManagement');
else
this.setItemChecked('AutoTorrentManagement', all_are_auto_tmm);
},
updateCategoriesSubMenu : function (category_list) {

21
src/webui/www/public/scripts/mocha-init.js

@ -303,6 +303,27 @@ initializeWindows = function() { @@ -303,6 +303,27 @@ initializeWindows = function() {
}
};
autoTorrentManagementFN = function() {
var hashes = torrentsTable.selectedRowsIds();
if (hashes.length) {
var enable = false;
hashes.each(function(hash, index) {
var row = torrentsTable.rows[hash];
if (!row.full_data.auto_tmm)
enable = true;
});
new Request({
url: 'command/setAutoTMM',
method: 'post',
data: {
hashes: hashes.join("|"),
enable: enable
}
}).send();
updateMainData();
}
};
recheckFN = function() {
var hashes = torrentsTable.selectedRowsIds();
if (hashes.length) {

3
src/webui/www/public/transferlist.html

@ -70,6 +70,9 @@ @@ -70,6 +70,9 @@
toggleFirstLastPiecePrioFN();
},
AutoTorrentManagement : function (element, ref) {
autoTorrentManagementFN();
},
ForceRecheck : function (element, ref) {
recheckFN();
},

Loading…
Cancel
Save