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)) {