From f568e1a95de62392e3d1e53a885f44130592e698 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonatan=20P=C3=A5lsson?= Date: Tue, 11 Mar 2014 08:59:26 +0100 Subject: Fixed API for screenshot function --- browser/browserview.cpp | 31 +++++++++++-------------------- browser/browserview.h | 8 -------- testapp/qml/testapp/WebPageWindow.qml | 2 +- 3 files changed, 12 insertions(+), 29 deletions(-) diff --git a/browser/browserview.cpp b/browser/browserview.cpp index ad36dd9..7c45883 100644 --- a/browser/browserview.cpp +++ b/browser/browserview.cpp @@ -71,7 +71,7 @@ BrowserView::BrowserView(cachemanager *cm, userinput *uip) connect(m_webview.page()->mainFrame(), SIGNAL (contentsSizeChanged(const QSize &)), this, SLOT (contentSizeChanged(const QSize&))); connect(&m_webview, SIGNAL (iconChanged()), this, SIGNAL (onFaviconReceived())); - connect(&m_inputHandler, SIGNAL (onInputText(QString, QString, int, int, int, int, int)), + connect(&m_inputHandler, SIGNAL (onInputText(QString, QString, int, int, int, int, int)), this, SIGNAL (onInputText(QString, QString, int, int, int, int, int))); connect(&m_inputHandler, SIGNAL(onScroll(uint,uint)), this, SLOT(scrollPositionChanged(uint,uint))); connect(&m_inputHandler, SIGNAL(onSelect(const QString &, const conn::brw::SelectableOptionList &, bool)), this, SIGNAL(onSelect(const QString &, const conn::brw::SelectableOptionList &, bool))); @@ -251,32 +251,23 @@ void BrowserView::getScrollPosition(uint &x, uint &y) y = m_scrollPositionY; } -QString BrowserView::createScreenshot(QString url) { - WebPageWaiter waiter; - QWebPage wp; - QSize renderSize(640,480); +QString BrowserView::createScreenshot(QString directory) { + m_webview.page()->mainFrame()->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff); + m_webview.page()->mainFrame()->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff); - connect(&wp, SIGNAL(loadFinished(bool)), &waiter, SLOT (loadFinished(void))); - - wp.mainFrame()->load(QUrl(url)); - wp.setViewportSize(renderSize); - wp.mainFrame()->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff); - wp.mainFrame()->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff); - - for (int i = 0; i < 100; i++) { - waiter.finishedSem.tryAcquire(1,10); - QCoreApplication::processEvents(); - } - - QImage *image = new QImage(renderSize, + QImage *image = new QImage(m_webview.page()->viewportSize(), QImage::Format_ARGB32); QPainter *painter = new QPainter(image); - QTemporaryFile outFile("XXXXXX.png"); + QTemporaryFile outFile(directory + "/XXXXXX.png"); outFile.setAutoRemove(false); outFile.open(); - wp.mainFrame()->render(painter); + m_webview.page()->mainFrame()->render(painter); painter->end(); + + m_webview.page()->mainFrame()->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAsNeeded); + m_webview.page()->mainFrame()->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAsNeeded); + image->save(&outFile, "PNG"); outFile.close(); return outFile.fileName(); diff --git a/browser/browserview.h b/browser/browserview.h index edd3659..9773fcc 100644 --- a/browser/browserview.h +++ b/browser/browserview.h @@ -27,14 +27,6 @@ #include "browserpage.h" #include "userinput.h" -class WebPageWaiter : public QObject { -Q_OBJECT -public slots: - void loadFinished() { finishedSem.release(1); } -public: - QSemaphore finishedSem; -}; - class InputHandler : public QObject { Q_OBJECT public: diff --git a/testapp/qml/testapp/WebPageWindow.qml b/testapp/qml/testapp/WebPageWindow.qml index 001700e..d2b8c22 100644 --- a/testapp/qml/testapp/WebPageWindow.qml +++ b/testapp/qml/testapp/WebPageWindow.qml @@ -482,7 +482,7 @@ Item { anchors.bottom: parent.bottom anchors.bottomMargin: 0 onClicked: { - pageiconimage.source = browserinterface.getPageIcon(browserinterface.getUrl()); + pageiconimage.source = browserinterface.getPageIcon("/tmp/"); } } } -- cgit v1.2.1