Skip to content

Commit ceb88b3

Browse files
author
Martin Rotter
committed
optional ignoring if contents changes in article updating
1 parent 1d056a0 commit ceb88b3

File tree

5 files changed

+53
-33
lines changed

5 files changed

+53
-33
lines changed

src/librssguard/database/databasequeries.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1274,18 +1274,19 @@ QPair<int, int> DatabaseQueries::updateMessages(QSqlDatabase db,
12741274
//
12751275
// 4) FOR ALL SERVICES: Message update is forced, we want to overwrite message as some arbitrary atribute was changed,
12761276
// this particularly happens when manual message filter execution happens.
1277+
bool ignore_contents_changes = qApp->settings()->value(GROUP(Messages), SETTING(Messages::IgnoreContentsChanges)).toBool();
12771278
bool cond_1 = !message.m_customId.isEmpty() && feed->getParentServiceRoot()->isSyncable() &&
12781279
(message.m_created.toMSecsSinceEpoch() != date_existing_message ||
12791280
message.m_isRead != is_read_existing_message ||
12801281
message.m_isImportant != is_important_existing_message ||
12811282
message.m_feedId != feed_id_existing_message ||
12821283
message.m_title != title_existing_message ||
1283-
message.m_contents != contents_existing_message);
1284+
(!ignore_contents_changes && message.m_contents != contents_existing_message));
12841285
bool cond_2 = !message.m_customId.isEmpty() && !feed->getParentServiceRoot()->isSyncable() &&
12851286
(message.m_title != title_existing_message ||
1286-
message.m_contents != contents_existing_message);
1287-
bool cond_3 = message.m_createdFromFeed && message.m_created.toMSecsSinceEpoch() != date_existing_message &&
1288-
message.m_contents != contents_existing_message;
1287+
(!ignore_contents_changes && message.m_contents != contents_existing_message));
1288+
bool cond_3 = (message.m_createdFromFeed && message.m_created.toMSecsSinceEpoch() != date_existing_message) ||
1289+
(!ignore_contents_changes && message.m_contents != contents_existing_message);
12891290

12901291
if (cond_1 || cond_2 || cond_3 || force_update) {
12911292
// Message exists and is changed, update it.

src/librssguard/gui/settings/settingsfeedsmessages.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ SettingsFeedsMessages::SettingsFeedsMessages(Settings* settings, QWidget* parent
4747
connect(m_ui->m_spinHeightRowsFeeds, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),
4848
this, &SettingsFeedsMessages::requireRestart);
4949

50+
connect(m_ui->m_cmbIgnoreContentsChanges, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings);
5051
connect(m_ui->m_cbHideCountsIfNoUnread, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings);
5152
connect(m_ui->m_checkAutoUpdate, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings);
5253
connect(m_ui->m_checkAutoUpdateOnlyUnfocused, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings);
@@ -148,9 +149,12 @@ void SettingsFeedsMessages::loadSettings() {
148149
m_ui->m_spinFeedUpdateTimeout->setValue(settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt());
149150
m_ui->m_checkUpdateAllFeedsOnStartup->setChecked(settings()->value(GROUP(Feeds), SETTING(Feeds::FeedsUpdateOnStartup)).toBool());
150151
m_ui->m_spinStartupUpdateDelay->setValue(settings()->value(GROUP(Feeds), SETTING(Feeds::FeedsUpdateStartupDelay)).toDouble());
151-
m_ui->m_cmbCountsFeedList->addItems(QStringList() << "(%unread)" << "[%unread]" << "%unread/%all" << "%unread-%all" << "[%unread|%all]");
152+
m_ui->m_cmbCountsFeedList->addItems({ QSL("(%unread)"), QSL("[%unread]"), QSL("%unread/%all"),
153+
QSL("%unread-%all"), QSL("[%unread|%all]") });
152154
m_ui->m_cmbCountsFeedList->setEditText(settings()->value(GROUP(Feeds), SETTING(Feeds::CountFormat)).toString());
153155
m_ui->m_checkShowTooltips->setChecked(settings()->value(GROUP(Feeds), SETTING(Feeds::EnableTooltipsFeedsMessages)).toBool());
156+
m_ui->m_cmbIgnoreContentsChanges->setChecked(settings()->value(GROUP(Messages),
157+
SETTING(Messages::IgnoreContentsChanges)).toBool());
154158

155159
#if !defined (USE_WEBENGINE)
156160
m_ui->m_checkDisplayPlaceholders->setChecked(settings()->value(GROUP(Messages), SETTING(Messages::DisplayImagePlaceholders)).toBool());
@@ -215,6 +219,7 @@ void SettingsFeedsMessages::saveSettings() {
215219
settings()->setValue(GROUP(Feeds), Feeds::CountFormat, m_ui->m_cmbCountsFeedList->currentText());
216220
settings()->setValue(GROUP(Messages), Messages::UseCustomDate, m_ui->m_checkMessagesDateTimeFormat->isChecked());
217221
settings()->setValue(GROUP(Feeds), Feeds::EnableTooltipsFeedsMessages, m_ui->m_checkShowTooltips->isChecked());
222+
settings()->setValue(GROUP(Messages), Messages::IgnoreContentsChanges, m_ui->m_cmbIgnoreContentsChanges->isChecked());
218223

219224
#if !defined (USE_WEBENGINE)
220225
settings()->setValue(GROUP(Messages), Messages::DisplayImagePlaceholders, m_ui->m_checkDisplayPlaceholders->isChecked());

src/librssguard/gui/settings/settingsfeedsmessages.ui

Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -240,35 +240,42 @@
240240
</property>
241241
</widget>
242242
</item>
243-
<item row="1" column="0" colspan="2">
243+
<item row="2" column="0" colspan="2">
244244
<widget class="QCheckBox" name="m_checkDisplayPlaceholders">
245245
<property name="text">
246246
<string>Display placeholders to indicate locations of pictures</string>
247247
</property>
248248
</widget>
249249
</item>
250250
<item row="3" column="0" colspan="2">
251+
<widget class="QCheckBox" name="m_cbShowEnclosuresDirectly">
252+
<property name="text">
253+
<string>Display attached pictures directly in article</string>
254+
</property>
255+
</widget>
256+
</item>
257+
<item row="4" column="0" colspan="2">
251258
<widget class="QCheckBox" name="m_checkDisplayFeedIcons">
252259
<property name="text">
253260
<string>Display real icons of feeds in list of articles instead of read/unread icons</string>
254261
</property>
255262
</widget>
256263
</item>
257-
<item row="4" column="0" colspan="2">
264+
<item row="5" column="0" colspan="2">
258265
<widget class="QCheckBox" name="m_checkBringToForegroundAfterMsgOpened">
259266
<property name="text">
260267
<string>Bring application window to front once article is opened in external web browser</string>
261268
</property>
262269
</widget>
263270
</item>
264-
<item row="5" column="0" colspan="2">
271+
<item row="6" column="0" colspan="2">
265272
<widget class="QCheckBox" name="m_checkKeppMessagesInTheMiddle">
266273
<property name="text">
267274
<string>Keep article selection in the middle of the article list viewport</string>
268275
</property>
269276
</widget>
270277
</item>
271-
<item row="6" column="0">
278+
<item row="7" column="0">
272279
<widget class="QLabel" name="label_2">
273280
<property name="text">
274281
<string>Height or rows in article list (-1 = default height)</string>
@@ -278,7 +285,7 @@
278285
</property>
279286
</widget>
280287
</item>
281-
<item row="6" column="1">
288+
<item row="7" column="1">
282289
<widget class="QSpinBox" name="m_spinHeightRowsMessages">
283290
<property name="minimum">
284291
<number>-1</number>
@@ -288,7 +295,7 @@
288295
</property>
289296
</widget>
290297
</item>
291-
<item row="7" column="0">
298+
<item row="8" column="0">
292299
<widget class="QLabel" name="label">
293300
<property name="text">
294301
<string>Height of image attachments</string>
@@ -298,7 +305,7 @@
298305
</property>
299306
</widget>
300307
</item>
301-
<item row="7" column="1">
308+
<item row="8" column="1">
302309
<widget class="QSpinBox" name="m_spinHeightImageAttachments">
303310
<property name="minimum">
304311
<number>22</number>
@@ -308,7 +315,23 @@
308315
</property>
309316
</widget>
310317
</item>
311-
<item row="9" column="0" colspan="2">
318+
<item row="9" column="0">
319+
<widget class="QCheckBox" name="m_checkMessagesDateTimeFormat">
320+
<property name="text">
321+
<string>Use custom date/time format (overrides format loaded from active localization)</string>
322+
</property>
323+
<property name="checkable">
324+
<bool>true</bool>
325+
</property>
326+
<property name="checked">
327+
<bool>true</bool>
328+
</property>
329+
</widget>
330+
</item>
331+
<item row="9" column="1">
332+
<widget class="QComboBox" name="m_cmbMessagesDateTimeFormat"/>
333+
</item>
334+
<item row="10" column="0" colspan="2">
312335
<layout class="QHBoxLayout" name="horizontalLayout_4">
313336
<item>
314337
<widget class="QGroupBox" name="groupBox_5">
@@ -377,23 +400,7 @@
377400
</item>
378401
</layout>
379402
</item>
380-
<item row="8" column="0">
381-
<widget class="QCheckBox" name="m_checkMessagesDateTimeFormat">
382-
<property name="text">
383-
<string>Use custom date/time format (overrides format loaded from active localization)</string>
384-
</property>
385-
<property name="checkable">
386-
<bool>true</bool>
387-
</property>
388-
<property name="checked">
389-
<bool>true</bool>
390-
</property>
391-
</widget>
392-
</item>
393-
<item row="8" column="1">
394-
<widget class="QComboBox" name="m_cmbMessagesDateTimeFormat"/>
395-
</item>
396-
<item row="11" column="0" colspan="2">
403+
<item row="12" column="0" colspan="2">
397404
<spacer name="verticalSpacer_2">
398405
<property name="orientation">
399406
<enum>Qt::Vertical</enum>
@@ -406,10 +413,10 @@
406413
</property>
407414
</spacer>
408415
</item>
409-
<item row="2" column="0" colspan="2">
410-
<widget class="QCheckBox" name="m_cbShowEnclosuresDirectly">
416+
<item row="1" column="0" colspan="2">
417+
<widget class="QCheckBox" name="m_cmbIgnoreContentsChanges">
411418
<property name="text">
412-
<string>Display attached pictures directly in article</string>
419+
<string>Ignore changes in article contents when determining if article is &quot;new&quot;</string>
413420
</property>
414421
</widget>
415422
</item>
@@ -440,6 +447,7 @@
440447
<tabstop>m_cbHideCountsIfNoUnread</tabstop>
441448
<tabstop>m_checkShowTooltips</tabstop>
442449
<tabstop>m_checkRemoveReadMessagesOnExit</tabstop>
450+
<tabstop>m_cmbIgnoreContentsChanges</tabstop>
443451
<tabstop>m_checkDisplayPlaceholders</tabstop>
444452
<tabstop>m_cbShowEnclosuresDirectly</tabstop>
445453
<tabstop>m_checkDisplayFeedIcons</tabstop>

src/librssguard/miscellaneous/settings.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,9 @@ DVALUE(char*) Messages::CustomDateFormatDef = "";
105105
DKEY Messages::ClearReadOnExit = "clear_read_on_exit";
106106
DVALUE(bool) Messages::ClearReadOnExitDef = false;
107107

108+
DKEY Messages::IgnoreContentsChanges = "ignore_contents_changes";
109+
DVALUE(bool) Messages::IgnoreContentsChangesDef = true;
110+
108111
DKEY Messages::DisplayFeedIconsInList = "display_feed_icons_in_message_list";
109112
DVALUE(bool) Messages::DisplayFeedIconsInListDef = false;
110113

src/librssguard/miscellaneous/settings.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,9 @@ namespace Messages {
122122
KEY ClearReadOnExit;
123123
VALUE(bool) ClearReadOnExitDef;
124124

125+
KEY IgnoreContentsChanges;
126+
VALUE(bool) IgnoreContentsChangesDef;
127+
125128
KEY DisplayFeedIconsInList;
126129
VALUE(bool) DisplayFeedIconsInListDef;
127130

0 commit comments

Comments
 (0)