From f45214653b3b773d57f94064e43386410a30f465 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Fri, 18 Sep 2009 16:42:20 +0200 Subject: LAST BRANCH (promised!!) first commit here. We have the homepage classes --- src/websnap.cpp | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 src/websnap.cpp (limited to 'src/websnap.cpp') diff --git a/src/websnap.cpp b/src/websnap.cpp new file mode 100644 index 00000000..4892d78f --- /dev/null +++ b/src/websnap.cpp @@ -0,0 +1,94 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2009 Nokia Corporation +* Copyright (C) 2009 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 . +* +* ============================================================ */ + + +#include "websnap.h" +#include "websnap.moc" + +#include +#include + +#include +#include +#include +#include +#include + + +#define WIDTH 200 +#define HEIGHT 150 + + +WebSnap::WebSnap(const KUrl &url, const QString &fileName) + : QObject() + , m_url(url) + , m_image(new QImage(WIDTH, HEIGHT, QImage::Format_ARGB32_Premultiplied)) + , m_fileName(fileName) +{ + // this to not register websnap history + m_page.settings()->setAttribute(QWebSettings::PrivateBrowsingEnabled, true); + + m_targetSize = QSize(200, 150); + connect(&m_page, SIGNAL(loadFinished(bool)), this, SLOT(saveResult(bool))); + QTimer::singleShot(0, this, SLOT(load())); +} + + +void WebSnap::load() +{ + m_page.mainFrame()->load(m_url); +} + + +void WebSnap::saveResult(bool ok) +{ + // crude error-checking + if (!ok) + { + kDebug() << "Error loading site.."; + return; + } + + // find proper size, we stick to sensible aspect ratio + QSize size = m_page.mainFrame()->contentsSize(); + size.setHeight(size.width() * 150 / 200); + + // create the target surface + m_image->fill(Qt::transparent); + + // render and rescale + QPainter p(m_image); + m_page.setViewportSize(m_page.mainFrame()->contentsSize()); + m_page.mainFrame()->render(&p); + p.end(); + *m_image = (*m_image).scaled(WIDTH, HEIGHT, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation); + + QString path = KStandardDirs::locateLocal("cache", QString("thumbs/") + m_fileName, true); + if( m_image->save(path) ) + { + emit finished(); + } +} -- cgit v1.2.1