diff --git a/src/base/rss/rss_feed.cpp b/src/base/rss/rss_feed.cpp index 0a9abf728..117c8e24e 100644 --- a/src/base/rss/rss_feed.cpp +++ b/src/base/rss/rss_feed.cpp @@ -125,11 +125,13 @@ void Feed::markAsRead() void Feed::refresh() { - if (isLoading()) return; + if (isLoading()) + m_downloadHandler->cancel(); // NOTE: Should we allow manually refreshing for disabled session? - Net::DownloadManager::instance()->download(m_url, this, &Feed::handleDownloadFinished); + m_downloadHandler = Net::DownloadManager::instance()->download(m_url); + connect(m_downloadHandler, &Net::DownloadHandler::finished, this, &Feed::handleDownloadFinished); m_isLoading = true; emit stateChanged(this); diff --git a/src/base/rss/rss_feed.h b/src/base/rss/rss_feed.h index 140d3aa92..5731f6ea1 100644 --- a/src/base/rss/rss_feed.h +++ b/src/base/rss/rss_feed.h @@ -41,6 +41,7 @@ class AsyncFileStorage; namespace Net { + class DownloadHandler; struct DownloadResult; } @@ -125,5 +126,6 @@ namespace RSS QString m_dataFileName; QBasicTimer m_savingTimer; bool m_dirty = false; + Net::DownloadHandler *m_downloadHandler = nullptr; }; }