mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-12-23 16:58:06 -06:00
Add options to adjust behavior of merging trackers to existing torrent
PR #19278. Closes #19251.
This commit is contained in:
committed by
GitHub
parent
fff7b1dcbd
commit
4ef9a6444a
@@ -419,6 +419,8 @@ namespace BitTorrent
|
||||
virtual void setBannedIPs(const QStringList &newList) = 0;
|
||||
virtual ResumeDataStorageType resumeDataStorageType() const = 0;
|
||||
virtual void setResumeDataStorageType(ResumeDataStorageType type) = 0;
|
||||
virtual bool isMergeTrackersEnabled() const = 0;
|
||||
virtual void setMergeTrackersEnabled(bool enabled) = 0;
|
||||
|
||||
virtual bool isRestored() const = 0;
|
||||
|
||||
|
||||
@@ -523,6 +523,7 @@ SessionImpl::SessionImpl(QObject *parent)
|
||||
, m_excludedFileNames(BITTORRENT_SESSION_KEY(u"ExcludedFileNames"_s))
|
||||
, m_bannedIPs(u"State/BannedIPs"_s, QStringList(), Algorithm::sorted<QStringList>)
|
||||
, m_resumeDataStorageType(BITTORRENT_SESSION_KEY(u"ResumeDataStorageType"_s), ResumeDataStorageType::Legacy)
|
||||
, m_isMergeTrackersEnabled(BITTORRENT_KEY(u"MergeTrackersEnabled"_s), false)
|
||||
, m_isI2PEnabled {BITTORRENT_SESSION_KEY(u"I2P/Enabled"_s), false}
|
||||
, m_I2PAddress {BITTORRENT_SESSION_KEY(u"I2P/Address"_s), u"127.0.0.1"_s}
|
||||
, m_I2PPort {BITTORRENT_SESSION_KEY(u"I2P/Port"_s), 7656}
|
||||
@@ -2677,10 +2678,31 @@ bool SessionImpl::addTorrent_impl(const std::variant<MagnetUri, TorrentInfo> &so
|
||||
|
||||
if (Torrent *torrent = findTorrent(infoHash); torrent)
|
||||
{
|
||||
// a duplicate torrent is being added
|
||||
if (torrent->isPrivate())
|
||||
return false;
|
||||
|
||||
if (hasMetadata)
|
||||
{
|
||||
// Trying to set metadata to existing torrent in case if it has none
|
||||
torrent->setMetadata(std::get<TorrentInfo>(source));
|
||||
|
||||
const TorrentInfo &torrentInfo = std::get<TorrentInfo>(source);
|
||||
|
||||
if (torrentInfo.isPrivate())
|
||||
return false;
|
||||
|
||||
// merge trackers and web seeds
|
||||
torrent->addTrackers(torrentInfo.trackers());
|
||||
torrent->addUrlSeeds(torrentInfo.urlSeeds());
|
||||
}
|
||||
else
|
||||
{
|
||||
const MagnetUri &magnetUri = std::get<MagnetUri>(source);
|
||||
|
||||
// merge trackers and web seeds
|
||||
torrent->addTrackers(magnetUri.trackers());
|
||||
torrent->addUrlSeeds(magnetUri.urlSeeds());
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -3904,6 +3926,16 @@ void SessionImpl::setResumeDataStorageType(const ResumeDataStorageType type)
|
||||
m_resumeDataStorageType = type;
|
||||
}
|
||||
|
||||
bool SessionImpl::isMergeTrackersEnabled() const
|
||||
{
|
||||
return m_isMergeTrackersEnabled;
|
||||
}
|
||||
|
||||
void SessionImpl::setMergeTrackersEnabled(const bool enabled)
|
||||
{
|
||||
m_isMergeTrackersEnabled = enabled;
|
||||
}
|
||||
|
||||
QStringList SessionImpl::bannedIPs() const
|
||||
{
|
||||
return m_bannedIPs;
|
||||
|
||||
@@ -398,6 +398,8 @@ namespace BitTorrent
|
||||
void setBannedIPs(const QStringList &newList) override;
|
||||
ResumeDataStorageType resumeDataStorageType() const override;
|
||||
void setResumeDataStorageType(ResumeDataStorageType type) override;
|
||||
bool isMergeTrackersEnabled() const override;
|
||||
void setMergeTrackersEnabled(bool enabled) override;
|
||||
|
||||
bool isRestored() const override;
|
||||
|
||||
@@ -704,6 +706,7 @@ namespace BitTorrent
|
||||
CachedSettingValue<QStringList> m_excludedFileNames;
|
||||
CachedSettingValue<QStringList> m_bannedIPs;
|
||||
CachedSettingValue<ResumeDataStorageType> m_resumeDataStorageType;
|
||||
CachedSettingValue<bool> m_isMergeTrackersEnabled;
|
||||
CachedSettingValue<bool> m_isI2PEnabled;
|
||||
CachedSettingValue<QString> m_I2PAddress;
|
||||
CachedSettingValue<int> m_I2PPort;
|
||||
|
||||
@@ -1508,6 +1508,19 @@ void Preferences::setConfirmPauseAndResumeAll(const bool enabled)
|
||||
setValue(u"GUI/ConfirmActions/PauseAndResumeAllTorrents"_s, enabled);
|
||||
}
|
||||
|
||||
bool Preferences::confirmMergeTrackers() const
|
||||
{
|
||||
return value(u"GUI/ConfirmActions/MergeTrackers"_s, true);
|
||||
}
|
||||
|
||||
void Preferences::setConfirmMergeTrackers(const bool enabled)
|
||||
{
|
||||
if (enabled == confirmMergeTrackers())
|
||||
return;
|
||||
|
||||
setValue(u"GUI/ConfirmActions/MergeTrackers"_s, enabled);
|
||||
}
|
||||
|
||||
#ifndef Q_OS_MACOS
|
||||
TrayIcon::Style Preferences::trayIconStyle() const
|
||||
{
|
||||
|
||||
@@ -317,6 +317,8 @@ public:
|
||||
void setConfirmRemoveAllTags(bool enabled);
|
||||
bool confirmPauseAndResumeAll() const;
|
||||
void setConfirmPauseAndResumeAll(bool enabled);
|
||||
bool confirmMergeTrackers() const;
|
||||
void setConfirmMergeTrackers(bool enabled);
|
||||
#ifndef Q_OS_MACOS
|
||||
bool systemTrayEnabled() const;
|
||||
void setSystemTrayEnabled(bool enabled);
|
||||
|
||||
Reference in New Issue
Block a user