From 3889b4c1018c77064eb47203290668884f65b7bf Mon Sep 17 00:00:00 2001 From: Gabriele Date: Fri, 7 Aug 2015 19:15:24 +0200 Subject: [PATCH] Try to download favicon.png when the download of favicon.ico fails This was done only when favicon.ico couldn't be decoded, but not when favicon.ico could not be downloaded at all. --- src/gui/transferlistfilterswidget.cpp | 17 +++++++++++------ src/gui/transferlistfilterswidget.h | 1 + 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/gui/transferlistfilterswidget.cpp b/src/gui/transferlistfilterswidget.cpp index 4fa47ae76..b5797675a 100644 --- a/src/gui/transferlistfilterswidget.cpp +++ b/src/gui/transferlistfilterswidget.cpp @@ -467,9 +467,7 @@ void TrackerFiltersList::addItem(const QString &tracker, const QString &hash) trackerItem = new QListWidgetItem(); trackerItem->setData(Qt::DecorationRole, GuiIconProvider::instance()->getIcon("network-server")); - Net::DownloadHandler *h = Net::DownloadManager::instance()->downloadUrl(QString("http://%1/favicon.ico").arg(host), true); - connect(h, SIGNAL(downloadFinished(QString, QString)), this, SLOT(handleFavicoDownload(QString, QString))); - connect(h, SIGNAL(downloadFailed(QString, QString)), this, SLOT(handleFavicoFailure(QString, QString))); + downloadFavicon(QString("http://%1/favicon.ico").arg(host)); } tmp.append(hash); @@ -610,6 +608,13 @@ void TrackerFiltersList::trackerWarning(const QString &hash, const QString &trac applyFilter(3); } +void TrackerFiltersList::downloadFavicon(const QString& url) +{ + Net::DownloadHandler *h = Net::DownloadManager::instance()->downloadUrl(url, true); + connect(h, SIGNAL(downloadFinished(QString, QString)), this, SLOT(handleFavicoDownload(QString, QString))); + connect(h, SIGNAL(downloadFailed(QString, QString)), this, SLOT(handleFavicoFailure(QString, QString))); +} + void TrackerFiltersList::handleFavicoDownload(const QString& url, const QString& filePath) { QString host = getHost(url); @@ -627,9 +632,7 @@ void TrackerFiltersList::handleFavicoDownload(const QString& url, const QString& if (url.endsWith(".ico", Qt::CaseInsensitive)) { Logger::instance()->addMessage(tr("Couldn't decode favicon for URL `%1`. Trying to download favicon in PNG format.").arg(url), Log::WARNING); - Net::DownloadHandler *h = Net::DownloadManager::instance()->downloadUrl(url.left(url.size() - 4) + ".png", true); - connect(h, SIGNAL(downloadFinished(QString, QString)), this, SLOT(handleFavicoDownload(QString, QString))); - connect(h, SIGNAL(downloadFailed(QString, QString)), this, SLOT(handleFavicoFailure(QString, QString))); + downloadFavicon(url.left(url.size() - 4) + ".png"); } else { Logger::instance()->addMessage(tr("Couldn't decode favicon for URL `%1`.").arg(url), Log::WARNING); @@ -648,6 +651,8 @@ void TrackerFiltersList::handleFavicoFailure(const QString& url, const QString& // that. Logger::instance()->addMessage(tr("Couldn't download favicon for URL `%1`. Reason: `%2`").arg(url).arg(error), Log::WARNING); + if (url.endsWith(".ico", Qt::CaseInsensitive)) + downloadFavicon(url.left(url.size() - 4) + ".png"); } void TrackerFiltersList::showMenu(QPoint) diff --git a/src/gui/transferlistfilterswidget.h b/src/gui/transferlistfilterswidget.h index 63babc89e..55c6d6a45 100644 --- a/src/gui/transferlistfilterswidget.h +++ b/src/gui/transferlistfilterswidget.h @@ -157,6 +157,7 @@ private: int rowFromTracker(const QString &tracker) const; QString getHost(const QString &trakcer) const; QStringList getHashes(int row); + void downloadFavicon(const QString &url); private: QHash m_trackers;