From c41ca13ad1be10ffa23fc3742204b06509311885 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Wed, 5 Apr 2023 11:24:31 +0200 Subject: [PATCH] fix using custom account-wide proxy when importing feeds --- .../standard/gui/formstandardimportexport.cpp | 2 +- .../standard/standardfeedsimportexportmodel.cpp | 12 ++++++------ .../standard/standardfeedsimportexportmodel.h | 4 +++- .../services/standard/standardserviceroot.cpp | 2 +- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/librssguard/services/standard/gui/formstandardimportexport.cpp b/src/librssguard/services/standard/gui/formstandardimportexport.cpp index 85ecb3295..81667bc03 100644 --- a/src/librssguard/services/standard/gui/formstandardimportexport.cpp +++ b/src/librssguard/services/standard/gui/formstandardimportexport.cpp @@ -20,7 +20,7 @@ FormStandardImportExport::FormStandardImportExport(StandardServiceRoot* service_root, QWidget* parent) : QDialog(parent), m_ui(new Ui::FormStandardImportExport), m_serviceRoot(service_root) { m_ui->setupUi(this); - m_model = new FeedsImportExportModel(m_ui->m_treeFeeds); + m_model = new FeedsImportExportModel(service_root, m_ui->m_treeFeeds); connect(m_model, &FeedsImportExportModel::parsingStarted, this, &FormStandardImportExport::onParsingStarted); connect(m_model, &FeedsImportExportModel::parsingFinished, this, &FormStandardImportExport::onParsingFinished); connect(m_model, &FeedsImportExportModel::parsingProgress, this, &FormStandardImportExport::onParsingProgress); diff --git a/src/librssguard/services/standard/standardfeedsimportexportmodel.cpp b/src/librssguard/services/standard/standardfeedsimportexportmodel.cpp index cbcf13739..0cfd29342 100644 --- a/src/librssguard/services/standard/standardfeedsimportexportmodel.cpp +++ b/src/librssguard/services/standard/standardfeedsimportexportmodel.cpp @@ -21,8 +21,8 @@ #include #include -FeedsImportExportModel::FeedsImportExportModel(QObject* parent) - : AccountCheckSortedModel(parent), m_mode(Mode::Import), m_newRoot(nullptr) { +FeedsImportExportModel::FeedsImportExportModel(StandardServiceRoot* account, QObject* parent) + : AccountCheckSortedModel(parent), m_account(account), m_mode(Mode::Import), m_newRoot(nullptr) { connect(&m_watcherLookup, &QFutureWatcher::progressValueChanged, this, [=](int prog) { emit parsingProgress(prog, m_lookup.size()); @@ -279,8 +279,8 @@ void FeedsImportExportModel::importAsOPML20(const QByteArray& data, QStack model_items; QNetworkProxy custom_proxy; - if (sourceModel()->rootItem() != nullptr && sourceModel()->rootItem()->getParentServiceRoot() != nullptr) { - custom_proxy = sourceModel()->rootItem()->getParentServiceRoot()->networkProxy(); + if (m_account != nullptr) { + custom_proxy = m_account->networkProxy(); } model_items.push(m_newRoot); @@ -416,8 +416,8 @@ void FeedsImportExportModel::importAsTxtURLPerLine(const QByteArray& data, m_newRoot = new StandardServiceRoot(); QNetworkProxy custom_proxy; - if (sourceModel()->rootItem() != nullptr && sourceModel()->rootItem()->getParentServiceRoot() != nullptr) { - custom_proxy = sourceModel()->rootItem()->getParentServiceRoot()->networkProxy(); + if (m_account != nullptr) { + custom_proxy = m_account->networkProxy(); } QList urls = data.split('\n'); diff --git a/src/librssguard/services/standard/standardfeedsimportexportmodel.h b/src/librssguard/services/standard/standardfeedsimportexportmodel.h index 1bb818820..3e779863f 100644 --- a/src/librssguard/services/standard/standardfeedsimportexportmodel.h +++ b/src/librssguard/services/standard/standardfeedsimportexportmodel.h @@ -10,6 +10,7 @@ #include class StandardFeed; +class StandardServiceRoot; struct FeedLookup { RootItem* parent; @@ -26,7 +27,7 @@ class FeedsImportExportModel : public AccountCheckSortedModel { public: enum class Mode { Import, Export }; - explicit FeedsImportExportModel(QObject* parent = nullptr); + explicit FeedsImportExportModel(StandardServiceRoot* account, QObject* parent = nullptr); virtual ~FeedsImportExportModel(); // Exports to OPML 2.0 @@ -53,6 +54,7 @@ class FeedsImportExportModel : public AccountCheckSortedModel { bool produceFeed(const FeedLookup& feed_lookup); private: + StandardServiceRoot* m_account; QMutex m_mtxLookup; QList m_lookup; RootItem* m_newRoot; diff --git a/src/librssguard/services/standard/standardserviceroot.cpp b/src/librssguard/services/standard/standardserviceroot.cpp index f7014739b..c04873fb9 100644 --- a/src/librssguard/services/standard/standardserviceroot.cpp +++ b/src/librssguard/services/standard/standardserviceroot.cpp @@ -71,7 +71,7 @@ void StandardServiceRoot::start(bool freshly_activated) { file_to_load = target_opml_file.arg(QSL(DEFAULT_LOCALE)); } - FeedsImportExportModel model; + FeedsImportExportModel model(this); QString output_msg; try {