diff --git a/src/rss/automatedrssdownloader.cpp b/src/rss/automatedrssdownloader.cpp index b5b4b9690..8707cff7f 100644 --- a/src/rss/automatedrssdownloader.cpp +++ b/src/rss/automatedrssdownloader.cpp @@ -474,8 +474,7 @@ void AutomatedRssDownloader::updateMatchingArticles() if(!rule) continue; foreach(const QString &feed_url, rule->rssFeeds()) { qDebug() << Q_FUNC_INFO << feed_url; - Q_ASSERT(all_feeds.contains(feed_url)); - if(!all_feeds.contains(feed_url)) continue; + if(!all_feeds.contains(feed_url)) continue; // Feed was removed RssFeedPtr feed = all_feeds.value(feed_url); Q_ASSERT(feed); if(!feed) continue; diff --git a/src/rss/rssfeed.cpp b/src/rss/rssfeed.cpp index 907fd4b01..926975739 100644 --- a/src/rss/rssfeed.cpp +++ b/src/rss/rssfeed.cpp @@ -56,15 +56,14 @@ RssFeed::RssFeed(RssManager* manager, RssFolder* parent, const QString &url): } RssFeed::~RssFeed(){ - // Saving current articles to hard disk - if(m_refreshed) { - saveItemsToDisk(); - } if(!m_icon.startsWith(":/") && QFile::exists(m_icon)) QFile::remove(m_icon); } void RssFeed::saveItemsToDisk() { + qDebug() << Q_FUNC_INFO << m_url; + if (!m_refreshed) + return; QIniSettings qBTRSS("qBittorrent", "qBittorrent-rss"); QVariantList old_items; for (RssArticleHash::ConstIterator it=m_articles.begin(); it != m_articles.end(); it++) { @@ -102,6 +101,7 @@ void RssFeed::refresh() { } void RssFeed::removeAllSettings() { + qDebug() << "Removing all settings / history for feed: " << m_url; QIniSettings qBTRSS("qBittorrent", "qBittorrent-rss"); QHash feeds_w_downloader = qBTRSS.value("downloader_on", QHash()).toHash(); if (feeds_w_downloader.contains(m_url)) { @@ -278,13 +278,13 @@ bool RssFeed::parseRSS(QIODevice* device) { } } + // Make sure we limit the number of articles + resizeList(); + // RSS Feed Downloader if(RssSettings().isRssDownloadingEnabled()) downloadMatchingArticleTorrents(); - // Make sure we limit the number of articles - resizeList(); - // Save items to disk (for safety) saveItemsToDisk(); diff --git a/src/rss/rssfeed.h b/src/rss/rssfeed.h index 38fff3080..eeb3ac27f 100644 --- a/src/rss/rssfeed.h +++ b/src/rss/rssfeed.h @@ -55,6 +55,7 @@ public: QString id() const { return m_url; } void removeAllSettings(); bool itemAlreadyExists(const QString &guid) const; + virtual void saveItemsToDisk(); void setLoading(bool val); bool isLoading() const; QString title() const; @@ -82,7 +83,6 @@ private: bool parseXmlFile(const QString &file_path); void downloadMatchingArticleTorrents(); QString iconUrl() const; - void saveItemsToDisk(); void loadItemsFromDisk(); private: diff --git a/src/rss/rssfile.h b/src/rss/rssfile.h index a5690f669..5f2d94154 100644 --- a/src/rss/rssfile.h +++ b/src/rss/rssfile.h @@ -62,6 +62,7 @@ public: virtual void removeAllSettings() = 0; virtual const RssArticleList articleList() const = 0; virtual const RssArticleList unreadArticleList() const = 0; + virtual void saveItemsToDisk() = 0; QStringList pathHierarchy() const; }; diff --git a/src/rss/rssfolder.cpp b/src/rss/rssfolder.cpp index 6938acba5..5ea25353a 100644 --- a/src/rss/rssfolder.cpp +++ b/src/rss/rssfolder.cpp @@ -184,6 +184,13 @@ void RssFolder::removeAllSettings() { } } +void RssFolder::saveItemsToDisk() +{ + foreach(const RssFilePtr& child, m_children.values()) { + child->saveItemsToDisk(); + } +} + QString RssFolder::id() const { return m_name; } diff --git a/src/rss/rssfolder.h b/src/rss/rssfolder.h index f9da556e0..7cdded3c8 100644 --- a/src/rss/rssfolder.h +++ b/src/rss/rssfolder.h @@ -65,6 +65,7 @@ public: const RssArticleList articleList() const; const RssArticleList unreadArticleList() const; void removeAllSettings(); + virtual void saveItemsToDisk(); void removeAllItems(); void renameChildFolder(const QString &old_name, const QString &new_name); RssFilePtr takeChild(const QString &childId); diff --git a/src/rss/rssmanager.cpp b/src/rss/rssmanager.cpp index a23e65c85..a95f10a4e 100644 --- a/src/rss/rssmanager.cpp +++ b/src/rss/rssmanager.cpp @@ -48,6 +48,7 @@ RssManager::~RssManager(){ m_refreshTimer.stop(); delete m_rssDownloader; RssDownloadRuleList::drop(); + saveItemsToDisk(); saveStreamList(); qDebug("RSSManager deleted"); }