From 2e1c5e9d0a4c48f4036785b45783e27539f436d0 Mon Sep 17 00:00:00 2001 From: univrsal Date: Wed, 18 Sep 2019 04:29:37 +0200 Subject: [PATCH] added option to postpone auto updates, if window is focused --- .../gui/settings/settingsfeedsmessages.cpp | 3 +++ .../gui/settings/settingsfeedsmessages.ui | 17 ++++++++++++----- src/librssguard/miscellaneous/feedreader.cpp | 9 +++++++++ src/librssguard/miscellaneous/feedreader.h | 1 + src/librssguard/miscellaneous/settings.cpp | 4 ++++ src/librssguard/miscellaneous/settings.h | 4 ++++ 6 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/librssguard/gui/settings/settingsfeedsmessages.cpp b/src/librssguard/gui/settings/settingsfeedsmessages.cpp index b7a415dd0..d9fb905bc 100644 --- a/src/librssguard/gui/settings/settingsfeedsmessages.cpp +++ b/src/librssguard/gui/settings/settingsfeedsmessages.cpp @@ -37,6 +37,7 @@ SettingsFeedsMessages::SettingsFeedsMessages(Settings* settings, QWidget* parent connect(m_ui->m_checkAutoUpdateNotification, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings); connect(m_ui->m_checkAutoUpdate, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings); + connect(m_ui->m_checkAutoUpdateOnlyUnfocused, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings); connect(m_ui->m_checkKeppMessagesInTheMiddle, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings); connect(m_ui->m_checkMessagesDateTimeFormat, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings); connect(m_ui->m_checkRemoveReadMessagesOnExit, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings); @@ -121,6 +122,7 @@ void SettingsFeedsMessages::loadSettings() { m_ui->m_checkKeppMessagesInTheMiddle->setChecked(settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool()); m_ui->m_checkRemoveReadMessagesOnExit->setChecked(settings()->value(GROUP(Messages), SETTING(Messages::ClearReadOnExit)).toBool()); m_ui->m_checkAutoUpdate->setChecked(settings()->value(GROUP(Feeds), SETTING(Feeds::AutoUpdateEnabled)).toBool()); + m_ui->m_checkAutoUpdateOnlyUnfocused->setChecked(settings()->value(GROUP(Feeds), SETTING(Feeds::AutoUpdateOnlyUnfocused)).toBool()); m_ui->m_spinAutoUpdateInterval->setValue(settings()->value(GROUP(Feeds), SETTING(Feeds::AutoUpdateInterval)).toInt()); m_ui->m_spinFeedUpdateTimeout->setValue(settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt()); m_ui->m_checkUpdateAllFeedsOnStartup->setChecked(settings()->value(GROUP(Feeds), SETTING(Feeds::FeedsUpdateOnStartup)).toBool()); @@ -175,6 +177,7 @@ void SettingsFeedsMessages::saveSettings() { settings()->setValue(GROUP(Messages), Messages::KeepCursorInCenter, m_ui->m_checkKeppMessagesInTheMiddle->isChecked()); settings()->setValue(GROUP(Messages), Messages::ClearReadOnExit, m_ui->m_checkRemoveReadMessagesOnExit->isChecked()); settings()->setValue(GROUP(Feeds), Feeds::AutoUpdateEnabled, m_ui->m_checkAutoUpdate->isChecked()); + settings()->setValue(GROUP(Feeds), Feeds::AutoUpdateOnlyUnfocused, m_ui->m_checkAutoUpdateOnlyUnfocused->isChecked()); settings()->setValue(GROUP(Feeds), Feeds::AutoUpdateInterval, m_ui->m_spinAutoUpdateInterval->value()); settings()->setValue(GROUP(Feeds), Feeds::UpdateTimeout, m_ui->m_spinFeedUpdateTimeout->value()); settings()->setValue(GROUP(Feeds), Feeds::FeedsUpdateOnStartup, m_ui->m_checkUpdateAllFeedsOnStartup->isChecked()); diff --git a/src/librssguard/gui/settings/settingsfeedsmessages.ui b/src/librssguard/gui/settings/settingsfeedsmessages.ui index 4ad29c6d0..0da3ec6d0 100644 --- a/src/librssguard/gui/settings/settingsfeedsmessages.ui +++ b/src/librssguard/gui/settings/settingsfeedsmessages.ui @@ -77,7 +77,7 @@ - + Feed list font @@ -100,7 +100,7 @@ - + @@ -133,7 +133,7 @@ - + @@ -157,7 +157,7 @@ - + @@ -181,7 +181,7 @@ - + @@ -199,6 +199,13 @@ + + + + Only update when application is unfocused + + + diff --git a/src/librssguard/miscellaneous/feedreader.cpp b/src/librssguard/miscellaneous/feedreader.cpp index c794ec4bc..592987343 100644 --- a/src/librssguard/miscellaneous/feedreader.cpp +++ b/src/librssguard/miscellaneous/feedreader.cpp @@ -88,6 +88,7 @@ void FeedReader::updateAutoUpdateStatus() { m_globalAutoUpdateInitialInterval = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::AutoUpdateInterval)).toInt(); m_globalAutoUpdateRemainingInterval = m_globalAutoUpdateInitialInterval; m_globalAutoUpdateEnabled = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::AutoUpdateEnabled)).toBool(); + m_globalAutoUpdateOnlyUnfocused = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::AutoUpdateOnlyUnfocused)).toBool(); // Start global auto-update timer if it is not running yet. // NOTE: The timer must run even if global auto-update @@ -144,6 +145,14 @@ MessagesModel* FeedReader::messagesModel() const { } void FeedReader::executeNextAutoUpdate() { + if (qApp->mainFormWidget()->isActiveWindow() && m_globalAutoUpdateOnlyUnfocused) { + qDebug("Delaying scheduled feed auto-update for one minute since window is focused and updates" + "while focused are disabled by the user."); + + // Cannot update, quit. + return; + } + if (!qApp->feedUpdateLock()->tryLock()) { qDebug("Delaying scheduled feed auto-updates for one minute due to another running update."); diff --git a/src/librssguard/miscellaneous/feedreader.h b/src/librssguard/miscellaneous/feedreader.h index 16b1bb763..ae7303a95 100644 --- a/src/librssguard/miscellaneous/feedreader.h +++ b/src/librssguard/miscellaneous/feedreader.h @@ -79,6 +79,7 @@ class RSSGUARD_DLLSPEC FeedReader : public QObject { // Auto-update stuff. QTimer* m_autoUpdateTimer; bool m_globalAutoUpdateEnabled{}; + bool m_globalAutoUpdateOnlyUnfocused{}; int m_globalAutoUpdateInitialInterval{}; int m_globalAutoUpdateRemainingInterval{}; FeedDownloader* m_feedDownloader; diff --git a/src/librssguard/miscellaneous/settings.cpp b/src/librssguard/miscellaneous/settings.cpp index 830c2fd6a..1fe17cc32 100644 --- a/src/librssguard/miscellaneous/settings.cpp +++ b/src/librssguard/miscellaneous/settings.cpp @@ -47,6 +47,10 @@ DKEY Feeds::AutoUpdateEnabled = "auto_update_enabled"; DVALUE(bool) Feeds::AutoUpdateEnabledDef = false; +DKEY Feeds::AutoUpdateOnlyUnfocused = "auto_update_only_unfocused"; + +DVALUE(bool) Feeds::AutoUpdateOnlyUnfocusedDef = false; + DKEY Feeds::FeedsUpdateOnStartup = "feeds_update_on_startup"; DVALUE(bool) Feeds::FeedsUpdateOnStartupDef = false; diff --git a/src/librssguard/miscellaneous/settings.h b/src/librssguard/miscellaneous/settings.h index 536281270..1165e8595 100644 --- a/src/librssguard/miscellaneous/settings.h +++ b/src/librssguard/miscellaneous/settings.h @@ -68,6 +68,10 @@ namespace Feeds { VALUE(bool) AutoUpdateEnabledDef; + KEY AutoUpdateOnlyUnfocused; + + VALUE(bool) AutoUpdateOnlyUnfocusedDef; + KEY FeedsUpdateOnStartup; VALUE(bool) FeedsUpdateOnStartupDef;