diff --git a/src/librssguard/miscellaneous/feedreader.cpp b/src/librssguard/miscellaneous/feedreader.cpp index 97b829663..febf00339 100644 --- a/src/librssguard/miscellaneous/feedreader.cpp +++ b/src/librssguard/miscellaneous/feedreader.cpp @@ -43,7 +43,9 @@ FeedReader::FeedReader(QObject* parent) << "Requesting update for all feeds on application startup."; QTimer::singleShot(qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::FeedsUpdateStartupDelay)).toDouble() * 1000, this, - &FeedReader::updateAllFeeds); + [this]() { + updateFeeds(m_feedsModel->rootItem()->getSubAutoFetchingEnabledFeeds()); + }); } } diff --git a/src/librssguard/services/abstract/rootitem.cpp b/src/librssguard/services/abstract/rootitem.cpp index a2c9fd3e4..13de7f758 100644 --- a/src/librssguard/services/abstract/rootitem.cpp +++ b/src/librssguard/services/abstract/rootitem.cpp @@ -421,6 +421,27 @@ QList RootItem::getSubTreeManuallyIntervaledFeeds() const { return children; } +QList RootItem::getSubAutoFetchingEnabledFeeds() const { + QList children; + QList traversable_items; + + traversable_items.append(const_cast(this)); + + // Iterate all nested items. + while (!traversable_items.isEmpty()) { + RootItem* active_item = traversable_items.takeFirst(); + + if (active_item->kind() == RootItem::Kind::Feed && + active_item->toFeed()->autoUpdateType() != Feed::AutoUpdateType::DontAutoUpdate) { + children.append(active_item->toFeed()); + } + + traversable_items.append(active_item->childItems()); + } + + return children; +} + ServiceRoot* RootItem::getParentServiceRoot() const { const RootItem* working_parent = this; diff --git a/src/librssguard/services/abstract/rootitem.h b/src/librssguard/services/abstract/rootitem.h index ab9f8ad69..0dccd4214 100644 --- a/src/librssguard/services/abstract/rootitem.h +++ b/src/librssguard/services/abstract/rootitem.h @@ -144,6 +144,7 @@ class RSSGUARD_DLLSPEC RootItem : public QObject { QHash getHashedSubTreeFeeds() const; QList getSubTreeFeeds() const; QList getSubTreeManuallyIntervaledFeeds() const; + QList getSubAutoFetchingEnabledFeeds() const; // Returns the service root node which is direct or indirect parent of current item. ServiceRoot* getParentServiceRoot() const;