From eac63ff86729d8d437eaca46d0a4f9143836c768 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Fri, 21 Apr 2023 08:03:40 +0200 Subject: [PATCH] fixed #388 --- .../standard/gui/formstandardimportexport.cpp | 15 ++++++++++----- .../standard/gui/formstandardimportexport.h | 5 ++++- .../standard/gui/formstandardimportexport.ui | 8 ++++++++ .../standard/standardfeedsimportexportmodel.cpp | 10 ++++++++++ .../standard/standardfeedsimportexportmodel.h | 6 +++++- .../services/standard/standardserviceroot.cpp | 2 +- 6 files changed, 38 insertions(+), 8 deletions(-) diff --git a/src/librssguard/services/standard/gui/formstandardimportexport.cpp b/src/librssguard/services/standard/gui/formstandardimportexport.cpp index 81667bc03..570bf6747 100644 --- a/src/librssguard/services/standard/gui/formstandardimportexport.cpp +++ b/src/librssguard/services/standard/gui/formstandardimportexport.cpp @@ -235,12 +235,16 @@ void FormStandardImportExport::selectImportFile() { m_conversionType = ConversionType::TxtUrlPerLine; } + m_ui->m_cbDoNotFetchTitles->setEnabled(m_conversionType == ConversionType::OPML20); m_ui->m_lblSelectFile->setStatus(WidgetWithStatus::StatusType::Ok, QDir::toNativeSeparators(selected_file), tr("File is selected.")); try { - parseImportFile(selected_file, m_ui->m_groupFetchMetadata->isChecked()); + parseImportFile(selected_file, + m_ui->m_groupFetchMetadata->isChecked(), + m_ui->m_cbDoNotFetchTitles->isChecked(), + m_ui->m_txtPostProcessScript->textEdit()->toPlainText()); } catch (const ApplicationException& ex) { m_ui->m_btnSelectFile->setEnabled(true); @@ -254,7 +258,10 @@ void FormStandardImportExport::selectImportFile() { } } -void FormStandardImportExport::parseImportFile(const QString& file_name, bool fetch_metadata_online) { +void FormStandardImportExport::parseImportFile(const QString& file_name, + bool fetch_metadata_online, + bool do_not_fetch_titles, + const QString& post_process_script) { QByteArray input_data; QFile input_file(file_name); @@ -269,9 +276,7 @@ void FormStandardImportExport::parseImportFile(const QString& file_name, bool fe switch (m_conversionType) { case ConversionType::OPML20: - m_model->importAsOPML20(input_data, - fetch_metadata_online, - m_ui->m_txtPostProcessScript->textEdit()->toPlainText()); + m_model->importAsOPML20(input_data, fetch_metadata_online, do_not_fetch_titles, post_process_script); break; case ConversionType::TxtUrlPerLine: diff --git a/src/librssguard/services/standard/gui/formstandardimportexport.h b/src/librssguard/services/standard/gui/formstandardimportexport.h index 7b1da9d76..5d576160e 100644 --- a/src/librssguard/services/standard/gui/formstandardimportexport.h +++ b/src/librssguard/services/standard/gui/formstandardimportexport.h @@ -39,7 +39,10 @@ class FormStandardImportExport : public QDialog { private: void selectExportFile(bool without_dialog); void selectImportFile(); - void parseImportFile(const QString& file_name, bool fetch_metadata_online); + void parseImportFile(const QString& file_name, + bool fetch_metadata_online, + bool do_not_fetch_titles, + const QString& post_process_script); void exportFeeds(); void importFeeds(); diff --git a/src/librssguard/services/standard/gui/formstandardimportexport.ui b/src/librssguard/services/standard/gui/formstandardimportexport.ui index 0eeed5a6f..ea2909f6f 100644 --- a/src/librssguard/services/standard/gui/formstandardimportexport.ui +++ b/src/librssguard/services/standard/gui/formstandardimportexport.ui @@ -58,6 +58,13 @@ true + + + + Do not fetch titles + + + @@ -277,6 +284,7 @@ m_btnSelectFile m_groupFetchMetadata + m_cbDoNotFetchTitles m_cmbRootNode m_cbExportIcons m_btnCheckAllItems diff --git a/src/librssguard/services/standard/standardfeedsimportexportmodel.cpp b/src/librssguard/services/standard/standardfeedsimportexportmodel.cpp index 811dd6f50..d9824c807 100644 --- a/src/librssguard/services/standard/standardfeedsimportexportmodel.cpp +++ b/src/librssguard/services/standard/standardfeedsimportexportmodel.cpp @@ -191,6 +191,14 @@ bool FeedsImportExportModel::produceFeed(const FeedLookup& feed_lookup) { new_feed->setSource(feed_lookup.url); new_feed->setPostProcessScript(feed_lookup.post_process_script); + + if (feed_lookup.do_not_fetch_titles) { + QString old_title = feed_lookup.custom_data[QSL("title")].toString(); + + if (!old_title.simplified().isEmpty()) { + new_feed->setTitle(old_title); + } + } } else { new_feed = new StandardFeed(); @@ -258,6 +266,7 @@ bool FeedsImportExportModel::produceFeed(const FeedLookup& feed_lookup) { void FeedsImportExportModel::importAsOPML20(const QByteArray& data, bool fetch_metadata_online, + bool do_not_fetch_titles, const QString& post_process_script) { emit parsingStarted(); emit layoutAboutToBeChanged(); @@ -327,6 +336,7 @@ void FeedsImportExportModel::importAsOPML20(const QByteArray& data, f.custom_proxy = custom_proxy; f.fetch_metadata_online = fetch_metadata_online; + f.do_not_fetch_titles = do_not_fetch_titles; f.custom_data = feed_data; f.parent = active_model_item; f.post_process_script = post_process_script; diff --git a/src/librssguard/services/standard/standardfeedsimportexportmodel.h b/src/librssguard/services/standard/standardfeedsimportexportmodel.h index 3e779863f..3669b4be3 100644 --- a/src/librssguard/services/standard/standardfeedsimportexportmodel.h +++ b/src/librssguard/services/standard/standardfeedsimportexportmodel.h @@ -17,6 +17,7 @@ struct FeedLookup { QVariantMap custom_data; QString url; bool fetch_metadata_online; + bool do_not_fetch_titles; QNetworkProxy custom_proxy; QString post_process_script; }; @@ -33,7 +34,10 @@ class FeedsImportExportModel : public AccountCheckSortedModel { // Exports to OPML 2.0 // NOTE: http://dev.opml.org/spec2.html bool exportToOMPL20(QByteArray& result, bool export_icons); - void importAsOPML20(const QByteArray& data, bool fetch_metadata_online, const QString& post_process_script = {}); + void importAsOPML20(const QByteArray& data, + bool fetch_metadata_online, + bool do_not_fetch_titles, + const QString& post_process_script = {}); // Exports to plain text format // where there is one feed URL per line. diff --git a/src/librssguard/services/standard/standardserviceroot.cpp b/src/librssguard/services/standard/standardserviceroot.cpp index c04873fb9..bb1177070 100644 --- a/src/librssguard/services/standard/standardserviceroot.cpp +++ b/src/librssguard/services/standard/standardserviceroot.cpp @@ -75,7 +75,7 @@ void StandardServiceRoot::start(bool freshly_activated) { QString output_msg; try { - model.importAsOPML20(IOFactory::readFile(file_to_load), false); + model.importAsOPML20(IOFactory::readFile(file_to_load), false, false); model.checkAllItems(); if (mergeImportExportModel(&model, this, output_msg)) {