diff options
-rw-r--r-- | data/home.html | 11 | ||||
-rw-r--r-- | src/homepage.cpp | 12 | ||||
-rw-r--r-- | src/previewimage.cpp | 49 | ||||
-rw-r--r-- | src/previewimage.h | 15 | ||||
-rw-r--r-- | src/webpluginfactory.cpp | 6 | ||||
-rw-r--r-- | src/websnap.cpp | 38 | ||||
-rw-r--r-- | src/websnap.h | 1 |
7 files changed, 93 insertions, 39 deletions
diff --git a/data/home.html b/data/home.html index 8b5cf296..d7ae7c87 100644 --- a/data/home.html +++ b/data/home.html @@ -109,23 +109,24 @@ float:left; width: 25%; min-width: 235px; margin-bottom: 3%; +cursor: pointer; } -.thumbnail object{ -background: url(%2/bg.png) no-repeat; +/*.thumbnail { + background: url(%2/bg.png) no-repeat; text-align: center; padding: 14px 16px; -webkit-background-size: 100% 100%; -webkit-background-clip: padding; cursor: pointer; -} -.thumbnail a { +}*/ +/*.thumbnail a { display: block; text-align: center; color: #767676; font-size: 0.8em; text-decoration:none; -} +}*/ /* -------------------------------------------------------- */ /* Bookmarks page*/ diff --git a/src/homepage.cpp b/src/homepage.cpp index fabb2a91..7d1e2671 100644 --- a/src/homepage.cpp +++ b/src/homepage.cpp @@ -123,18 +123,19 @@ QString HomePage::fillFavorites() } speed += "<div class=\"thumbnail\">"; speed += "<object type=\"application/image-preview\" data=\""; - speed += urls.at(i) + "\" width=\"200\">"; + speed += urls.at(i) + "\" >"; + speed += "<param name=\"title\" value=\"" + text + "\" />"; speed += "<param name=\"index\" value=\"" + QString::number(i) + "\" />"; speed += "<param name=\"isFavorite\" value=\"true\" />"; speed += "</object>"; - speed += "<br />"; - speed += "<a href=\"" + urls.at(i) + "\">" + text + "</a></div>"; + speed += "</div>"; } return speed; } +// FIXME : port to new PreviewImage API to use... QString HomePage::lastVisitedSites() { QString last; @@ -293,9 +294,10 @@ QString HomePage::fillClosedTabs() closed += "<div class=\"thumbnail\">"; closed += "<object type=\"application/image-preview\" data=\""; closed += url.prettyUrl() + "\" width=\"200\">"; + closed += "<param name=\"title\" value=\"" + text + "\" />"; + closed += "<param name=\"index\" value=\"" + QString::number(i) + "\" />"; closed += "</object>"; - closed += "<br />"; - closed += "<a href=\"" + url.prettyUrl() + "\">" + text + "</a></div>"; + closed += "</div>"; } return closed; diff --git a/src/previewimage.cpp b/src/previewimage.cpp index ae23cde0..42b275b2 100644 --- a/src/previewimage.cpp +++ b/src/previewimage.cpp @@ -48,17 +48,26 @@ #include <QMovie> #include <QMouseEvent> #include <QHBoxLayout> +#include <QVBoxLayout> -PreviewImage::PreviewImage(const QUrl &url, int index, bool isFavorite) - : QLabel() +PreviewImage::PreviewImage(const QUrl &url, const QString &title, int index, bool isFavorite) + : QWidget() , ws(0) - , m_url(0) , loadingSnapshot(false) + , m_url(0) + , m_title(title) , m_isFavorite(isFavorite) , m_index(index) , m_button(0) + , m_imageLabel(new QLabel) + , m_textLabel(new QLabel) { + QVBoxLayout *mainLayout = new QVBoxLayout; + mainLayout->addWidget(m_imageLabel); + mainLayout->addWidget(m_textLabel); + setLayout(mainLayout); + loadUrlPreview(url); setAlignment(Qt::AlignCenter); } @@ -67,6 +76,8 @@ PreviewImage::PreviewImage(const QUrl &url, int index, bool isFavorite) PreviewImage::~PreviewImage() { delete ws; + delete m_imageLabel; + delete m_textLabel; } @@ -86,7 +97,8 @@ void PreviewImage::loadUrlPreview(const QUrl& url) if(QFile::exists(m_savePath)) { m_pixmap.load(m_savePath); - setPixmap(m_pixmap); + m_imageLabel->setPixmap(m_pixmap); + m_textLabel->setText(m_title); } else { @@ -99,8 +111,9 @@ void PreviewImage::loadUrlPreview(const QUrl& url) // load an animation waiting for site preview QMovie *movie = new QMovie(path, QByteArray(), this); movie->setSpeed(50); - setMovie(movie); + m_imageLabel->setMovie(movie); movie->start(); + m_textLabel->setText( i18n("Loading preview...") ); } } @@ -108,13 +121,19 @@ void PreviewImage::loadUrlPreview(const QUrl& url) void PreviewImage::snapFinished() { loadingSnapshot = false; - QMovie *m = movie(); + QMovie *m = m_imageLabel->movie(); delete m; +<<<<<<< HEAD setMovie(0); +======= + m_imageLabel->setMovie(0); + +>>>>>>> STEP 1 m_pixmap = ws->previewImage(); - setPixmap(m_pixmap); - + m_imageLabel->setPixmap(m_pixmap); + m_textLabel->setText(m_title); + m_pixmap.save(m_savePath); if(m_index > -1) @@ -140,10 +159,11 @@ void PreviewImage::showEmptyPreview() { if(!m_isFavorite) return; - - clear(); - - QHBoxLayout *layout = new QHBoxLayout(this); + + m_imageLabel->clear(); + m_textLabel->clear(); + + QVBoxLayout *layout = new QVBoxLayout; m_button = new QToolButton(this); m_button->setDefaultAction(historyMenu()); m_button->setPopupMode(QToolButton::InstantPopup); @@ -152,6 +172,7 @@ void PreviewImage::showEmptyPreview() m_button->setAutoRaise(true); m_button->setIconSize(QSize(48, 48)); layout->addWidget(m_button); + m_imageLabel->setLayout(layout); } @@ -193,7 +214,7 @@ void PreviewImage::mousePressEvent(QMouseEvent *event) */ return; }; - QLabel::mousePressEvent(event); + QWidget::mousePressEvent(event); } @@ -287,7 +308,7 @@ void PreviewImage::setUrlFromAction() if(m_button) { - layout()->deleteLater(); + m_imageLabel->layout()->deleteLater(); m_button->menu()->deleteLater(); m_button->deleteLater(); } diff --git a/src/previewimage.h b/src/previewimage.h index 5568dd29..6bc27d8d 100644 --- a/src/previewimage.h +++ b/src/previewimage.h @@ -35,16 +35,17 @@ // Qt Includes #include <QLabel> +#include <QFrame> #include <QImage> #include <QUrl> #include <QToolButton> -class PreviewImage : public QLabel +class PreviewImage : public QWidget { Q_OBJECT public: - PreviewImage(const QUrl &url, int index, bool isFavorite); + PreviewImage(const QUrl &url, const QString &title, int index, bool isFavorite); ~PreviewImage(); QString guessNameFromUrl(QUrl url); @@ -70,14 +71,18 @@ private: QPixmap m_pixmap; WebSnap *ws; - QUrl m_url; - QString m_savePath; - + QString m_savePath; bool loadingSnapshot; + + QUrl m_url; + QString m_title; bool m_isFavorite; int m_index; QToolButton *m_button; + + QLabel *m_imageLabel; + QLabel *m_textLabel; }; #endif // PREVIEW_IMAGE_H diff --git a/src/webpluginfactory.cpp b/src/webpluginfactory.cpp index b9d50697..3daffbb6 100644 --- a/src/webpluginfactory.cpp +++ b/src/webpluginfactory.cpp @@ -57,10 +57,14 @@ QObject *WebPluginFactory::create(const QString &mimeType, if(mimeType == QString("application/image-preview") ) { + QString title; int number = -1; bool isFavorite = false; int i; + i = argumentNames.indexOf( QString("title") ); + if(i > -1) + title = argumentValues.at(i); i = argumentNames.indexOf( QString("isFavorite") ); if(i > -1) isFavorite = true; @@ -68,7 +72,7 @@ QObject *WebPluginFactory::create(const QString &mimeType, if(i > -1) number = argumentValues.at(i).toInt(); - return new PreviewImage(url, number, isFavorite); + return new PreviewImage(url, title, number, isFavorite); } // this let QtWebKit using builtin plugins diff --git a/src/websnap.cpp b/src/websnap.cpp index 577370ba..5727bc6f 100644 --- a/src/websnap.cpp +++ b/src/websnap.cpp @@ -95,24 +95,44 @@ QPixmap WebSnap::renderPreview(const QWebPage &page,int w, int h) size = QSize(width,width*((0.0+h)/w)); page.setViewportSize(size); } - - // create the target surface - QPixmap image = QPixmap(size); - image.fill(Qt::transparent); - - // render - QPainter p(&image); + + // create the page image + QImage pageImage = QImage(size, QImage::Format_ARGB32_Premultiplied); + pageImage.fill(Qt::transparent); + // render it + QPainter p(&pageImage); page.mainFrame()->render(&p); p.end(); - image = image.scaled(w, h, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation); + pageImage = pageImage.scaled(w, h, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation); + // background image + QSize fixedSize(w + 30, h + 26); + QImage backImage = QImage(fixedSize, QImage::Format_ARGB32_Premultiplied); + QString backImagePath = KStandardDirs::locate("appdata", "pics/bg.png"); + backImage.load( backImagePath ); + + // create target + QImage resultImage = QImage(fixedSize, QImage::Format_ARGB32_Premultiplied); + resultImage.fill(Qt::transparent); + + QPainter pt(&resultImage); + pt.setCompositionMode(QPainter::CompositionMode_Source); + pt.fillRect(resultImage.rect(), Qt::transparent); + pt.setCompositionMode(QPainter::CompositionMode_SourceOver); + pt.drawImage(0, 0, backImage); + pt.setCompositionMode(QPainter::CompositionMode_SourceOver); + pt.drawImage(15, 13, pageImage); + pt.setCompositionMode(QPainter::CompositionMode_DestinationOver); + pt.fillRect(resultImage.rect(), Qt::transparent); + pt.end(); + // restore page settings page.mainFrame()->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAsNeeded); page.mainFrame()->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAsNeeded); page.mainFrame()->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAsNeeded); page.mainFrame()->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAsNeeded); - return image; + return QPixmap::fromImage(resultImage); } diff --git a/src/websnap.h b/src/websnap.h index 53686677..6c5b4af9 100644 --- a/src/websnap.h +++ b/src/websnap.h @@ -34,6 +34,7 @@ // Qt Includes #include <QtCore/QObject> #include <QPixmap> +#include <QImage> #include <QWebPage> |