summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/newtabpage.cpp4
-rw-r--r--src/notificationbar.cpp6
-rw-r--r--src/notificationbar.h3
-rw-r--r--src/previewselectorbar.cpp6
-rw-r--r--src/previewselectorbar.h2
-rw-r--r--src/websnap.cpp11
-rw-r--r--src/websnap.h13
-rw-r--r--src/webtab.cpp25
8 files changed, 42 insertions, 28 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/notificationbar.cpp b/src/notificationbar.cpp
index 1ff29e92..94c5cba8 100644
--- a/src/notificationbar.cpp
+++ b/src/notificationbar.cpp
@@ -74,6 +74,12 @@ NotificationBar::NotificationBar(QWidget *parent)
setGraphicsEffect(m_blinkEffect);
}
+NotificationBar::~NotificationBar()
+{
+ delete m_opacityAnimation;
+ delete m_blinkEffect;
+}
+
void NotificationBar::notifyUser(int animationDuration)
{
m_opacityAnimation->setDuration(animationDuration);
diff --git a/src/notificationbar.h b/src/notificationbar.h
index 15b0255c..858fac80 100644
--- a/src/notificationbar.h
+++ b/src/notificationbar.h
@@ -37,8 +37,9 @@ class NotificationBar : public QWidget
{
public:
explicit NotificationBar(QWidget *parent = 0);
+ ~NotificationBar();
- void notifyUser(int animationDuration = 500);
+ void notifyUser(int animationDuration = 400);
private:
BlinkEffect *m_blinkEffect;
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/previewselectorbar.h b/src/previewselectorbar.h
index 214514db..9f8c78cc 100644
--- a/src/previewselectorbar.h
+++ b/src/previewselectorbar.h
@@ -45,6 +45,8 @@ public:
PreviewSelectorBar(int index, QWidget *parent);
~PreviewSelectorBar();
+ inline void setIndex(int index) { m_previewIndex = index; }
+
private slots:
void clicked();
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;
diff --git a/src/webtab.cpp b/src/webtab.cpp
index 02c94d32..cce09953 100644
--- a/src/webtab.cpp
+++ b/src/webtab.cpp
@@ -129,19 +129,20 @@ void WebTab::createWalletBar(const QString &key, const QUrl &url)
if (blackList.contains(urlString))
return;
+ KWebWallet *wallet = page()->wallet();
if(_walletBar.isNull()) {
_walletBar = new WalletBar(this);
- KWebWallet *wallet = page()->wallet();
_walletBar.data()->onSaveFormData(key, url);
qobject_cast<QVBoxLayout *>(layout())->insertWidget(0, _walletBar.data() );
-
- connect(_walletBar.data(), SIGNAL(saveFormDataAccepted(const QString &)),
- wallet, SLOT(acceptSaveFormDataRequest(const QString &)));
- connect(_walletBar.data(), SIGNAL(saveFormDataRejected(const QString &)),
- wallet, SLOT(rejectSaveFormDataRequest(const QString &)));
} else {
+ disconnect(wallet);
_walletBar.data()->notifyUser();
}
+
+ connect(_walletBar.data(), SIGNAL(saveFormDataAccepted(const QString &)),
+ wallet, SLOT(acceptSaveFormDataRequest(const QString &)), Qt::UniqueConnection);
+ connect(_walletBar.data(), SIGNAL(saveFormDataRejected(const QString &)),
+ wallet, SLOT(rejectSaveFormDataRequest(const QString &)), Qt::UniqueConnection);
}
@@ -150,14 +151,16 @@ void WebTab::createPreviewSelectorBar(int index)
if(_previewSelectorBar.isNull()) {
_previewSelectorBar = new PreviewSelectorBar(index, this);
qobject_cast<QVBoxLayout *>(layout())->insertWidget(0, _previewSelectorBar.data());
-
- connect(page(), SIGNAL(loadStarted()), _previewSelectorBar.data(), SLOT(loadProgress()));
- connect(page(), SIGNAL(loadProgress(int)), _previewSelectorBar.data(), SLOT(loadProgress()));
- connect(page(), SIGNAL(loadFinished(bool)), _previewSelectorBar.data(), SLOT(loadFinished()));
- connect(page()->mainFrame(), SIGNAL(urlChanged(QUrl)), _previewSelectorBar.data(), SLOT(verifyUrl()));
} else {
+ disconnect(_previewSelectorBar.data());
+ _previewSelectorBar.data()->setIndex(index);
_previewSelectorBar.data()->notifyUser();
}
+
+ connect(page(), SIGNAL(loadStarted()), _previewSelectorBar.data(), SLOT(loadProgress()), Qt::UniqueConnection);
+ connect(page(), SIGNAL(loadProgress(int)), _previewSelectorBar.data(), SLOT(loadProgress()), Qt::UniqueConnection);
+ connect(page(), SIGNAL(loadFinished(bool)), _previewSelectorBar.data(), SLOT(loadFinished()), Qt::UniqueConnection);
+ connect(page()->mainFrame(), SIGNAL(urlChanged(QUrl)), _previewSelectorBar.data(), SLOT(verifyUrl()), Qt::UniqueConnection);
}