summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrea Diamantini <adjam7@gmail.com>2010-09-17 00:42:55 +0200
committerAndrea Diamantini <adjam7@gmail.com>2010-09-17 00:42:55 +0200
commit596d75fa61f58f489a898ce1918ee04170dbcf6a (patch)
tree58051bd873d88f4896c2c84e24a20071a721d877
parentMerge commit 'refs/merge-requests/2295' of git://gitorious.org/rekonq/mainline (diff)
parentWebsnaps: change the image path to use base64. (diff)
downloadrekonq-596d75fa61f58f489a898ce1918ee04170dbcf6a.tar.xz
Merge commit 'refs/merge-requests/211' of git://gitorious.org/rekonq/mainline into m211
-rw-r--r--src/newtabpage.cpp4
-rw-r--r--src/previewselectorbar.cpp6
-rw-r--r--src/websnap.cpp11
-rw-r--r--src/websnap.h13
4 files changed, 18 insertions, 16 deletions
diff --git a/src/newtabpage.cpp b/src/newtabpage.cpp
index e579e7b9..f5c9c186 100644
--- a/src/newtabpage.cpp
+++ b/src/newtabpage.cpp
@@ -238,7 +238,7 @@ QWebElement NewTabPage::loadingPreview(int index, const KUrl &url)
// 2) to "auto-destroy" snaps on tab closing :)
QWebFrame *frame = qobject_cast<QWebFrame *>(parent());
WebSnap *snap = new WebSnap(url, frame);
- connect(snap, SIGNAL(snapDone(bool)), frame->page(), SLOT(updateImage(bool)));
+ connect(snap, SIGNAL(snapDone(bool)), frame->page(), SLOT(updateImage(bool)), Qt::UniqueConnection);
return prev;
}
@@ -247,7 +247,6 @@ QWebElement NewTabPage::validPreview(int index, const KUrl &url, const QString &
{
QWebElement prev = markup(".thumbnail");
QString previewPath = QL1S("file://") + WebSnap::imagePathFromUrl(url);
- QString iString = QVariant(index).toString();
prev.findFirst(".preview img").setAttribute("src" , previewPath);
prev.findFirst("a").setAttribute("href", url.toMimeDataString()); // NOTE ?
@@ -256,7 +255,6 @@ QWebElement NewTabPage::validPreview(int index, const KUrl &url, const QString &
setupPreview(prev, index);
showControls(prev);
-
return prev;
}
diff --git a/src/previewselectorbar.cpp b/src/previewselectorbar.cpp
index 209a0a92..1b3d3380 100644
--- a/src/previewselectorbar.cpp
+++ b/src/previewselectorbar.cpp
@@ -31,6 +31,7 @@
// Self Includes
#include "rekonq.h"
+#include "websnap.h"
// Local Include
#include "application.h"
@@ -126,6 +127,11 @@ void PreviewSelectorBar::clicked()
KUrl url = page->mainFrame()->url();
QStringList names = ReKonfig::previewNames();
QStringList urls = ReKonfig::previewUrls();
+ //cleanup the previous image from the cache (useful to refresh the snapshot)
+ QFile::remove(WebSnap::imagePathFromUrl(urls.at(m_previewIndex)));
+ page->mainFrame()->setScrollBarValue(Qt::Vertical, 0);
+ QPixmap preview = WebSnap::renderPagePreview(*page);
+ preview.save(WebSnap::imagePathFromUrl(url));
urls.replace(m_previewIndex, url.toMimeDataString());
names.replace(m_previewIndex, page->mainFrame()->title());
diff --git a/src/websnap.cpp b/src/websnap.cpp
index afa08c64..54cf1053 100644
--- a/src/websnap.cpp
+++ b/src/websnap.cpp
@@ -38,7 +38,6 @@
// Qt Includes
#include <QtCore/QSize>
-#include <QtCore/QTimer>
#include <QtCore/QFile>
#include <QtGui/QPainter>
@@ -61,7 +60,7 @@ WebSnap::WebSnap(const KUrl& url, QObject *parent)
connect(&m_page, SIGNAL(loadFinished(bool)), this, SLOT(saveResult(bool)));
- QTimer::singleShot(0, this, SLOT(load()));
+ QMetaObject::invokeMethod(this, "load", Qt::QueuedConnection);
}
@@ -184,9 +183,9 @@ QPixmap WebSnap::renderPagePreview(const QWebPage &page, int w, int h)
QString WebSnap::imagePathFromUrl(const KUrl &url)
{
QUrl temp = QUrl(url.url());
- QString name = temp.toString(QUrl::RemoveScheme | QUrl::RemoveUserInfo | QUrl::StripTrailingSlash);
- name.remove(QRegExp(QL1S("[&+=_?./-]")));
- return KStandardDirs::locateLocal("cache", QString("thumbs/") + name + ".png", true);
+ QByteArray name = temp.toEncoded(QUrl::RemoveScheme | QUrl::RemoveUserInfo | QUrl::StripTrailingSlash);
+
+ return KStandardDirs::locateLocal("cache", QString("thumbs/") + name.toBase64() + ".png", true);
}
@@ -194,7 +193,7 @@ void WebSnap::saveResult(bool ok)
{
if (ok)
{
- QPixmap image = renderPagePreview(m_page, WIDTH, HEIGHT);
+ QPixmap image = renderPagePreview(m_page, defaultWidth, defaultHeight);
QString path = imagePathFromUrl(m_url);
QFile::remove(path);
image.save(path);
diff --git a/src/websnap.h b/src/websnap.h
index 5bad952d..e5b550fc 100644
--- a/src/websnap.h
+++ b/src/websnap.h
@@ -43,11 +43,6 @@
// Forward Declarations
class QPixmap;
-// Defines
-#define WIDTH 200
-#define HEIGHT 150
-
-
/**
* This class is used in many classes of rekonq to produce an image
* based on the site corresponding to the url passed as argument.
@@ -63,6 +58,7 @@ class QPixmap;
* - NewTabPage class: to show the favorites page "preview" (given an url, you show AND save an image)
*
*/
+
class REKONQ_TESTS_EXPORT WebSnap : public QObject
{
Q_OBJECT
@@ -88,7 +84,7 @@ public:
*
* @return the pixmap snapped from the page
*/
- static QPixmap renderPagePreview(const QWebPage &page, int w = WIDTH, int h = HEIGHT);
+ static QPixmap renderPagePreview(const QWebPage &page, int w = defaultWidth, int h = defaultHeight);
// static QPixmap renderVisiblePagePreview(const QWebPage &page, int w = WIDTH, int h = HEIGHT); TODO: try to make this method work => more previews for the urlbar
@@ -101,7 +97,7 @@ public:
*
* @return the pixmap snapped from the page
*/
- static QPixmap renderClosingPagePreview(const QWebPage &page, int w = WIDTH, int h = HEIGHT);
+ static QPixmap renderClosingPagePreview(const QWebPage &page, int w = defaultWidth, int h = defaultHeight);
/**
* Snaps a pixmap of size w * h from a page for tab preview
@@ -139,6 +135,9 @@ signals:
void snapDone(bool ok);
private:
+ // Constants
+ static const int defaultWidth = 200;
+ static const int defaultHeight = 150;
QWebPage m_page;
KUrl m_url;