1
0
mirror of https://github.com/d47081/qBittorrent.git synced 2025-01-27 06:54:20 +00:00

Merge pull request #7276 from Chocobo1/pr_7063

Auto torrent management from webui context menu
This commit is contained in:
Mike Tzou 2017-08-15 11:47:21 +08:00 committed by GitHub
commit ea749bb052
7 changed files with 74 additions and 15 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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