#include "pagethumbnailer.h" #include "mainapplication.h" #include "networkmanagerproxy.h" CleanPluginFactory::CleanPluginFactory(QObject* parent) : QWebPluginFactory(parent) { } QList CleanPluginFactory::plugins() const { return QList(); } QObject* CleanPluginFactory::create(const QString &mimeType, const QUrl &url, const QStringList &argumentNames, const QStringList &argumentValues) const { Q_UNUSED(mimeType) Q_UNUSED(url) Q_UNUSED(argumentNames) Q_UNUSED(argumentValues) return 0; } PageThumbnailer::PageThumbnailer(QObject* parent) : QObject(parent) , m_page(new QWebPage(this)) , m_size(QSize(210, 130)) { NetworkManagerProxy* m_networkProxy = new NetworkManagerProxy(); m_networkProxy->setPrimaryNetworkAccessManager(mApp->networkManager()); m_page->setNetworkAccessManager(m_networkProxy); m_page->setPluginFactory(new CleanPluginFactory); m_page->mainFrame()->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff); m_page->mainFrame()->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff); m_page->setViewportSize(QSize(1280, 720)); } void PageThumbnailer::setSize(const QSize &size) { if (size.isValid()) { m_size = size; } } void PageThumbnailer::setUrl(const QUrl &url) { if (url.isValid()) { m_url = url; } } void PageThumbnailer::start() { if (!m_page) { return; } m_page->mainFrame()->load(m_url); connect(m_page, SIGNAL(loadFinished(bool)), this, SLOT(createThumbnail())); } void PageThumbnailer::createThumbnail() { QImage image(m_page->viewportSize(), QImage::Format_ARGB32); QPainter painter(&image); m_page->mainFrame()->render(&painter); painter.end(); QImage scaledImage = image.scaled(m_size, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation); emit thumbnailCreated(QPixmap::fromImage(scaledImage)); delete m_page; m_page = 0; }