From db5fc72950043afaafde411182558b68302f0d6e Mon Sep 17 00:00:00 2001 From: "Stiliyan Tonev (Bark)" Date: Mon, 13 Jan 2025 16:12:42 +0200 Subject: [PATCH] Add check to Bittorrent tab in preferences too. --- src/gui/optionsdialog.cpp | 35 +++++++++++++++++++++++++++++++++++ src/gui/optionsdialog.h | 1 + 2 files changed, 36 insertions(+) diff --git a/src/gui/optionsdialog.cpp b/src/gui/optionsdialog.cpp index 114f3004f..d62a16f72 100644 --- a/src/gui/optionsdialog.cpp +++ b/src/gui/optionsdialog.cpp @@ -83,6 +83,7 @@ #include "watchedfolderoptionsdialog.h" #include "watchedfoldersmodel.h" #include "webui/webui.h" +#include "base/net/downloadmanager.h" #ifndef DISABLE_WEBUI #include "base/net/dnsupdater.h" @@ -1232,8 +1233,42 @@ void OptionsDialog::saveBittorrentTabOptions() const session->setAddTrackersEnabled(m_ui->checkEnableAddTrackers->isChecked()); session->setAdditionalTrackers(m_ui->textTrackers->toPlainText()); + auto enabledAddTrackers = m_ui->checkAddTrackersFromURL->isChecked(); + auto url = m_ui->textTrackersURL->text(); + if (!url.isEmpty() && enabledAddTrackers) + { + Net::DownloadManager::instance()->download(url, Preferences::instance()->useProxyForGeneralPurposes() + , this, &OptionsDialog::onAddTrackersDownload); + } + else + { + session->setAddTrackersFromURLEnabled(enabledAddTrackers); + session->setAdditionalTrackersURL(url); + } +} + +void OptionsDialog::onAddTrackersDownload(const Net::DownloadResult &result) +{ + if (result.status != Net::DownloadStatus::Success) + { + QMessageBox::warning(this, tr("Download trackers list error") + , tr("Error occurred when downloading the trackers list. Reason: \"%1\"").arg(result.errorString)); + return; + } + + if (!result.contentType.contains(u"text/plain"_s, Qt::CaseInsensitive)) + { + QMessageBox::warning(this, tr("Download trackers list error") + , tr("The content type of the downloaded file is not plain text. Content-Type: \"%1\"").arg(result.contentType)); + return; + } + + auto *session = BitTorrent::Session::instance(); + session->setAddTrackersFromURLEnabled(m_ui->checkAddTrackersFromURL->isChecked()); session->setAdditionalTrackersURL(m_ui->textTrackersURL->text()); + + return; } void OptionsDialog::loadRSSTabOptions() diff --git a/src/gui/optionsdialog.h b/src/gui/optionsdialog.h index c1e29c1d6..d6d7d1a6d 100644 --- a/src/gui/optionsdialog.h +++ b/src/gui/optionsdialog.h @@ -34,6 +34,7 @@ #include "base/pathfwd.h" #include "base/settingvalue.h" #include "guiapplicationcomponent.h" +#include "base/net/downloadmanager.h" class QListWidgetItem;