Browse Source

- Fix RSS Feed downloader for RSS with no torrent attachment (but articles link points to the torrent instead)

adaptive-webui-19844
Christophe Dumez 15 years ago
parent
commit
141d3b6737
  1. BIN
      src/Icons/oxygen/application-x-kgetlist-no.png
  2. BIN
      src/Icons/oxygen/application-x-kgetlist.png
  3. 2
      src/icons.qrc
  4. 49
      src/rss.cpp
  5. 2
      src/rss.h
  6. 14
      src/rss_imp.cpp

BIN
src/Icons/oxygen/application-x-kgetlist-no.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 743 B

BIN
src/Icons/oxygen/application-x-kgetlist.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 659 B

2
src/icons.qrc

@ -144,7 +144,6 @@ @@ -144,7 +144,6 @@
<file>Icons/oxygen/encrypted.png</file>
<file>Icons/oxygen/edit_clear.png</file>
<file>Icons/oxygen/download.png</file>
<file>Icons/oxygen/application-x-kgetlist-no.png</file>
<file>Icons/oxygen/gear.png</file>
<file>Icons/oxygen/remove.png</file>
<file>Icons/oxygen/dialog-warning.png</file>
@ -165,7 +164,6 @@ @@ -165,7 +164,6 @@
<file>Icons/oxygen/help-about.png</file>
<file>Icons/oxygen/list-add.png</file>
<file>Icons/oxygen/network-server.png</file>
<file>Icons/oxygen/application-x-kgetlist.png</file>
<file>Icons/oxygen/folder.png</file>
<file>Icons/oxygen/urlseed.png</file>
<file>Icons/oxygen/edit-cut.png</file>

49
src/rss.cpp

@ -376,7 +376,6 @@ void RssManager::saveStreamList(){ @@ -376,7 +376,6 @@ void RssManager::saveStreamList(){
/** RssStream **/
RssStream::RssStream(RssFolder* parent, RssManager *rssmanager, Bittorrent *BTSession, QString _url): parent(parent), rssmanager(rssmanager), BTSession(BTSession), alias(""), iconPath(":/Icons/rss16.png"), refreshed(false), downloadFailure(false), currently_loading(false) {
has_attachments = false;
qDebug("RSSStream constructed");
QSettings qBTRSS("qBittorrent", "qBittorrent-rss");
url = QUrl(_url).toString();
@ -388,8 +387,6 @@ RssStream::RssStream(RssFolder* parent, RssManager *rssmanager, Bittorrent *BTSe @@ -388,8 +387,6 @@ RssStream::RssStream(RssFolder* parent, RssManager *rssmanager, Bittorrent *BTSe
RssItem *rss_item = RssItem::fromHash(this, item);
if(rss_item->isValid()) {
(*this)[rss_item->getTitle()] = rss_item;
if(rss_item->has_attachment())
has_attachments = true;
}
}
}
@ -584,29 +581,31 @@ short RssStream::readDoc(const QDomDocument& doc) { @@ -584,29 +581,31 @@ short RssStream::readDoc(const QDomDocument& doc) {
delete item;
item = this->value(title);
}
if(item->has_attachment()) {
has_attachments = true;
// Check if the item should be automatically downloaded
if(!already_exists || !(*this)[item->getTitle()]->isRead()) {
FeedFilter * matching_filter = FeedFilters::getFeedFilters(url).matches(item->getTitle());
if(matching_filter != 0) {
// Download the torrent
BTSession->addConsoleMessage(tr("Automatically downloading %1 torrent from %2 RSS feed...").arg(item->getTitle()).arg(getName()));
if(matching_filter->isValid()) {
QString save_path = matching_filter->getSavePath();
if(save_path.isEmpty())
BTSession->downloadUrlAndSkipDialog(item->getTorrentUrl());
else
BTSession->downloadUrlAndSkipDialog(item->getTorrentUrl(), save_path);
} else {
// All torrents are downloaded from this feed
BTSession->downloadUrlAndSkipDialog(item->getTorrentUrl());
}
// Item was downloaded, consider it as Read
(*this)[item->getTitle()]->setRead();
// Clean up
delete matching_filter;
QString torrent_url;
if(item->has_attachment())
torrent_url = item->getTorrentUrl();
else
torrent_url = item->getLink();
// Check if the item should be automatically downloaded
if(!already_exists || !(*this)[item->getTitle()]->isRead()) {
FeedFilter * matching_filter = FeedFilters::getFeedFilters(url).matches(item->getTitle());
if(matching_filter != 0) {
// Download the torrent
BTSession->addConsoleMessage(tr("Automatically downloading %1 torrent from %2 RSS feed...").arg(item->getTitle()).arg(getName()));
if(matching_filter->isValid()) {
QString save_path = matching_filter->getSavePath();
if(save_path.isEmpty())
BTSession->downloadUrlAndSkipDialog(torrent_url);
else
BTSession->downloadUrlAndSkipDialog(torrent_url, save_path);
} else {
// All torrents are downloaded from this feed
BTSession->downloadUrlAndSkipDialog(torrent_url);
}
// Item was downloaded, consider it as Read
(*this)[item->getTitle()]->setRead();
// Clean up
delete matching_filter;
}
}

2
src/rss.h

@ -394,7 +394,6 @@ private: @@ -394,7 +394,6 @@ private:
bool refreshed;
bool downloadFailure;
bool currently_loading;
bool has_attachments;
public slots:
void processDownloadedFile(QString file_path);
@ -430,7 +429,6 @@ public: @@ -430,7 +429,6 @@ public:
QList<RssItem*> getNewsList() const;
QList<RssItem*> getUnreadNewsList() const;
QString getIconUrl();
bool hasAttachments() const { return has_attachments; }
private:
short readDoc(const QDomDocument& doc);

14
src/rss_imp.cpp

@ -71,10 +71,8 @@ void RSSImp::displayRSSListMenu(const QPoint& pos){ @@ -71,10 +71,8 @@ void RSSImp::displayRSSListMenu(const QPoint& pos){
myRSSListMenu.addSeparator();
myRSSListMenu.addAction(actionCopy_feed_URL);
if(selectedItems.size() == 1) {
if(((RssStream*)listStreams->getRSSItem(selectedItems.first()))->hasAttachments()) {
myRSSListMenu.addSeparator();
myRSSListMenu.addAction(actionRSS_feed_downloader);
}
myRSSListMenu.addSeparator();
myRSSListMenu.addAction(actionRSS_feed_downloader);
}
}
}else{
@ -293,9 +291,7 @@ void RSSImp::downloadTorrent() { @@ -293,9 +291,7 @@ void RSSImp::downloadTorrent() {
if(article->has_attachment()) {
BTSession->downloadFromUrl(article->getTorrentUrl());
} else {
QString link = article->getLink();
if(!link.isEmpty())
QDesktopServices::openUrl(QUrl(link));
BTSession->downloadFromUrl(article->getLink());
}
}
}
@ -444,10 +440,6 @@ void RSSImp::refreshNewsList(QTreeWidgetItem* item) { @@ -444,10 +440,6 @@ void RSSImp::refreshNewsList(QTreeWidgetItem* item) {
foreach(RssItem* article, news){
QTreeWidgetItem* it = new QTreeWidgetItem(listNews);
it->setText(NEWS_TITLE_COL, article->getTitle());
if(article->has_attachment())
it->setData(NEWS_TITLE_COL, Qt::DecorationRole, QVariant(QIcon(":/Icons/oxygen/application-x-kgetlist.png")));
else
it->setData(NEWS_TITLE_COL, Qt::DecorationRole, QVariant(QIcon(":/Icons/oxygen/application-x-kgetlist-no.png")));
it->setText(NEWS_URL_COL, article->getParent()->getUrl());
if(article->isRead()){
it->setData(NEWS_TITLE_COL, Qt::ForegroundRole, QVariant(QColor("grey")));

Loading…
Cancel
Save