mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-01-12 18:24:58 +08:00
Several RSS fixes:
- Fix possible redownload of torrents marked as read (Closes #927495) - Properly remove RSS feed settings/history upon feed removal - Fix possible crash in RSS Downloader dialog in debug mode
This commit is contained in:
parent
d53ca1d096
commit
b78d6ba243
@ -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;
|
||||
|
@ -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<QString, QVariant> feeds_w_downloader = qBTRSS.value("downloader_on", QHash<QString, QVariant>()).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();
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -48,6 +48,7 @@ RssManager::~RssManager(){
|
||||
m_refreshTimer.stop();
|
||||
delete m_rssDownloader;
|
||||
RssDownloadRuleList::drop();
|
||||
saveItemsToDisk();
|
||||
saveStreamList();
|
||||
qDebug("RSSManager deleted");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user