From e849d3a657ca33b168c445152d1b9d11966de844 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Tue, 31 Jul 2012 18:28:11 +0200 Subject: IconManager restore Just 3 lines fixes ;) Also clean up in the dir structure... --- src/icons/icondownloader.cpp | 112 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 src/icons/icondownloader.cpp (limited to 'src/icons/icondownloader.cpp') diff --git a/src/icons/icondownloader.cpp b/src/icons/icondownloader.cpp new file mode 100644 index 00000000..6d1f3a5e --- /dev/null +++ b/src/icons/icondownloader.cpp @@ -0,0 +1,112 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2012 by Andrea Diamantini +* +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License or (at your option) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +* +* ============================================================ */ + + +// Self Includes +#include "icondownloader.h" +#include "icondownloader.moc" + +// Qt Includes +#include +#include +#include +#include +#include + + +IconDownloader::IconDownloader(const KUrl &srcUrl, const KUrl &destUrl, QObject *parent) + : QObject(parent) + , m_srcUrl(srcUrl) + , m_destUrl(destUrl) +{ + QNetworkAccessManager *manager = new QNetworkAccessManager(this); + connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*))); + manager->get(QNetworkRequest(srcUrl)); +} + + +void IconDownloader::replyFinished(QNetworkReply *reply) +{ + if (reply->error()) + { + kDebug() << "FAVICON JOB ERROR"; + emit iconReady(); + this->deleteLater(); + return; + } + + QString s = m_destUrl.url().remove(QL1S("file://")); + QFile favicon(s); + if (!favicon.open(QIODevice::WriteOnly)) + { + kDebug() << "FAVICON FILE NOT OPENED"; + emit iconReady(); + this->deleteLater(); + return; + } + + favicon.write(reply->readAll()); + favicon.close(); + + if (favicon.size() == 0) + { + kDebug() << "SIZE ZERO FAVICON"; + favicon.remove(); + emit iconReady(); + this->deleteLater(); + return; + } + + QPixmap px; + if (!px.load(s)) + { + kDebug() << "PIXMAP NOT LOADED"; + emit iconReady(); + this->deleteLater(); + return; + } + + if (px.isNull()) + { + kDebug() << "PIXMAP IS NULL"; + favicon.remove(); + emit iconReady(); + this->deleteLater(); + return; + } + + px = px.scaled(16, 16); + if (!px.save(s + QL1S(".png"), "PNG")) + { + kDebug() << "PIXMAP NOT SAVED"; + emit iconReady(); + this->deleteLater(); + return; + } + + QFile::remove(s); + emit iconReady(); + this->deleteLater(); +} -- cgit v1.2.1