diff options
| author | matgic78 <matgic78@gmail.com> | 2009-12-18 15:58:48 +0100 | 
|---|---|---|
| committer | matgic78 <matgic78@gmail.com> | 2010-02-06 11:22:46 +0100 | 
| commit | f1f7e2011c3f245cd1987b0f09b72c2f7dea283f (patch) | |
| tree | 6cad61cbf826363713d54d06681ae91b0009bfa4 /src | |
| parent | Re-implemented previews in homepage without using plugins. Not finished yet : (diff) | |
| download | rekonq-f1f7e2011c3f245cd1987b0f09b72c2f7dea283f.tar.xz | |
Various changes:
- improve appearance of empty/loading previews
- port closedTabs to new system
- remove PreviewImage files
TODO : dialog to choose preview
Diffstat (limited to 'src')
| -rw-r--r-- | src/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/data/home.html | 22 | ||||
| -rw-r--r-- | src/previewimage.cpp | 430 | ||||
| -rw-r--r-- | src/previewimage.h | 101 | ||||
| -rw-r--r-- | src/rekonqpage/newtabpage.cpp | 84 | ||||
| -rw-r--r-- | src/rekonqpage/newtabpage.h | 9 | ||||
| -rw-r--r-- | src/webpluginfactory.cpp | 28 | 
7 files changed, 79 insertions, 596 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b0a3fbd8..2295e9e0 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -11,7 +11,6 @@ SET( rekonq_KDEINIT_SRCS      findbar.cpp      mainview.cpp      mainwindow.cpp  -    previewimage.cpp      sessionmanager.cpp      tabbar.cpp      webpage.cpp diff --git a/src/data/home.html b/src/data/home.html index 8db3d894..103c559d 100644 --- a/src/data/home.html +++ b/src/data/home.html @@ -127,10 +127,12 @@ width:25%; margin-top: 7%;  min-width:250px; min-height:192px;  } +.preview img { +}  .preview { -display: block; -width: 200px; -height: 150px; +display: table-cell; +vertical-align: middle; +width: 200px; height: 150px;  padding: 14px 16px;  background: url(%2/bg.png) no-repeat;  -webkit-background-size: 100% 100%;  @@ -154,10 +156,10 @@ opacity: 0;  }  .remove { -    float: right; +float: right;  }  .modify { -    float: left; +float: left;  }  .title { @@ -171,14 +173,10 @@ text-align: center;  .thumbnail a {  text-align:center;  } -.thumbnail a:hover { +.thumbnail a:hover, span {  color:#3F7AB7;  } -.thumbnail span { - -} -  /* -------------------------------------------------------- */  /* Bookmarks page*/ @@ -210,7 +208,9 @@ margin-bottom: 0.5em;      </div>      <div class="thumbnail">          <a> -            <img class="preview"></img> +            <div class ="preview"> +                <img /> +            </div>              <div class="title">                  <a class="button modify"><img /></a>                  <span><a></a></span> diff --git a/src/previewimage.cpp b/src/previewimage.cpp deleted file mode 100644 index 9c8bb194..00000000 --- a/src/previewimage.cpp +++ /dev/null @@ -1,430 +0,0 @@ -/* ============================================================ -* -* This file is a part of the rekonq project -* -* Copyright (C) 2009 by Andrea Diamantini <adjam7 at gmail dot com> -* -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License as -* published by the Free Software Foundation; either version 2 of -* the License or (at your option) version 3 or any later version -* accepted by the membership of KDE e.V. (or its successor approved -* by the membership of KDE e.V.), which shall act as a proxy  -* defined in Section 14 of version 3 of the license. -*  -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program.  If not, see <http://www.gnu.org/licenses/>. -* -* ============================================================ */ - - -// Self Includes -#include "previewimage.h" -#include "previewimage.moc" - -// Local Includes -#include "historymanager.h" -#include "rekonq.h" -#include "mainwindow.h" -#include "mainview.h" - -// KDE Includes -#include <KUrl> -#include <KStandardDirs> -#include <KDebug> -#include <KMenu> -#include <KAction> -#include <KLocale> - -// Qt Includes -#include <QFile> -#include <QMovie> -#include <QMouseEvent> -#include <QHBoxLayout> -#include <QVBoxLayout> -#include <QPainter> - - -PreviewImage::PreviewImage(const QUrl &url, const QString &title, int index, bool isFavorite) -    : QWidget() -    , ws(0) -    , loadingSnapshot(false) -    , m_url(url) -    , m_title(title) -    , m_isFavorite(isFavorite) -    , m_index(index) -    , m_button(0) -    , m_imageLabel(new QLabel) -    , m_textLabel(new QLabel) -    , m_backgroundLabel(new QLabel) -    , m_previewLabel(new QLabel) -{ - -    int borderTop = 14; -    int borderRight = 16; -    int borderBottom = 14; -    int borderLeft = 16; - -    int previewWidth = 200; -    int previewHeight = 150; - -    int urlHeight = 18; - -    m_size = QSize(borderLeft+previewWidth+borderRight, borderTop+previewHeight+borderBottom+urlHeight); - -    setFixedSize(m_size); -    m_previewLabel->setFixedSize(m_size); - -    m_backgroundLabel->setPixmap(renderBackground(previewWidth,previewHeight, borderTop, borderBottom, borderLeft, borderRight)); - -    m_previewLabel->setAlignment(Qt::AlignCenter); -    m_backgroundLabel->setAlignment(Qt::AlignCenter); -    m_imageLabel->setAlignment(Qt::AlignCenter); -    m_textLabel->setAlignment(Qt::AlignCenter); - -    m_previewLabel->setLayout(new QVBoxLayout); -    m_previewLabel->layout()->setMargin(0); -    m_previewLabel->layout()->addWidget(m_backgroundLabel); -    m_previewLabel->layout()->addWidget(m_textLabel); -    m_previewLabel->setCursor(Qt::PointingHandCursor); - -    m_backgroundLabel->setLayout(new QVBoxLayout); -    m_backgroundLabel->layout()->addWidget(m_imageLabel); - -    setLayout(new QHBoxLayout); -    layout()->setMargin(0); -    layout()->setAlignment(Qt::AlignCenter); -    layout()->addWidget(m_previewLabel); - -    connect(this, SIGNAL(loadUrl(const KUrl &, const Rekonq::OpenType &)),  -            Application::instance(), SLOT(loadUrl(const KUrl &, const Rekonq::OpenType &))); -     -    loadUrlPreview(url); -} - - -PreviewImage::~PreviewImage() -{ -    delete ws; -    delete m_textLabel; -    delete m_imageLabel; -    delete m_backgroundLabel; -    delete m_previewLabel; -} - - -QPixmap PreviewImage::renderBackground(int w, int h, int t, int b, int l, int r) -{ -    QImage backImage(KStandardDirs::locate("appdata", "pics/bg.png")); -    QImage resultImage(QSize(w + l + r, h + t + b), QImage::Format_ARGB32_Premultiplied); - -    if (!backImage.isNull()) -    { -        int sw = backImage.width() - l - r; -        int sh = backImage.height() - t - b; -        QPainter pt(&resultImage); -        pt.setCompositionMode(QPainter::CompositionMode_Source); -        pt.fillRect(resultImage.rect(), Qt::transparent); -        pt.drawImage(QRect(0, 0, l, t), backImage, QRect(0, 0, l, t)); -        pt.drawImage(QRect(l, 0, w, t), backImage, QRect(l, 0, sw, t)); -        pt.drawImage(QRect(l + w, 0, r, t), backImage, QRect(l + sw, 0, r, t)); -        pt.drawImage(QRect(0, t, l, h), backImage, QRect(0, t, l, sh)); -        pt.drawImage(QRect(l, t, w, h), backImage, QRect(l, t, sw, sh)); -        pt.drawImage(QRect(l + w, t, r, h), backImage, QRect(l + sw, t, r, sh)); -        pt.drawImage(QRect(0, t + h, l , b), backImage, QRect(0, t + sh, l , b)); -        pt.drawImage(QRect(l, t + h, w, b), backImage, QRect(l, t + sh, sw, b)); -        pt.drawImage(QRect(l + w, t + h, w, b), backImage, QRect(l + sw, t + sh, sw, b)); -        pt.end(); -    } - -    return QPixmap::fromImage(resultImage); -} - - -void PreviewImage::loadUrlPreview(const QUrl& url) -{ -    m_url = url; - -    if(url.isEmpty()) -    { -        showEmptyPreview(); -        return; -    } - -    m_previewLabel->setFixedSize(m_size); //unhide - -    m_savePath = KStandardDirs::locateLocal("cache", QString("thumbs/") + guessNameFromUrl(m_url) + ".png", true); - -    if(QFile::exists(m_savePath)) -    { -        m_pixmap.load(m_savePath); -        m_imageLabel->setPixmap(m_pixmap); -        checkTitle(); -        m_textLabel->setText(m_title); -    } -    else -    { -        loadingSnapshot = true; -        ws = new WebSnap( url ); -        connect(ws, SIGNAL(finished()), this, SLOT(snapFinished())); - -        QString path = KStandardDirs::locate("appdata", "pics/busywidget.gif"); - -        // load an animation waiting for site preview -        QMovie *movie = new QMovie(path, QByteArray(), this); -        movie->setSpeed(50); -        m_imageLabel->setMovie(movie); -        movie->start(); -        m_textLabel->setText( i18n("Loading preview...") ); -        setCursor(Qt::BusyCursor); -    } -} - - -void PreviewImage::snapFinished() -{ -    loadingSnapshot = false; -    QMovie *m = m_imageLabel->movie(); -    delete m; -    m_imageLabel->setMovie(0); - -    m_pixmap = ws->previewImage(); -    m_imageLabel->setPixmap(m_pixmap); -    checkTitle(); -    m_textLabel->setText(m_title); - -    setCursor(Qt::PointingHandCursor); - -    m_pixmap.save(m_savePath); - -    if(m_index > -1) -    { -        // Update title -        QStringList names = ReKonfig::previewNames(); -        // update url (for added thumbs) -        QStringList urls = ReKonfig::previewUrls(); - -        // stripTrailingSlash to be sure to get the same string for same address -        urls.replace(m_index, ws->snapUrl().toString(QUrl::StripTrailingSlash)); -        names.replace(m_index, ws->snapTitle()); - -        ReKonfig::setPreviewNames(names); -        ReKonfig::setPreviewUrls(urls); - -        ReKonfig::self()->writeConfig(); -    } -} - - -void PreviewImage::showEmptyPreview() -{ -    if(!m_isFavorite) -        return; - -    m_imageLabel->clear(); -    m_textLabel->clear(); - -    m_previewLabel->setFixedSize(0,0); //hide - - -    m_button = new QToolButton(); -    m_button->setDefaultAction(historyMenu()); -    m_button->setPopupMode(QToolButton::InstantPopup); -    m_button->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); -    m_button->setText(i18n("Add Preview")); -    m_button->setAutoRaise(true); -    m_button->setIconSize(QSize(48, 48)); -    layout()->addWidget(m_button); -} - - -void PreviewImage::mouseDoubleClickEvent(QMouseEvent *event) -{ -    kDebug() << "no double click over here, thanks :D"; -    Q_UNUSED(event); -} - - -void PreviewImage::mouseMoveEvent(QMouseEvent *event) -{ -    kDebug() << "moving mouse over preview image"; -    Q_UNUSED(event) -} - - -void PreviewImage::mousePressEvent(QMouseEvent *event) -{ -    if(event->button() == Qt::LeftButton) -    { -        emit loadUrl(m_url, Rekonq::CurrentTab); -        return; -    } -    else if(event->button() == Qt::MidButton) -    { -        emit loadUrl(m_url, Rekonq::SettingOpenTab); -        return; -    } - -    QWidget::mousePressEvent(event); -} - - -void PreviewImage::mouseReleaseEvent(QMouseEvent *event) -{ -    kDebug() << "NO000... don't leave your finger from the button!!"; -    Q_UNUSED(event) -} - - -void PreviewImage::contextMenuEvent(QContextMenuEvent* event) -{ -    if(!m_isFavorite) -        return; - -    if(loadingSnapshot) -       return; - -    KMenu menu(this); -    KAction *a; - -    if(!m_url.isEmpty()) -    { -        a = new KAction(KIcon("edit-delete"), i18n("Remove Thumbnail"), this); -        connect(a, SIGNAL(triggered(bool)), this, SLOT(removeMe())); -        menu.addAction(a); - -        a = new KAction(KIcon("view-refresh"), i18n("Refresh Thumbnail"), &menu); -        connect(a, SIGNAL(triggered(bool)), this, SLOT(refreshPreview())); -        menu.addAction(a); -    } -    menu.addAction(historyMenu()); - -    menu.exec(mapToGlobal(event->pos())); -} - - -KActionMenu* PreviewImage::historyMenu() -{ -    KActionMenu *histMenu = new KActionMenu(KIcon("insert-image"), i18n("Set Page to Preview"), this); -    QList<HistoryItem> history =  Application::historyManager()->history(); - -    if(history.isEmpty()) -    { -        KAction *a = new KAction(i18n("History is Empty"), this); -        a->setEnabled(false); -        histMenu->addAction(a); -        return histMenu; -    } - -    int maxItems = 15; -    for (int i = 0; i < maxItems && i < history.size() ; ++i)  -    { -        HistoryItem it = history.at(i); -        KAction *a = new KAction(Application::icon(it.url), it.title, this); -        QStringList urlData; -        urlData << it.url << it.title; -        a->setData(urlData); -        connect(a, SIGNAL(triggered(bool)), this, SLOT(setUrlFromAction())); -        histMenu->addAction(a); -    } - -    return histMenu; -} - - -void PreviewImage::removeMe() -{ -    QStringList names = ReKonfig::previewNames(); -    QStringList urls = ReKonfig::previewUrls(); - -    int index = urls.indexOf(QRegExp(m_url.toString(QUrl::StripTrailingSlash), Qt::CaseSensitive, QRegExp::FixedString)); - -    urls.replace(index, QString("")); -    names.replace(index, QString("")); - -    ReKonfig::setPreviewNames(names); -    ReKonfig::setPreviewUrls(urls); - -    // sync file data -    ReKonfig::self()->writeConfig(); - -    showEmptyPreview(); - -    m_url = ""; -} - - -void PreviewImage::setUrlFromAction() -{ -    KAction *a = qobject_cast<KAction*>(sender()); -    QStringList urlData = a->data().toStringList(); - -    m_url = KUrl(urlData.at(0)); -    m_title = urlData.at(1); -    checkTitle(); - -    if(m_button) -    { -        m_imageLabel->layout()->deleteLater(); -        m_button->menu()->deleteLater(); -        m_button->deleteLater(); -    } -    loadUrlPreview(m_url); - -    // Update title -    QStringList names = ReKonfig::previewNames(); -    // update url (for added thumbs) -    QStringList urls = ReKonfig::previewUrls(); - -    // stripTrailingSlash to be sure to get the same string for same address -    urls.replace(m_index, m_url.toString(QUrl::StripTrailingSlash)); -    names.replace(m_index, m_title); - -    ReKonfig::setPreviewNames(names); -    ReKonfig::setPreviewUrls(urls); - -    ReKonfig::self()->writeConfig(); -} - - -void PreviewImage::refreshPreview() -{ -    QString path = KStandardDirs::locateLocal("cache", QString("thumbs/") + guessNameFromUrl(m_url) + ".png", true); -    QFile::remove(path); -    loadUrlPreview(m_url); -} - - -QString PreviewImage::guessNameFromUrl(QUrl url) -{ -    QString name = url.toString( QUrl::RemoveScheme | QUrl::RemoveUserInfo | QUrl::StripTrailingSlash ); - -    // TODO learn Regular Expressions :) -    // and implement something better here.. -    name.remove('/'); -    name.remove('&'); -    name.remove('.'); -    name.remove('-'); -    name.remove('_'); -    name.remove('?'); -    name.remove('='); -    name.remove('+'); - -    return name; -} - - -void PreviewImage::checkTitle() -{ -    if(m_title.length() > 23) -    { -        m_title.truncate(20); -        m_title += "..."; -    } -} diff --git a/src/previewimage.h b/src/previewimage.h deleted file mode 100644 index 4dd8df3b..00000000 --- a/src/previewimage.h +++ /dev/null @@ -1,101 +0,0 @@ -/* ============================================================ -* -* This file is a part of the rekonq project -* -* Copyright (C) 2009 by Andrea Diamantini <adjam7 at gmail dot com> -* -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License as -* published by the Free Software Foundation; either version 2 of -* the License or (at your option) version 3 or any later version -* accepted by the membership of KDE e.V. (or its successor approved -* by the membership of KDE e.V.), which shall act as a proxy  -* defined in Section 14 of version 3 of the license. -*  -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program.  If not, see <http://www.gnu.org/licenses/>. -* -* ============================================================ */ - - -#ifndef PREVIEW_IMAGE_H -#define PREVIEW_IMAGE_H - -// Local Includes -#include "websnap.h" -#include "application.h" - -// KDE Includes -#include <KActionMenu> - -// Qt Includes -#include <QLabel> -#include <QFrame> -#include <QImage> -#include <QUrl> -#include <QToolButton> -#include <QSize> - - -class PreviewImage : public QWidget -{ -    Q_OBJECT - -public: -    PreviewImage(const QUrl &url, const QString &title, int index, bool isFavorite); -    ~PreviewImage(); - -    QString guessNameFromUrl(QUrl url); - -public slots: -    void snapFinished(); -    void removeMe(); -    void setUrlFromAction(); -    void refreshPreview(); - -signals: -    void loadUrl(const KUrl &, const Rekonq::OpenType &); -     -protected: -    void contextMenuEvent(QContextMenuEvent *event); -    void mouseDoubleClickEvent(QMouseEvent *event); -    void mouseMoveEvent(QMouseEvent *event); -    void mousePressEvent(QMouseEvent *event); -    void mouseReleaseEvent(QMouseEvent *event); - -    void loadUrlPreview(const QUrl &url); -    KActionMenu *historyMenu(); -    void showEmptyPreview(); - -private: -    void checkTitle(); -    QPixmap renderBackground(int w, int h, int t, int b, int l, int r); - -    QPixmap m_pixmap; -    WebSnap *ws; - -    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; -    QLabel *m_backgroundLabel; -    QLabel *m_previewLabel; -     -    QSize m_size; -}; - -#endif // PREVIEW_IMAGE_H diff --git a/src/rekonqpage/newtabpage.cpp b/src/rekonqpage/newtabpage.cpp index 4299c8bb..a587502c 100644 --- a/src/rekonqpage/newtabpage.cpp +++ b/src/rekonqpage/newtabpage.cpp @@ -80,6 +80,10 @@ void NewTabPage::generate(const KUrl &url)              removePreview(url.fileName().toInt());              return;          } +        if(url.directory() == QString("preview/modify")) +        { +            return; +        }      } @@ -125,28 +129,31 @@ void NewTabPage::favoritesPage()      for(int i=0; i<8; ++i)      { -        QWebElement speed; +        KUrl url = urls.at(i); +        QWebElement prev; -        if(urls.at(i).isEmpty()) -            speed = emptyPreview(); -        else if(!QFile::exists(WebSnap::fileForUrl(urls.at(i)).toLocalFile())) -            speed = loadingPreview(i, urls.at(i)); +        if(url.isEmpty()) +            prev = emptyPreview(i); +        else if(!QFile::exists(WebSnap::fileForUrl(url).toLocalFile())) +            prev = loadingPreview(i, url);          else -            speed = validPreview(i, urls.at(i), names.at(i)); +            prev = validPreview(i, url, names.at(i)); -        speed.setAttribute("id", "preview" + QVariant(i).toString()); -        m_root.appendInside(speed); +        prev.setAttribute("id", "preview" + QVariant(i).toString()); +        m_root.appendInside(prev);      }  } -QWebElement NewTabPage::emptyPreview() +QWebElement NewTabPage::emptyPreview(int index)  {      QWebElement prev = markup(".thumbnail"); -    prev.findFirst("img").setAttribute("src" , QString("file:///") + +    prev.findFirst(".preview img").setAttribute("src" , QString("file:///") +                      KIconLoader::global()->iconPath("insert-image", KIconLoader::Desktop));      prev.findFirst("span").appendInside(i18n("Set a Preview...")); +    prev.findFirst("a").setAttribute("href", QString("about:/preview/modify/" + QVariant(index).toString())); +    hideControls(prev);      return prev;  } @@ -156,9 +163,11 @@ QWebElement NewTabPage::loadingPreview(int index, KUrl url)  {      QWebElement prev = markup(".thumbnail"); -    prev.findFirst("img").setAttribute("src" ,  -    QString("file:///") + KStandardDirs::locate("appdata", "pics/busywidget.gif")); +    prev.findFirst(".preview img").setAttribute("src" ,  +                QString("file:///") + KStandardDirs::locate("appdata", "pics/busywidget.gif"));      prev.findFirst("span").appendInside(i18n("Loading Preview...")); +    showControls(prev); +          WebSnap *snap = new WebSnap(url);      snap->SetData(QVariant(index));      connect(snap, SIGNAL(finished()), SLOT(snapFinished())); @@ -172,29 +181,43 @@ QWebElement NewTabPage::validPreview(int index, KUrl url, QString title)      KUrl previewPath = WebSnap::fileForUrl(url);      QString iString = QVariant(index).toString(); -    prev.findFirst(".preview").setAttribute("src" , previewPath.toMimeDataString()); +    prev.findFirst(".preview img").setAttribute("src" , previewPath.toMimeDataString());      prev.findFirst("a").setAttribute("href", url.toMimeDataString()); -    prev.findFirst("span > a").setAttribute("href", url.toMimeDataString()); +    prev.findFirst("span a").setAttribute("href", url.toMimeDataString());      prev.findFirst("span").appendInside(checkTitle(title));      prev.findFirst(".modify img").setAttribute("src", QString("file:///") + -    KIconLoader::global()->iconPath("insert-image", KIconLoader::DefaultState)); +                KIconLoader::global()->iconPath("insert-image", KIconLoader::DefaultState));      prev.findFirst(".modify").setAttribute("href", QString("about:preview/modify/" + iString ));      prev.findFirst(".remove img").setAttribute("src", QString("file:///") + -    KIconLoader::global()->iconPath("edit-delete", KIconLoader::DefaultState)); +                KIconLoader::global()->iconPath("edit-delete", KIconLoader::DefaultState));      prev.findFirst(".remove").setAttribute("href", QString("about:preview/remove/" + iString )); +    showControls(prev); +     +          return prev;  } +void NewTabPage::hideControls(QWebElement e) +{ +    e.findFirst(".remove").setStyleProperty("visibility", "hidden"); +    e.findFirst(".modify").setStyleProperty("visibility", "hidden"); +} +void NewTabPage::showControls(QWebElement e) +{ +    e.findFirst(".remove").setStyleProperty("visibility", "visible"); +    e.findFirst(".modify").setStyleProperty("visibility", "visible"); +} + +  void NewTabPage::snapFinished()  {      WebSnap *snap = qobject_cast<WebSnap*>(sender()); -    QWebElement thumb = m_root.findFirst("#preview" + snap->data().toString()); -    thumb.findFirst("img").setAttribute("src", WebSnap::fileForUrl(snap->snapUrl()).toMimeDataString()); -    thumb.findFirst("p").setPlainText(snap->snapTitle()); +    QWebElement prev = m_root.findFirst("#preview" + snap->data().toString()); +    prev.replace(validPreview(snap->data().toInt(), snap->snapUrl(), snap->snapTitle()));      // Save the new config      QStringList names = ReKonfig::previewNames(); @@ -228,7 +251,7 @@ void NewTabPage::removePreview(int index)      // sync file data      ReKonfig::self()->writeConfig(); -    prev.replace(emptyPreview()); +    prev.replace(emptyPreview(index));  } @@ -357,13 +380,22 @@ void NewTabPage::createBookItem(const KBookmark &bookmark, QWebElement parent)  void NewTabPage::closedTabsPage()  {      QList<HistoryItem> links = Application::instance()->mainWindow()->mainView()->recentlyClosedTabs(); - -    foreach(const HistoryItem &item, links) +     +    for(int i=0; i < links.count(); ++i)      { -        QWebElement closed = markup(".thumbnail"); -        closed.findFirst("object").setAttribute("data" , item.url); -        closed.findFirst("param[name=title]").setAttribute("value", item.title); -        m_root.appendInside(closed); +        HistoryItem item = links.at(i); +        QWebElement prev; +         +        if(item.url.isEmpty()) +            continue; +        else if(!QFile::exists(WebSnap::fileForUrl(item.url).toLocalFile())) +            prev = loadingPreview(i, item.url); +        else +            prev = validPreview(i, item.url, item.title); +         +        prev.setAttribute("id", "preview" + QVariant(i).toString()); +        hideControls(prev); +        m_root.appendInside(prev);      }  } diff --git a/src/rekonqpage/newtabpage.h b/src/rekonqpage/newtabpage.h index 84880a10..9ac743ea 100644 --- a/src/rekonqpage/newtabpage.h +++ b/src/rekonqpage/newtabpage.h @@ -63,10 +63,17 @@ protected:  // these are the function to build the new tab page      void browsingMenu(const KUrl ¤tUrl);      void favoritesPage(); -    QWebElement emptyPreview(); +    QWebElement emptyPreview(int index);      QWebElement loadingPreview(int index, KUrl url);      QWebElement validPreview(int index, KUrl url, QString title); +    /** This function takes a QwebElement with the .thumbnail structure. +        It hides the "remove" and "modify" buttons-> +    */ +    void hideControls(QWebElement e); +    void showControls(QWebElement e); +     +          void historyPage();      void bookmarksPage();      void closedTabsPage(); diff --git a/src/webpluginfactory.cpp b/src/webpluginfactory.cpp index aec4e18d..ac18fece 100644 --- a/src/webpluginfactory.cpp +++ b/src/webpluginfactory.cpp @@ -32,7 +32,6 @@  #include "rekonq.h"  #include "application.h"  #include "mainwindow.h" -#include "previewimage.h"  #include "clicktoflash.h"  // KDE Includes @@ -65,27 +64,7 @@ QObject *WebPluginFactory::create(const QString &mimeType,                                    const QStringList &argumentValues) const  {      kDebug() << "loading mimeType: " << 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; -        i = argumentNames.indexOf( QString("index") ); -        if(i > -1) -            number = argumentValues.at(i).toInt(); -     -        return new PreviewImage(url, title, number, isFavorite); -    } -     +              if(ReKonfig::pluginsEnabled() == 0) // plugins are enabled      {          kDebug() << "No plugins found for" << mimeType << ". Falling back to QtWebKit ones..."; @@ -112,10 +91,7 @@ QList<QWebPluginFactory::Plugin> WebPluginFactory::plugins() const  {      QList<KWebPluginFactory::Plugin> plugins = KWebPluginFactory::plugins(); -    QWebPluginFactory::Plugin p; -    p.name = "application/image-preview"; -    p.description = "plugin for embedding Web snapped images"; -    plugins.append(p); +    KWebPluginFactory::Plugin p;      p.name = "application/x-shockwave-flash";      p.description = "Plugin for flash animations";  | 
