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:
commit
ea749bb052
@ -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;
|
||||
|
@ -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) {
|
||||
|
@ -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();
|
||||
|
@ -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>
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -70,6 +70,9 @@
|
||||
toggleFirstLastPiecePrioFN();
|
||||
},
|
||||
|
||||
AutoTorrentManagement : function (element, ref) {
|
||||
autoTorrentManagementFN();
|
||||
},
|
||||
ForceRecheck : function (element, ref) {
|
||||
recheckFN();
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user