diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/newtabpage.cpp | 4 | ||||
| -rw-r--r-- | src/notificationbar.cpp | 6 | ||||
| -rw-r--r-- | src/notificationbar.h | 3 | ||||
| -rw-r--r-- | src/previewselectorbar.cpp | 6 | ||||
| -rw-r--r-- | src/previewselectorbar.h | 2 | ||||
| -rw-r--r-- | src/websnap.cpp | 11 | ||||
| -rw-r--r-- | src/websnap.h | 13 | ||||
| -rw-r--r-- | src/webtab.cpp | 25 | 
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);  }  | 
