mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-01-26 06:25:27 +00:00
Rename isSeed to isFinished to correctly represent its meaning
PR #18580.
This commit is contained in:
parent
4c0ebc0e0f
commit
1e913f46f0
@ -206,7 +206,7 @@ BitTorrent::LoadResumeDataResult BitTorrent::BencodeResumeDataStorage::loadTorre
|
|||||||
LoadTorrentParams torrentParams;
|
LoadTorrentParams torrentParams;
|
||||||
torrentParams.category = fromLTString(resumeDataRoot.dict_find_string_value("qBt-category"));
|
torrentParams.category = fromLTString(resumeDataRoot.dict_find_string_value("qBt-category"));
|
||||||
torrentParams.name = fromLTString(resumeDataRoot.dict_find_string_value("qBt-name"));
|
torrentParams.name = fromLTString(resumeDataRoot.dict_find_string_value("qBt-name"));
|
||||||
torrentParams.hasSeedStatus = resumeDataRoot.dict_find_int_value("qBt-seedStatus");
|
torrentParams.hasFinishedStatus = resumeDataRoot.dict_find_int_value("qBt-seedStatus");
|
||||||
torrentParams.firstLastPiecePriority = resumeDataRoot.dict_find_int_value("qBt-firstLastPiecePriority");
|
torrentParams.firstLastPiecePriority = resumeDataRoot.dict_find_int_value("qBt-firstLastPiecePriority");
|
||||||
torrentParams.seedingTimeLimit = resumeDataRoot.dict_find_int_value("qBt-seedingTimeLimit", Torrent::USE_GLOBAL_SEEDING_TIME);
|
torrentParams.seedingTimeLimit = resumeDataRoot.dict_find_int_value("qBt-seedingTimeLimit", Torrent::USE_GLOBAL_SEEDING_TIME);
|
||||||
|
|
||||||
@ -380,7 +380,7 @@ void BitTorrent::BencodeResumeDataStorage::Worker::store(const TorrentID &id, co
|
|||||||
data["qBt-category"] = resumeData.category.toStdString();
|
data["qBt-category"] = resumeData.category.toStdString();
|
||||||
data["qBt-tags"] = setToEntryList(resumeData.tags);
|
data["qBt-tags"] = setToEntryList(resumeData.tags);
|
||||||
data["qBt-name"] = resumeData.name.toStdString();
|
data["qBt-name"] = resumeData.name.toStdString();
|
||||||
data["qBt-seedStatus"] = resumeData.hasSeedStatus;
|
data["qBt-seedStatus"] = resumeData.hasFinishedStatus;
|
||||||
data["qBt-contentLayout"] = Utils::String::fromEnum(resumeData.contentLayout).toStdString();
|
data["qBt-contentLayout"] = Utils::String::fromEnum(resumeData.contentLayout).toStdString();
|
||||||
data["qBt-firstLastPiecePriority"] = resumeData.firstLastPiecePriority;
|
data["qBt-firstLastPiecePriority"] = resumeData.firstLastPiecePriority;
|
||||||
data["qBt-stopCondition"] = Utils::String::fromEnum(resumeData.stopCondition).toStdString();
|
data["qBt-stopCondition"] = Utils::String::fromEnum(resumeData.stopCondition).toStdString();
|
||||||
|
@ -204,7 +204,7 @@ namespace BitTorrent
|
|||||||
const QStringList tagList = tagsData.split(u',');
|
const QStringList tagList = tagsData.split(u',');
|
||||||
resumeData.tags.insert(tagList.cbegin(), tagList.cend());
|
resumeData.tags.insert(tagList.cbegin(), tagList.cend());
|
||||||
}
|
}
|
||||||
resumeData.hasSeedStatus = query.value(DB_COLUMN_HAS_SEED_STATUS.name).toBool();
|
resumeData.hasFinishedStatus = query.value(DB_COLUMN_HAS_SEED_STATUS.name).toBool();
|
||||||
resumeData.firstLastPiecePriority = query.value(DB_COLUMN_HAS_OUTER_PIECES_PRIORITY.name).toBool();
|
resumeData.firstLastPiecePriority = query.value(DB_COLUMN_HAS_OUTER_PIECES_PRIORITY.name).toBool();
|
||||||
resumeData.ratioLimit = query.value(DB_COLUMN_RATIO_LIMIT.name).toInt() / 1000.0;
|
resumeData.ratioLimit = query.value(DB_COLUMN_RATIO_LIMIT.name).toInt() / 1000.0;
|
||||||
resumeData.seedingTimeLimit = query.value(DB_COLUMN_SEEDING_TIME_LIMIT.name).toInt();
|
resumeData.seedingTimeLimit = query.value(DB_COLUMN_SEEDING_TIME_LIMIT.name).toInt();
|
||||||
@ -704,7 +704,7 @@ void BitTorrent::DBResumeDataStorage::Worker::store(const TorrentID &id, const L
|
|||||||
query.bindValue(DB_COLUMN_RATIO_LIMIT.placeholder, static_cast<int>(resumeData.ratioLimit * 1000));
|
query.bindValue(DB_COLUMN_RATIO_LIMIT.placeholder, static_cast<int>(resumeData.ratioLimit * 1000));
|
||||||
query.bindValue(DB_COLUMN_SEEDING_TIME_LIMIT.placeholder, resumeData.seedingTimeLimit);
|
query.bindValue(DB_COLUMN_SEEDING_TIME_LIMIT.placeholder, resumeData.seedingTimeLimit);
|
||||||
query.bindValue(DB_COLUMN_HAS_OUTER_PIECES_PRIORITY.placeholder, resumeData.firstLastPiecePriority);
|
query.bindValue(DB_COLUMN_HAS_OUTER_PIECES_PRIORITY.placeholder, resumeData.firstLastPiecePriority);
|
||||||
query.bindValue(DB_COLUMN_HAS_SEED_STATUS.placeholder, resumeData.hasSeedStatus);
|
query.bindValue(DB_COLUMN_HAS_SEED_STATUS.placeholder, resumeData.hasFinishedStatus);
|
||||||
query.bindValue(DB_COLUMN_OPERATING_MODE.placeholder, Utils::String::fromEnum(resumeData.operatingMode));
|
query.bindValue(DB_COLUMN_OPERATING_MODE.placeholder, Utils::String::fromEnum(resumeData.operatingMode));
|
||||||
query.bindValue(DB_COLUMN_STOPPED.placeholder, resumeData.stopped);
|
query.bindValue(DB_COLUMN_STOPPED.placeholder, resumeData.stopped);
|
||||||
query.bindValue(DB_COLUMN_STOP_CONDITION.placeholder, Utils::String::fromEnum(resumeData.stopCondition));
|
query.bindValue(DB_COLUMN_STOP_CONDITION.placeholder, Utils::String::fromEnum(resumeData.stopCondition));
|
||||||
|
@ -52,7 +52,7 @@ namespace BitTorrent
|
|||||||
TorrentOperatingMode operatingMode = TorrentOperatingMode::AutoManaged;
|
TorrentOperatingMode operatingMode = TorrentOperatingMode::AutoManaged;
|
||||||
bool useAutoTMM = false;
|
bool useAutoTMM = false;
|
||||||
bool firstLastPiecePriority = false;
|
bool firstLastPiecePriority = false;
|
||||||
bool hasSeedStatus = false;
|
bool hasFinishedStatus = false;
|
||||||
bool stopped = false;
|
bool stopped = false;
|
||||||
Torrent::StopCondition stopCondition;
|
Torrent::StopCondition stopCondition;
|
||||||
|
|
||||||
|
@ -2061,7 +2061,7 @@ void SessionImpl::processShareLimits()
|
|||||||
const QHash<TorrentID, TorrentImpl *> torrents {m_torrents};
|
const QHash<TorrentID, TorrentImpl *> torrents {m_torrents};
|
||||||
for (TorrentImpl *const torrent : torrents)
|
for (TorrentImpl *const torrent : torrents)
|
||||||
{
|
{
|
||||||
if (torrent->isSeed() && !torrent->isForced())
|
if (torrent->isFinished() && !torrent->isForced())
|
||||||
{
|
{
|
||||||
if (torrent->ratioLimit() != Torrent::NO_RATIO_LIMIT)
|
if (torrent->ratioLimit() != Torrent::NO_RATIO_LIMIT)
|
||||||
{
|
{
|
||||||
@ -2541,7 +2541,7 @@ LoadTorrentParams SessionImpl::initLoadTorrentParams(const AddTorrentParams &add
|
|||||||
loadTorrentParams.name = addTorrentParams.name;
|
loadTorrentParams.name = addTorrentParams.name;
|
||||||
loadTorrentParams.useAutoTMM = addTorrentParams.useAutoTMM.value_or(!isAutoTMMDisabledByDefault());
|
loadTorrentParams.useAutoTMM = addTorrentParams.useAutoTMM.value_or(!isAutoTMMDisabledByDefault());
|
||||||
loadTorrentParams.firstLastPiecePriority = addTorrentParams.firstLastPiecePriority;
|
loadTorrentParams.firstLastPiecePriority = addTorrentParams.firstLastPiecePriority;
|
||||||
loadTorrentParams.hasSeedStatus = addTorrentParams.skipChecking; // do not react on 'torrent_finished_alert' when skipping
|
loadTorrentParams.hasFinishedStatus = addTorrentParams.skipChecking; // do not react on 'torrent_finished_alert' when skipping
|
||||||
loadTorrentParams.contentLayout = addTorrentParams.contentLayout.value_or(torrentContentLayout());
|
loadTorrentParams.contentLayout = addTorrentParams.contentLayout.value_or(torrentContentLayout());
|
||||||
loadTorrentParams.operatingMode = (addTorrentParams.addForced ? TorrentOperatingMode::Forced : TorrentOperatingMode::AutoManaged);
|
loadTorrentParams.operatingMode = (addTorrentParams.addForced ? TorrentOperatingMode::Forced : TorrentOperatingMode::AutoManaged);
|
||||||
loadTorrentParams.stopped = addTorrentParams.addPaused.value_or(isAddTorrentPaused());
|
loadTorrentParams.stopped = addTorrentParams.addPaused.value_or(isAddTorrentPaused());
|
||||||
@ -2674,7 +2674,7 @@ bool SessionImpl::addTorrent_impl(const std::variant<MagnetUri, TorrentInfo> &so
|
|||||||
loadTorrentParams.name = contentName;
|
loadTorrentParams.name = contentName;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!loadTorrentParams.hasSeedStatus)
|
if (!loadTorrentParams.hasFinishedStatus)
|
||||||
{
|
{
|
||||||
const Path actualDownloadPath = useAutoTMM
|
const Path actualDownloadPath = useAutoTMM
|
||||||
? categoryDownloadPath(loadTorrentParams.category) : loadTorrentParams.downloadPath;
|
? categoryDownloadPath(loadTorrentParams.category) : loadTorrentParams.downloadPath;
|
||||||
@ -4736,7 +4736,7 @@ void SessionImpl::handleTorrentFinished(TorrentImpl *const torrent)
|
|||||||
|
|
||||||
const bool hasUnfinishedTorrents = std::any_of(m_torrents.cbegin(), m_torrents.cend(), [](const TorrentImpl *torrent)
|
const bool hasUnfinishedTorrents = std::any_of(m_torrents.cbegin(), m_torrents.cend(), [](const TorrentImpl *torrent)
|
||||||
{
|
{
|
||||||
return !(torrent->isSeed() || torrent->isPaused() || torrent->isErrored());
|
return !(torrent->isFinished() || torrent->isPaused() || torrent->isErrored());
|
||||||
});
|
});
|
||||||
if (!hasUnfinishedTorrents)
|
if (!hasUnfinishedTorrents)
|
||||||
emit allTorrentsFinished();
|
emit allTorrentsFinished();
|
||||||
|
@ -217,7 +217,7 @@ namespace BitTorrent
|
|||||||
virtual QVector<DownloadPriority> filePriorities() const = 0;
|
virtual QVector<DownloadPriority> filePriorities() const = 0;
|
||||||
|
|
||||||
virtual TorrentInfo info() const = 0;
|
virtual TorrentInfo info() const = 0;
|
||||||
virtual bool isSeed() const = 0;
|
virtual bool isFinished() const = 0;
|
||||||
virtual bool isPaused() const = 0;
|
virtual bool isPaused() const = 0;
|
||||||
virtual bool isQueued() const = 0;
|
virtual bool isQueued() const = 0;
|
||||||
virtual bool isForced() const = 0;
|
virtual bool isForced() const = 0;
|
||||||
|
@ -254,7 +254,7 @@ TorrentImpl::TorrentImpl(SessionImpl *session, lt::session *nativeSession
|
|||||||
, m_seedingTimeLimit(params.seedingTimeLimit)
|
, m_seedingTimeLimit(params.seedingTimeLimit)
|
||||||
, m_operatingMode(params.operatingMode)
|
, m_operatingMode(params.operatingMode)
|
||||||
, m_contentLayout(params.contentLayout)
|
, m_contentLayout(params.contentLayout)
|
||||||
, m_hasSeedStatus(params.hasSeedStatus)
|
, m_hasFinishedStatus(params.hasFinishedStatus)
|
||||||
, m_hasFirstLastPiecePriority(params.firstLastPiecePriority)
|
, m_hasFirstLastPiecePriority(params.firstLastPiecePriority)
|
||||||
, m_useAutoTMM(params.useAutoTMM)
|
, m_useAutoTMM(params.useAutoTMM)
|
||||||
, m_isStopped(params.stopped)
|
, m_isStopped(params.stopped)
|
||||||
@ -431,8 +431,7 @@ void TorrentImpl::setSavePath(const Path &path)
|
|||||||
|
|
||||||
m_session->handleTorrentNeedSaveResumeData(this);
|
m_session->handleTorrentNeedSaveResumeData(this);
|
||||||
|
|
||||||
const bool isFinished = isSeed() || m_hasSeedStatus;
|
if (isFinished() || m_hasFinishedStatus || downloadPath().isEmpty())
|
||||||
if (isFinished || downloadPath().isEmpty())
|
|
||||||
moveStorage(savePath(), MoveStorageMode::KeepExistingFiles);
|
moveStorage(savePath(), MoveStorageMode::KeepExistingFiles);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -455,8 +454,8 @@ void TorrentImpl::setDownloadPath(const Path &path)
|
|||||||
|
|
||||||
m_session->handleTorrentNeedSaveResumeData(this);
|
m_session->handleTorrentNeedSaveResumeData(this);
|
||||||
|
|
||||||
const bool isFinished = isSeed() || m_hasSeedStatus;
|
const bool isIncomplete = !(isFinished() || m_hasFinishedStatus);
|
||||||
if (!isFinished)
|
if (isIncomplete)
|
||||||
moveStorage((m_downloadPath.isEmpty() ? savePath() : m_downloadPath), MoveStorageMode::KeepExistingFiles);
|
moveStorage((m_downloadPath.isEmpty() ? savePath() : m_downloadPath), MoveStorageMode::KeepExistingFiles);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -999,7 +998,7 @@ bool TorrentImpl::isErrored() const
|
|||||||
|| (m_state == TorrentState::Error));
|
|| (m_state == TorrentState::Error));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TorrentImpl::isSeed() const
|
bool TorrentImpl::isFinished() const
|
||||||
{
|
{
|
||||||
return ((m_nativeStatus.state == lt::torrent_status::finished)
|
return ((m_nativeStatus.state == lt::torrent_status::finished)
|
||||||
|| (m_nativeStatus.state == lt::torrent_status::seeding));
|
|| (m_nativeStatus.state == lt::torrent_status::seeding));
|
||||||
@ -1055,9 +1054,9 @@ void TorrentImpl::updateState()
|
|||||||
else if ((m_nativeStatus.state == lt::torrent_status::checking_files) && !isPaused())
|
else if ((m_nativeStatus.state == lt::torrent_status::checking_files) && !isPaused())
|
||||||
{
|
{
|
||||||
// If the torrent is not just in the "checking" state, but is being actually checked
|
// If the torrent is not just in the "checking" state, but is being actually checked
|
||||||
m_state = m_hasSeedStatus ? TorrentState::CheckingUploading : TorrentState::CheckingDownloading;
|
m_state = m_hasFinishedStatus ? TorrentState::CheckingUploading : TorrentState::CheckingDownloading;
|
||||||
}
|
}
|
||||||
else if (isSeed())
|
else if (isFinished())
|
||||||
{
|
{
|
||||||
if (isPaused())
|
if (isPaused())
|
||||||
m_state = TorrentState::PausedUploading;
|
m_state = TorrentState::PausedUploading;
|
||||||
@ -1145,7 +1144,7 @@ qlonglong TorrentImpl::eta() const
|
|||||||
|
|
||||||
const SpeedSampleAvg speedAverage = m_payloadRateMonitor.average();
|
const SpeedSampleAvg speedAverage = m_payloadRateMonitor.average();
|
||||||
|
|
||||||
if (isSeed())
|
if (isFinished())
|
||||||
{
|
{
|
||||||
const qreal maxRatioValue = maxRatio();
|
const qreal maxRatioValue = maxRatio();
|
||||||
const int maxSeedingTimeValue = maxSeedingTime();
|
const int maxSeedingTimeValue = maxSeedingTime();
|
||||||
@ -1816,9 +1815,9 @@ void TorrentImpl::handleTorrentCheckedAlert(const lt::torrent_checked_alert *p)
|
|||||||
if (!m_hasMissingFiles)
|
if (!m_hasMissingFiles)
|
||||||
{
|
{
|
||||||
if ((progress() < 1.0) && (wantedSize() > 0))
|
if ((progress() < 1.0) && (wantedSize() > 0))
|
||||||
m_hasSeedStatus = false;
|
m_hasFinishedStatus = false;
|
||||||
else if (progress() == 1.0)
|
else if (progress() == 1.0)
|
||||||
m_hasSeedStatus = true;
|
m_hasFinishedStatus = true;
|
||||||
|
|
||||||
adjustStorageLocation();
|
adjustStorageLocation();
|
||||||
manageIncompleteFiles();
|
manageIncompleteFiles();
|
||||||
@ -1845,12 +1844,12 @@ void TorrentImpl::handleTorrentFinishedAlert(const lt::torrent_finished_alert *p
|
|||||||
Q_UNUSED(p);
|
Q_UNUSED(p);
|
||||||
|
|
||||||
m_hasMissingFiles = false;
|
m_hasMissingFiles = false;
|
||||||
if (m_hasSeedStatus)
|
if (m_hasFinishedStatus)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_statusUpdatedTriggers.enqueue([this]()
|
m_statusUpdatedTriggers.enqueue([this]()
|
||||||
{
|
{
|
||||||
m_hasSeedStatus = true;
|
m_hasFinishedStatus = true;
|
||||||
|
|
||||||
adjustStorageLocation();
|
adjustStorageLocation();
|
||||||
manageIncompleteFiles();
|
manageIncompleteFiles();
|
||||||
@ -1977,7 +1976,7 @@ void TorrentImpl::prepareResumeData(const lt::add_torrent_params ¶ms)
|
|||||||
resumeData.ratioLimit = m_ratioLimit;
|
resumeData.ratioLimit = m_ratioLimit;
|
||||||
resumeData.seedingTimeLimit = m_seedingTimeLimit;
|
resumeData.seedingTimeLimit = m_seedingTimeLimit;
|
||||||
resumeData.firstLastPiecePriority = m_hasFirstLastPiecePriority;
|
resumeData.firstLastPiecePriority = m_hasFirstLastPiecePriority;
|
||||||
resumeData.hasSeedStatus = m_hasSeedStatus;
|
resumeData.hasFinishedStatus = m_hasFinishedStatus;
|
||||||
resumeData.stopped = m_isStopped;
|
resumeData.stopped = m_isStopped;
|
||||||
resumeData.stopCondition = m_stopCondition;
|
resumeData.stopCondition = m_stopCondition;
|
||||||
resumeData.operatingMode = m_operatingMode;
|
resumeData.operatingMode = m_operatingMode;
|
||||||
@ -2203,8 +2202,7 @@ void TorrentImpl::manageIncompleteFiles()
|
|||||||
void TorrentImpl::adjustStorageLocation()
|
void TorrentImpl::adjustStorageLocation()
|
||||||
{
|
{
|
||||||
const Path downloadPath = this->downloadPath();
|
const Path downloadPath = this->downloadPath();
|
||||||
const bool isFinished = isSeed() || m_hasSeedStatus;
|
const Path targetPath = ((isFinished() || m_hasFinishedStatus || downloadPath.isEmpty()) ? savePath() : downloadPath);
|
||||||
const Path targetPath = ((isFinished || downloadPath.isEmpty()) ? savePath() : downloadPath);
|
|
||||||
|
|
||||||
if ((targetPath != actualStorageLocation()) || isMoveInProgress())
|
if ((targetPath != actualStorageLocation()) || isMoveInProgress())
|
||||||
moveStorage(targetPath, MoveStorageMode::Overwrite);
|
moveStorage(targetPath, MoveStorageMode::Overwrite);
|
||||||
@ -2677,7 +2675,7 @@ void TorrentImpl::prioritizeFiles(const QVector<DownloadPriority> &priorities)
|
|||||||
&& (priorities[i] > DownloadPriority::Ignored)
|
&& (priorities[i] > DownloadPriority::Ignored)
|
||||||
&& !m_completedFiles.at(i))
|
&& !m_completedFiles.at(i))
|
||||||
{
|
{
|
||||||
m_hasSeedStatus = false;
|
m_hasFinishedStatus = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -139,7 +139,7 @@ namespace BitTorrent
|
|||||||
QVector<DownloadPriority> filePriorities() const override;
|
QVector<DownloadPriority> filePriorities() const override;
|
||||||
|
|
||||||
TorrentInfo info() const override;
|
TorrentInfo info() const override;
|
||||||
bool isSeed() const override;
|
bool isFinished() const override;
|
||||||
bool isPaused() const override;
|
bool isPaused() const override;
|
||||||
bool isQueued() const override;
|
bool isQueued() const override;
|
||||||
bool isForced() const override;
|
bool isForced() const override;
|
||||||
@ -340,7 +340,7 @@ namespace BitTorrent
|
|||||||
int m_seedingTimeLimit;
|
int m_seedingTimeLimit;
|
||||||
TorrentOperatingMode m_operatingMode;
|
TorrentOperatingMode m_operatingMode;
|
||||||
TorrentContentLayout m_contentLayout;
|
TorrentContentLayout m_contentLayout;
|
||||||
bool m_hasSeedStatus;
|
bool m_hasFinishedStatus;
|
||||||
bool m_hasMissingFiles = false;
|
bool m_hasMissingFiles = false;
|
||||||
bool m_hasFirstLastPiecePriority = false;
|
bool m_hasFirstLastPiecePriority = false;
|
||||||
bool m_useAutoTMM;
|
bool m_useAutoTMM;
|
||||||
|
@ -1906,11 +1906,11 @@ void MainWindow::updatePowerManagementState()
|
|||||||
const QVector<BitTorrent::Torrent *> allTorrents = BitTorrent::Session::instance()->torrents();
|
const QVector<BitTorrent::Torrent *> allTorrents = BitTorrent::Session::instance()->torrents();
|
||||||
const bool hasUnfinishedTorrents = std::any_of(allTorrents.cbegin(), allTorrents.cend(), [](const BitTorrent::Torrent *torrent)
|
const bool hasUnfinishedTorrents = std::any_of(allTorrents.cbegin(), allTorrents.cend(), [](const BitTorrent::Torrent *torrent)
|
||||||
{
|
{
|
||||||
return (!torrent->isSeed() && !torrent->isPaused() && !torrent->isErrored() && torrent->hasMetadata());
|
return (!torrent->isFinished() && !torrent->isPaused() && !torrent->isErrored() && torrent->hasMetadata());
|
||||||
});
|
});
|
||||||
const bool hasRunningSeed = std::any_of(allTorrents.cbegin(), allTorrents.cend(), [](const BitTorrent::Torrent *torrent)
|
const bool hasRunningSeed = std::any_of(allTorrents.cbegin(), allTorrents.cend(), [](const BitTorrent::Torrent *torrent)
|
||||||
{
|
{
|
||||||
return (torrent->isSeed() && !torrent->isPaused());
|
return (torrent->isFinished() && !torrent->isPaused());
|
||||||
});
|
});
|
||||||
const bool inhibitSuspend = (Preferences::instance()->preventFromSuspendWhenDownloading() && hasUnfinishedTorrents)
|
const bool inhibitSuspend = (Preferences::instance()->preventFromSuspendWhenDownloading() && hasUnfinishedTorrents)
|
||||||
|| (Preferences::instance()->preventFromSuspendWhenSeeding() && hasRunningSeed);
|
|| (Preferences::instance()->preventFromSuspendWhenSeeding() && hasRunningSeed);
|
||||||
|
@ -378,12 +378,16 @@ void PropertiesWidget::loadDynamicData()
|
|||||||
m_ui->labelDlLimitVal->setText(m_torrent->downloadLimit() <= 0 ? C_INFINITY : Utils::Misc::friendlyUnit(m_torrent->downloadLimit(), true));
|
m_ui->labelDlLimitVal->setText(m_torrent->downloadLimit() <= 0 ? C_INFINITY : Utils::Misc::friendlyUnit(m_torrent->downloadLimit(), true));
|
||||||
|
|
||||||
QString elapsedString;
|
QString elapsedString;
|
||||||
if (m_torrent->isSeed())
|
if (m_torrent->isFinished())
|
||||||
|
{
|
||||||
elapsedString = tr("%1 (seeded for %2)", "e.g. 4m39s (seeded for 3m10s)")
|
elapsedString = tr("%1 (seeded for %2)", "e.g. 4m39s (seeded for 3m10s)")
|
||||||
.arg(Utils::Misc::userFriendlyDuration(m_torrent->activeTime())
|
.arg(Utils::Misc::userFriendlyDuration(m_torrent->activeTime())
|
||||||
, Utils::Misc::userFriendlyDuration(m_torrent->finishedTime()));
|
, Utils::Misc::userFriendlyDuration(m_torrent->finishedTime()));
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
elapsedString = Utils::Misc::userFriendlyDuration(m_torrent->activeTime());
|
elapsedString = Utils::Misc::userFriendlyDuration(m_torrent->activeTime());
|
||||||
|
}
|
||||||
m_ui->labelElapsedVal->setText(elapsedString);
|
m_ui->labelElapsedVal->setText(elapsedString);
|
||||||
|
|
||||||
m_ui->labelConnectionsVal->setText(tr("%1 (%2 max)", "%1 and %2 are numbers, e.g. 3 (10 max)")
|
m_ui->labelConnectionsVal->setText(tr("%1 (%2 max)", "%1 and %2 are numbers, e.g. 3 (10 max)")
|
||||||
@ -429,7 +433,7 @@ void PropertiesWidget::loadDynamicData()
|
|||||||
|
|
||||||
m_ui->labelTotalPiecesVal->setText(tr("%1 x %2 (have %3)", "(torrent pieces) eg 152 x 4MB (have 25)").arg(m_torrent->piecesCount()).arg(Utils::Misc::friendlyUnit(m_torrent->pieceLength())).arg(m_torrent->piecesHave()));
|
m_ui->labelTotalPiecesVal->setText(tr("%1 x %2 (have %3)", "(torrent pieces) eg 152 x 4MB (have 25)").arg(m_torrent->piecesCount()).arg(Utils::Misc::friendlyUnit(m_torrent->pieceLength())).arg(m_torrent->piecesHave()));
|
||||||
|
|
||||||
if (!m_torrent->isSeed() && !m_torrent->isPaused() && !m_torrent->isQueued() && !m_torrent->isChecking())
|
if (!m_torrent->isFinished() && !m_torrent->isPaused() && !m_torrent->isQueued() && !m_torrent->isChecking())
|
||||||
{
|
{
|
||||||
// Pieces availability
|
// Pieces availability
|
||||||
showPiecesAvailability(true);
|
showPiecesAvailability(true);
|
||||||
|
@ -271,7 +271,7 @@ void TransferListWidget::torrentDoubleClicked()
|
|||||||
if (!torrent) return;
|
if (!torrent) return;
|
||||||
|
|
||||||
int action;
|
int action;
|
||||||
if (torrent->isSeed())
|
if (torrent->isFinished())
|
||||||
action = Preferences::instance()->getActionOnDblClOnTorrentFn();
|
action = Preferences::instance()->getActionOnDblClOnTorrentFn();
|
||||||
else
|
else
|
||||||
action = Preferences::instance()->getActionOnDblClOnTorrentDl();
|
action = Preferences::instance()->getActionOnDblClOnTorrentDl();
|
||||||
@ -991,7 +991,7 @@ void TransferListWidget::displayListMenu()
|
|||||||
bool superSeedingMode = false;
|
bool superSeedingMode = false;
|
||||||
bool allSameSequentialDownloadMode = true, allSamePrioFirstlast = true;
|
bool allSameSequentialDownloadMode = true, allSamePrioFirstlast = true;
|
||||||
bool sequentialDownloadMode = false, prioritizeFirstLast = false;
|
bool sequentialDownloadMode = false, prioritizeFirstLast = false;
|
||||||
bool oneHasMetadata = false, oneNotSeed = false;
|
bool oneHasMetadata = false, oneNotFinished = false;
|
||||||
bool allSameCategory = true;
|
bool allSameCategory = true;
|
||||||
bool allSameAutoTMM = true;
|
bool allSameAutoTMM = true;
|
||||||
bool firstAutoTMM = false;
|
bool firstAutoTMM = false;
|
||||||
@ -1032,9 +1032,9 @@ void TransferListWidget::displayListMenu()
|
|||||||
|
|
||||||
if (torrent->hasMetadata())
|
if (torrent->hasMetadata())
|
||||||
oneHasMetadata = true;
|
oneHasMetadata = true;
|
||||||
if (!torrent->isSeed())
|
if (!torrent->isFinished())
|
||||||
{
|
{
|
||||||
oneNotSeed = true;
|
oneNotFinished = true;
|
||||||
if (first)
|
if (first)
|
||||||
{
|
{
|
||||||
sequentialDownloadMode = torrent->isSequentialDownload();
|
sequentialDownloadMode = torrent->isSequentialDownload();
|
||||||
@ -1050,7 +1050,7 @@ void TransferListWidget::displayListMenu()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!oneNotSeed && allSameSuperSeeding && torrent->hasMetadata())
|
if (!oneNotFinished && allSameSuperSeeding && torrent->hasMetadata())
|
||||||
{
|
{
|
||||||
if (first)
|
if (first)
|
||||||
superSeedingMode = torrent->superSeeding();
|
superSeedingMode = torrent->superSeeding();
|
||||||
@ -1100,7 +1100,7 @@ void TransferListWidget::displayListMenu()
|
|||||||
if (!isPaused && !rechecking && !queued)
|
if (!isPaused && !rechecking && !queued)
|
||||||
oneCanForceReannounce = true;
|
oneCanForceReannounce = true;
|
||||||
|
|
||||||
if (oneHasMetadata && oneNotSeed && !allSameSequentialDownloadMode
|
if (oneHasMetadata && oneNotFinished && !allSameSequentialDownloadMode
|
||||||
&& !allSamePrioFirstlast && !allSameSuperSeeding && !allSameCategory
|
&& !allSamePrioFirstlast && !allSameSuperSeeding && !allSameCategory
|
||||||
&& needsStart && needsForce && needsPause && needsPreview && !allSameAutoTMM
|
&& needsStart && needsForce && needsPause && needsPreview && !allSameAutoTMM
|
||||||
&& hasInfohashV1 && hasInfohashV2 && oneCanForceReannounce)
|
&& hasInfohashV1 && hasInfohashV2 && oneCanForceReannounce)
|
||||||
@ -1193,7 +1193,7 @@ void TransferListWidget::displayListMenu()
|
|||||||
|
|
||||||
listMenu->addSeparator();
|
listMenu->addSeparator();
|
||||||
listMenu->addAction(actionTorrentOptions);
|
listMenu->addAction(actionTorrentOptions);
|
||||||
if (!oneNotSeed && oneHasMetadata)
|
if (!oneNotFinished && oneHasMetadata)
|
||||||
{
|
{
|
||||||
actionSuperSeedingMode->setCheckState(allSameSuperSeeding
|
actionSuperSeedingMode->setCheckState(allSameSuperSeeding
|
||||||
? (superSeedingMode ? Qt::Checked : Qt::Unchecked)
|
? (superSeedingMode ? Qt::Checked : Qt::Unchecked)
|
||||||
@ -1207,7 +1207,7 @@ void TransferListWidget::displayListMenu()
|
|||||||
listMenu->addAction(actionPreviewFile);
|
listMenu->addAction(actionPreviewFile);
|
||||||
addedPreviewAction = true;
|
addedPreviewAction = true;
|
||||||
}
|
}
|
||||||
if (oneNotSeed)
|
if (oneNotFinished)
|
||||||
{
|
{
|
||||||
actionSequentialDownload->setCheckState(allSameSequentialDownloadMode
|
actionSequentialDownload->setCheckState(allSameSequentialDownloadMode
|
||||||
? (sequentialDownloadMode ? Qt::Checked : Qt::Unchecked)
|
? (sequentialDownloadMode ? Qt::Checked : Qt::Unchecked)
|
||||||
@ -1234,7 +1234,7 @@ void TransferListWidget::displayListMenu()
|
|||||||
actionForceReannounce->setToolTip(tr("Can not force reannounce if torrent is Paused/Queued/Errored/Checking"));
|
actionForceReannounce->setToolTip(tr("Can not force reannounce if torrent is Paused/Queued/Errored/Checking"));
|
||||||
listMenu->addSeparator();
|
listMenu->addSeparator();
|
||||||
listMenu->addAction(actionOpenDestinationFolder);
|
listMenu->addAction(actionOpenDestinationFolder);
|
||||||
if (BitTorrent::Session::instance()->isQueueingSystemEnabled() && oneNotSeed)
|
if (BitTorrent::Session::instance()->isQueueingSystemEnabled() && oneNotFinished)
|
||||||
{
|
{
|
||||||
listMenu->addSeparator();
|
listMenu->addSeparator();
|
||||||
QMenu *queueMenu = listMenu->addMenu(
|
QMenu *queueMenu = listMenu->addMenu(
|
||||||
|
@ -593,7 +593,7 @@ void TorrentsController::filesAction()
|
|||||||
fileDict[KEY_FILE_PIECE_RANGE] = QJsonArray {idx.first(), idx.last()};
|
fileDict[KEY_FILE_PIECE_RANGE] = QJsonArray {idx.first(), idx.last()};
|
||||||
|
|
||||||
if (index == 0)
|
if (index == 0)
|
||||||
fileDict[KEY_FILE_IS_SEED] = torrent->isSeed();
|
fileDict[KEY_FILE_IS_SEED] = torrent->isFinished();
|
||||||
|
|
||||||
fileList.append(fileDict);
|
fileList.append(fileDict);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user