From 8b458a6999aa90f6cead8665c924a0e66fc1d9bc Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Fri, 25 Feb 2022 13:00:23 +0100 Subject: [PATCH] fixup of datetime switchable --- src/librssguard/core/feeddownloader.cpp | 5 ++- src/librssguard/core/message.cpp | 6 ++- src/librssguard/core/message.h | 2 +- .../gui/settings/settingsfeedsmessages.cpp | 7 ++++ .../gui/settings/settingsfeedsmessages.ui | 40 +++++++++++++++---- src/librssguard/miscellaneous/settings.cpp | 3 ++ src/librssguard/miscellaneous/settings.h | 3 ++ 7 files changed, 55 insertions(+), 11 deletions(-) diff --git a/src/librssguard/core/feeddownloader.cpp b/src/librssguard/core/feeddownloader.cpp index 3fc79da22..f2f6ff721 100644 --- a/src/librssguard/core/feeddownloader.cpp +++ b/src/librssguard/core/feeddownloader.cpp @@ -192,10 +192,13 @@ void FeedDownloader::updateOneFeed(ServiceRoot* acc, << feed->customId() << "' URL: '" << feed->source() << "' title: '" << feed->title() << "' in thread: '" << QThread::currentThreadId() << "'. Operation took " << tmr.nsecsElapsed() / 1000 << " microseconds."; + bool fix_future_datetimes = qApp->settings()->value(GROUP(Messages), + SETTING(Messages::FixupFutureArticleDateTimes)).toBool(); + // Now, sanitize messages (tweak encoding etc.). for (auto& msg : msgs) { msg.m_accountId = acc_id; - msg.sanitize(feed); + msg.sanitize(feed, fix_future_datetimes); } if (!feed->messageFilters().isEmpty()) { diff --git a/src/librssguard/core/message.cpp b/src/librssguard/core/message.cpp index 5fb1c910b..5507f56dd 100644 --- a/src/librssguard/core/message.cpp +++ b/src/librssguard/core/message.cpp @@ -73,7 +73,7 @@ Message::Message() { m_assignedLabels = QList(); } -void Message::sanitize(const Feed* feed) { +void Message::sanitize(const Feed* feed, bool fix_future_datetimes) { // Sanitize title. m_title = m_title @@ -101,7 +101,9 @@ void Message::sanitize(const Feed* feed) { } // Fix datetimes in future. - if (m_createdFromFeed && m_created.toUTC() > QDateTime::currentDateTimeUtc()) { + if (fix_future_datetimes && + m_createdFromFeed && + m_created.toUTC() > QDateTime::currentDateTimeUtc()) { qWarningNN << LOGSEC_CORE << "Fixing future date of article" << QUOTE_W_SPACE(m_title) << "from invalid date/time" << QUOTE_W_SPACE_DOT(m_created); diff --git a/src/librssguard/core/message.h b/src/librssguard/core/message.h index 5bd5f00f5..a78c7f1f8 100644 --- a/src/librssguard/core/message.h +++ b/src/librssguard/core/message.h @@ -36,7 +36,7 @@ class RSSGUARD_DLLSPEC Message { public: explicit Message(); - void sanitize(const Feed* feed); + void sanitize(const Feed* feed, bool fix_future_datetimes); // Creates Message from given record, which contains // row from query SELECT * FROM Messages WHERE ....; diff --git a/src/librssguard/gui/settings/settingsfeedsmessages.cpp b/src/librssguard/gui/settings/settingsfeedsmessages.cpp index ec7a6437e..72b3958ad 100644 --- a/src/librssguard/gui/settings/settingsfeedsmessages.cpp +++ b/src/librssguard/gui/settings/settingsfeedsmessages.cpp @@ -111,6 +111,8 @@ SettingsFeedsMessages::SettingsFeedsMessages(Settings* settings, QWidget* parent connect(m_ui->m_cmbMessagesTimeFormat, &QComboBox::currentTextChanged, this, &SettingsFeedsMessages::dirtifySettings); + connect(m_ui->m_cbFixupArticleDatetime, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings); + connect(m_ui->m_cmbCountsFeedList, &QComboBox::currentTextChanged, this, &SettingsFeedsMessages::dirtifySettings); connect(m_ui->m_cmbCountsFeedList, static_cast(&QComboBox::currentIndexChanged), this, &SettingsFeedsMessages::dirtifySettings); @@ -217,6 +219,9 @@ void SettingsFeedsMessages::loadSettings() { SETTING(Messages::DisplayEnclosuresInMessage)).toBool()); #endif + m_ui->m_cbFixupArticleDatetime->setChecked(settings()->value(GROUP(Messages), + SETTING(Messages::FixupFutureArticleDateTimes)).toBool()); + m_ui->m_checkMessagesDateTimeFormat->setChecked(settings()->value(GROUP(Messages), SETTING(Messages::UseCustomDate)).toBool()); m_ui->m_cmbMessagesDateTimeFormat->setCurrentText(settings()->value(GROUP(Messages), SETTING(Messages::CustomDateFormat)).toString()); @@ -287,6 +292,8 @@ void SettingsFeedsMessages::saveSettings() { m_ui->m_cbShowEnclosuresDirectly->isChecked()); #endif + settings()->setValue(GROUP(Messages), Messages::FixupFutureArticleDateTimes, m_ui->m_cbFixupArticleDatetime->isChecked()); + settings()->setValue(GROUP(Messages), Messages::UseCustomDate, m_ui->m_checkMessagesDateTimeFormat->isChecked()); settings()->setValue(GROUP(Messages), Messages::UseCustomTime, m_ui->m_checkMessagesTimeFormat->isChecked()); diff --git a/src/librssguard/gui/settings/settingsfeedsmessages.ui b/src/librssguard/gui/settings/settingsfeedsmessages.ui index f570f286e..d779e793c 100644 --- a/src/librssguard/gui/settings/settingsfeedsmessages.ui +++ b/src/librssguard/gui/settings/settingsfeedsmessages.ui @@ -297,28 +297,28 @@ - + Display placeholders to indicate locations of pictures - + Display attached pictures directly in article - + Bring application window to front once article is opened in external web browser - + Image attachments height @@ -328,7 +328,7 @@ - + px @@ -341,7 +341,7 @@ - + @@ -384,7 +384,7 @@ - + Qt::Vertical @@ -397,6 +397,13 @@ + + + + Fixup date/time of articles which are in the future + + + @@ -629,11 +636,30 @@ m_spinFeedUpdateTimeout m_checkRemoveReadMessagesOnExit m_cmbIgnoreContentsChanges + m_cbFixupArticleDatetime m_checkDisplayPlaceholders m_cbShowEnclosuresDirectly m_checkBringToForegroundAfterMsgOpened m_spinHeightImageAttachments m_btnChangeMessagesFont + m_tabFeedsMessages + m_spinHeightRowsFeeds + m_btnChangeFeedListFont + m_cmbCountsFeedList + m_cbHideCountsIfNoUnread + m_cbListsRestrictedShortcuts + m_checkShowTooltips + m_checkDisplayFeedIcons + m_checkKeppMessagesInTheMiddle + m_checkMultilineArticleList + m_spinHeightRowsMessages + m_spinPaddingRowsMessages + m_checkMessagesDateTimeFormat + m_cmbMessagesDateTimeFormat + m_checkMessagesTimeFormat + m_cmbMessagesTimeFormat + m_btnChangeMessageListFont + m_spinRelativeArticleTime diff --git a/src/librssguard/miscellaneous/settings.cpp b/src/librssguard/miscellaneous/settings.cpp index 6fd7df468..851e17ec9 100644 --- a/src/librssguard/miscellaneous/settings.cpp +++ b/src/librssguard/miscellaneous/settings.cpp @@ -124,6 +124,9 @@ DVALUE(bool) Messages::DisplayImagePlaceholdersDef = false; DKEY Messages::Zoom = "zoom"; DVALUE(qreal) Messages::ZoomDef = double(1.0f); +DKEY Messages::FixupFutureArticleDateTimes = "fixup_future_datetimes"; +DVALUE(bool) Messages::FixupFutureArticleDateTimesDef = false; + DKEY Messages::UseCustomDate = "use_custom_date"; DVALUE(bool) Messages::UseCustomDateDef = false; diff --git a/src/librssguard/miscellaneous/settings.h b/src/librssguard/miscellaneous/settings.h index bae444e93..710654ebc 100644 --- a/src/librssguard/miscellaneous/settings.h +++ b/src/librssguard/miscellaneous/settings.h @@ -129,6 +129,9 @@ namespace Messages { KEY Zoom; VALUE(qreal) ZoomDef; + KEY FixupFutureArticleDateTimes; + VALUE(bool) FixupFutureArticleDateTimesDef; + KEY UseCustomDate; VALUE(bool) UseCustomDateDef;