Disable force reannounce when it is not possible

Closes #12080.
PR #16551.
This commit is contained in:
An0n 2022-03-06 10:59:31 +06:00 committed by GitHub
parent ab64ee872b
commit aa189a7fc6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -924,6 +924,7 @@ void TransferListWidget::displayListMenu()
TagSet tagsInAny; TagSet tagsInAny;
TagSet tagsInAll; TagSet tagsInAll;
bool hasInfohashV1 = false, hasInfohashV2 = false; bool hasInfohashV1 = false, hasInfohashV2 = false;
bool oneCanForceReannounce = false;
for (const QModelIndex &index : selectedIndexes) for (const QModelIndex &index : selectedIndexes)
{ {
@ -987,7 +988,8 @@ void TransferListWidget::displayListMenu()
else else
needsStart = true; needsStart = true;
if (torrent->isPaused()) const bool isPaused = torrent->isPaused();
if (isPaused)
needsStart = true; needsStart = true;
else else
needsPause = true; needsPause = true;
@ -1010,10 +1012,16 @@ void TransferListWidget::displayListMenu()
first = false; first = false;
const bool rechecking = torrent->isChecking();
const bool queued = (BitTorrent::Session::instance()->isQueueingSystemEnabled() && torrent->isQueued());
if (!isPaused && !rechecking && !queued)
oneCanForceReannounce = true;
if (oneHasMetadata && oneNotSeed && !allSameSequentialDownloadMode if (oneHasMetadata && oneNotSeed && !allSameSequentialDownloadMode
&& !allSamePrioFirstlast && !allSameSuperSeeding && !allSameCategory && !allSamePrioFirstlast && !allSameSuperSeeding && !allSameCategory
&& needsStart && needsForce && needsPause && needsPreview && !allSameAutoTMM && needsStart && needsForce && needsPause && needsPreview && !allSameAutoTMM
&& hasInfohashV1 && hasInfohashV2) && hasInfohashV1 && hasInfohashV2 && oneCanForceReannounce)
{ {
break; break;
} }
@ -1135,11 +1143,14 @@ void TransferListWidget::displayListMenu()
if (addedPreviewAction) if (addedPreviewAction)
listMenu->addSeparator(); listMenu->addSeparator();
if (oneHasMetadata) if (oneHasMetadata)
{
listMenu->addAction(actionForceRecheck); listMenu->addAction(actionForceRecheck);
listMenu->addAction(actionForceReannounce); // We can not force reannounce torrents that are paused/errored/checking/missing files/queued.
listMenu->addSeparator(); // We may already have the tracker list from magnet url. So we can force reannounce torrents without metadata anyway.
} listMenu->addAction(actionForceReannounce);
actionForceReannounce->setEnabled(oneCanForceReannounce);
if (!oneCanForceReannounce)
actionForceReannounce->setToolTip(tr("Can not force reannounce if torrent is Paused/Queued/Errored/Checking"));
listMenu->addSeparator();
listMenu->addAction(actionOpenDestinationFolder); listMenu->addAction(actionOpenDestinationFolder);
if (BitTorrent::Session::instance()->isQueueingSystemEnabled() && oneNotSeed) if (BitTorrent::Session::instance()->isQueueingSystemEnabled() && oneNotSeed)
{ {