diff options
| -rw-r--r-- | src/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/homepage.cpp | 85 | ||||
| -rw-r--r-- | src/homepage.h | 3 | ||||
| -rw-r--r-- | src/rekonq.kcfg | 14 | ||||
| -rw-r--r-- | src/settings.cpp | 67 | ||||
| -rw-r--r-- | src/settings.h | 5 | ||||
| -rw-r--r-- | src/settings_newtabpage.ui | 164 | ||||
| -rw-r--r-- | src/websnap.cpp | 5 | ||||
| -rw-r--r-- | src/websnap.h | 2 | 
9 files changed, 310 insertions, 36 deletions
| diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index db3722fb..9b24e2ec 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -31,6 +31,7 @@ KDE4_ADD_UI_FILES( rekonq_SRCS      password.ui      proxy.ui      settings_general.ui +    settings_newtabpage.ui      settings_fonts.ui      settings_proxy.ui      settings_webkit.ui diff --git a/src/homepage.cpp b/src/homepage.cpp index a04b6e6d..1f759108 100644 --- a/src/homepage.cpp +++ b/src/homepage.cpp @@ -28,6 +28,9 @@  #include "homepage.h"  #include "homepage.moc" +// Auto Includes +#include "rekonq.h" +  // Local Includes  #include "historymodels.h"  #include "bookmarks.h" @@ -71,12 +74,12 @@ QString HomePage::rekonqHomePage()      QString speed = speedDial();      QString search = searchEngines(); -    QString closedtabs = recentlyClosedTabs(); +    QString lastBlock = ReKonfig::useRecentlyClosedTabs() ? recentlyClosedTabs() : fillRecentHistory();       QString html = QString(QLatin1String(file.readAll()))                          .arg(search) -                        .arg(closedtabs) +                        .arg(lastBlock)                          .arg(speed)                          ; @@ -86,28 +89,20 @@ QString HomePage::rekonqHomePage()  QString HomePage::speedDial()  { -    KUrl::List ul ; -    ul << KUrl("http://www.google.com") << KUrl("http://www.kde.org") << KUrl("http://sourceforge.net") -    << KUrl("http://www.slacky.eu") << KUrl("http://kde-apps.org") << KUrl("http://www.kernel.org")  -    << KUrl("http://it.wikipedia.org") << KUrl("http://www.adjam.org") << KUrl("http://wordpress.com"); +    QStringList names = ReKonfig::previewNames(); +    QStringList urls = ReKonfig::previewUrls();      QString speed = QString(); -    for(int i = 0; i< ul.count(); ++i) +    for(int i = 0; i< urls.count(); ++i)      { -        KUrl url = ul.at(i);          QString fileName = QString("thumb") + QString::number(i) + QString(".png");          QString path = KStandardDirs::locateLocal("cache", QString("thumbs/") + fileName, true); -        if( !QFile::exists(path) ) -        { -            kDebug() << "websnap"; -            WebSnap *ws = new WebSnap(url, fileName); -        }          speed += "<div class=\"thumbnail\">"; -        speed += "<a href=\"" + url.prettyUrl() + "\">"; -        speed += "<img src=\"" + path + "\" width=\"200\" alt=\"" + url.prettyUrl() + "\" />"; +        speed += "<a href=\"" + urls.at(i) + "\">"; +        speed += "<img src=\"" + path + "\" width=\"200\" alt=\"" + names.at(i) + "\" />";          speed += "<br />"; -        speed += url.prettyUrl() + "</a></div>"; +        speed += names.at(i) + "</a></div>";      }      return speed;  } @@ -117,20 +112,6 @@ QString HomePage::searchEngines()  {      QString engines = "<h2>Search Engines</h2>"; -//     KConfig config("kuriikwsfilterrc"); //Share with konqueror -//     KConfigGroup cg = config.group("General"); -//     QStringList favoriteEngines; -//     favoriteEngines << "google" << "wikipedia"; //defaults -//     favoriteEngines = cg.readEntry("FavoriteSearchEngines", favoriteEngines); -//  -//     foreach (const QString &engine, favoriteEngines) -//     { -//         if(!engine.isEmpty()) -//         { -//             engines += engine + ": <input type=\"text\" name=\"" + engine + "\" /><br />"; -//         } -//     } -      // Google search engine      engines += "<form method=\"get\" action=\"http://www.google.com/search\">";      engines += "<label for=\"q\">Google:</label>"; @@ -144,12 +125,52 @@ QString HomePage::searchEngines()  QString HomePage::recentlyClosedTabs()  {      QString closed = "<h2>Recently closed tabs</h2>"; - +    closed += "<ul>"; +          KUrl::List links = Application::instance()->mainWindow()->mainView()->recentlyClosedTabs();      foreach(const KUrl &url, links)      { -        closed += "<a href=\"" + url.prettyUrl() + "\">" + url.prettyUrl() + "</a><br />"; +        closed += "<li><a href=\"" + url.prettyUrl() + "\">" + url.prettyUrl() + "</a></li>";      } +     +    closed += "</ul>";      return closed;  } + + +QString HomePage::fillRecentHistory() +{ +    QString history = "<h2>Last 20 visited sites</h2>"; +    history += "<ul>"; +     +    HistoryTreeModel *model = Application::historyManager()->historyTreeModel(); +     +    int i = 0; +    do +    { +        QModelIndex index = model->index(i, 0, QModelIndex() ); +        if(model->hasChildren(index)) +        { +            for(int j=0; j< model->rowCount(index) && i<20 ; ++j) +            { +                QModelIndex son = model->index(j, 0, index ); + +                history += "<li>"; +                history += QString("<a href=\"") + son.data(HistoryModel::UrlStringRole).toString() + QString("\">"); +                history += son.data().toString(); +                history += QString("</a>"); +                history += "</li>"; +                 +                i++; +            } +        } +        i++; +    } +    while( i<20 || model->hasIndex( i , 0 , QModelIndex() ) ); + +    history += "<ul>"; +     +    return history; +     +}
\ No newline at end of file diff --git a/src/homepage.h b/src/homepage.h index c4ef7fc5..82117664 100644 --- a/src/homepage.h +++ b/src/homepage.h @@ -49,7 +49,8 @@ private:      QString speedDial();      QString searchEngines();      QString recentlyClosedTabs(); - +    QString fillRecentHistory(); +          QString m_homePagePath;  }; diff --git a/src/rekonq.kcfg b/src/rekonq.kcfg index 401ce58c..6b57a9fa 100644 --- a/src/rekonq.kcfg +++ b/src/rekonq.kcfg @@ -9,6 +9,20 @@  <kcfgfile name="rekonqrc" /> +<!-- New Tab Page Settings --> +  <group name="NewTabPage"> +    <entry name="previewNames" type="StringList"> +        <default>KDE site,Google,rekonq,SourceForge,kde-apps,kernel, wikipedia,wordpress,adjam site</default> +    </entry> +    <entry name="previewUrls" type="StringList"> +        <default>http://www.kde.org,http://www.google.com,http://rekonq.sourceforge.net,http://sourceforge.net,http://kde-apps.org,http://www.kernel.org,http://wikipedia.org,http://wordpress.com,http://www.adjam.org</default> +    </entry> +    <entry name="useRecentlyClosedTabs" type="Bool"> +        <default>false</default> +    </entry> +  </group> + +  <!-- General Settings -->    <group name="General">      <entry name="useNewTabPage" type="Bool"> diff --git a/src/settings.cpp b/src/settings.cpp index 843b3375..dd61e357 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -38,9 +38,11 @@  #include "mainwindow.h"  #include "networkaccessmanager.h"  #include "webview.h" +#include "websnap.h"  //Ui Includes  #include "ui_settings_general.h" +#include "ui_settings_newtabpage.h"  #include "ui_settings_fonts.h"  #include "ui_settings_proxy.h"  #include "ui_settings_webkit.h" @@ -62,6 +64,7 @@ class Private  {  private:      Ui::general generalUi; +    Ui::newtabpage newtabpageUi;      Ui::fonts fontsUi;      Ui::proxy proxyUi;      Ui::webkit webkitUi; @@ -86,6 +89,12 @@ Private::Private(SettingsDialog *parent)      pageItem->setIcon(KIcon("rekonq"));      widget = new QWidget; +    newtabpageUi.setupUi(widget); +    widget->layout()->setMargin(0); +    pageItem = parent->addPage(widget , i18n("New Tab Page")); +    pageItem->setIcon(KIcon("tab-new")); +     +    widget = new QWidget;      fontsUi.setupUi(widget);      widget->layout()->setMargin(0);      pageItem = parent->addPage(widget , i18n("Fonts")); @@ -130,6 +139,7 @@ Private::Private(SettingsDialog *parent)  SettingsDialog::SettingsDialog(QWidget *parent)          : KConfigDialog(parent, "rekonfig", ReKonfig::self())          , d(new Private(this)) +        , m_progress(0)  {      setFaceType(KPageDialog::List);      showButtonSeparator(true); @@ -146,7 +156,8 @@ SettingsDialog::SettingsDialog(QWidget *parent)      connect(this, SIGNAL(applyClicked()), this, SLOT(saveSettings()));      connect(this, SIGNAL(okClicked()), this, SLOT(saveSettings())); -     +    connect(this, SIGNAL(okClicked()), this, SLOT(updateSnaps())); +              setWebSettingsToolTips();  } @@ -177,6 +188,23 @@ void SettingsDialog::setWebSettingsToolTips()  // we need this function to UPDATE the config widget data..  void SettingsDialog::readConfig()  { +    // ====== New Tab Page +    QTableWidget *t = d->newtabpageUi.tableWidget; +    QStringList names, urls; +    names = ReKonfig::previewNames(); +    urls = ReKonfig::previewUrls(); +    for(int i=0; i<9; ++i) +    { +        QTableWidgetItem *name = new QTableWidgetItem( names.at(i) ); +        t->setItem(i,0,name); +        QTableWidgetItem *url = new QTableWidgetItem( urls.at(i) ); +        t->setItem(i,1,url); +    } + +    ReKonfig::setPreviewNames(names); +    ReKonfig::setPreviewUrls(urls); +     +          // ======= Fonts      d->fontsUi.kcfg_fixedFont->setOnlyFixed(true); @@ -190,6 +218,17 @@ void SettingsDialog::readConfig()  // we need this function to SAVE settings in rc file..  void SettingsDialog::saveSettings()  { +    QTableWidget *t = d->newtabpageUi.tableWidget; +    QStringList names, urls; +    for(int i=0; i<9; ++i) +    { +        names << t->item(i,0)->text(); +        urls << t->item(i,1)->text(); +    } + +    ReKonfig::setPreviewNames(names); +    ReKonfig::setPreviewUrls(urls); +          ReKonfig::self()->writeConfig();      d->ebrowsingModule->save();      d->cookiesModule->save(); @@ -214,3 +253,29 @@ void SettingsDialog::setHomeToCurrentPage()          d->generalUi.kcfg_homePage->setText(webView->url().prettyUrl());      }  } + + +void SettingsDialog::updateSnaps() +{ +    if(hasChanged()) +    { +        QStringList urls = ReKonfig::previewUrls(); +        for(int i=0; i<9; ++i) +        { +            QString fileName = QString("thumb") + QString::number(i) + QString(".png"); +            WebSnap *ws = new WebSnap(urls.at(i), fileName); +            connect(ws, SIGNAL(finished()), this, SLOT(polish())); +        } +        m_progress = new KProgressDialog(this, i18n("Loading..."), i18n("Retrieving site images...")); +        m_progress->progressBar()->setRange(0,8); +        m_progress->show(); +    } +} + + +void SettingsDialog::polish() +{ +    WebSnap *ws = qobject_cast<WebSnap*>(sender()); +    delete ws; +    m_progress->progressBar()->setValue( m_progress->progressBar()->value() + 1); +}
\ No newline at end of file diff --git a/src/settings.h b/src/settings.h index 0be89173..9278d758 100644 --- a/src/settings.h +++ b/src/settings.h @@ -31,6 +31,7 @@  // KDE Includes  #include <KConfigDialog> +#include <KProgressDialog>  // Forward Declarations  class QWidget; @@ -50,11 +51,15 @@ private:      Private* const d;      void setWebSettingsToolTips(); +    KProgressDialog *m_progress;  private slots:      void readConfig();      void saveSettings();      void setHomeToCurrentPage(); + +    void updateSnaps(); +    void polish();  };  #endif // SETTINGS_H diff --git a/src/settings_newtabpage.ui b/src/settings_newtabpage.ui new file mode 100644 index 00000000..006185c0 --- /dev/null +++ b/src/settings_newtabpage.ui @@ -0,0 +1,164 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>newtabpage</class> + <widget class="QWidget" name="newtabpage"> +  <property name="geometry"> +   <rect> +    <x>0</x> +    <y>0</y> +    <width>377</width> +    <height>444</height> +   </rect> +  </property> +  <property name="windowTitle"> +   <string>Form</string> +  </property> +  <layout class="QVBoxLayout" name="verticalLayout_2"> +   <item> +    <widget class="QGroupBox" name="groupBox"> +     <property name="title"> +      <string>Previews</string> +     </property> +     <layout class="QHBoxLayout" name="horizontalLayout"> +      <item> +       <widget class="QTableWidget" name="tableWidget"> +        <property name="rowCount"> +         <number>9</number> +        </property> +        <property name="columnCount"> +         <number>2</number> +        </property> +        <row/> +        <row/> +        <row/> +        <row/> +        <row/> +        <row/> +        <row/> +        <row/> +        <row/> +        <column/> +        <column/> +        <item row="0" column="0"> +         <property name="text"> +          <string>KDE site</string> +         </property> +        </item> +        <item row="0" column="1"> +         <property name="text"> +          <string>http://www.kde.org</string> +         </property> +        </item> +        <item row="1" column="0"> +         <property name="text"> +          <string>KDE apps</string> +         </property> +        </item> +        <item row="1" column="1"> +         <property name="text"> +          <string>http://kde-apps.org</string> +         </property> +        </item> +        <item row="2" column="0"> +         <property name="text"> +          <string>rekonq site</string> +         </property> +        </item> +        <item row="2" column="1"> +         <property name="text"> +          <string>http://rekonq.sourceforge.net</string> +         </property> +        </item> +        <item row="3" column="0"> +         <property name="text"> +          <string>Google</string> +         </property> +        </item> +        <item row="3" column="1"> +         <property name="text"> +          <string>http://www.google.com</string> +         </property> +        </item> +        <item row="4" column="0"> +         <property name="text"> +          <string>Wikipedia</string> +         </property> +        </item> +        <item row="4" column="1"> +         <property name="text"> +          <string>http://wikipedia.org</string> +         </property> +        </item> +        <item row="5" column="0"> +         <property name="text"> +          <string>SourceForge</string> +         </property> +        </item> +        <item row="5" column="1"> +         <property name="text"> +          <string>http://sourceforge.net</string> +         </property> +        </item> +        <item row="6" column="0"> +         <property name="text"> +          <string>Kernel</string> +         </property> +        </item> +        <item row="6" column="1"> +         <property name="text"> +          <string>http://www.kernel.org</string> +         </property> +        </item> +        <item row="7" column="0"> +         <property name="text"> +          <string>Wordpress</string> +         </property> +        </item> +        <item row="7" column="1"> +         <property name="text"> +          <string>http://wordpress.com</string> +         </property> +        </item> +        <item row="8" column="0"> +         <property name="text"> +          <string>Planet KDE</string> +         </property> +        </item> +        <item row="8" column="1"> +         <property name="text"> +          <string>http://planetkde.org</string> +         </property> +        </item> +       </widget> +      </item> +     </layout> +    </widget> +   </item> +   <item> +    <widget class="QGroupBox" name="groupBox_2"> +     <property name="title"> +      <string>blocks</string> +     </property> +     <layout class="QVBoxLayout" name="verticalLayout"> +      <item> +       <widget class="QRadioButton" name="kcfg_useRecentlyClosedTabs"> +        <property name="text"> +         <string>show last 20 visited sites</string> +        </property> +       </widget> +      </item> +      <item> +       <widget class="QRadioButton" name="radioButton_2"> +        <property name="text"> +         <string>show recently closed tabs</string> +        </property> +       </widget> +      </item> +     </layout> +    </widget> +   </item> +  </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/src/websnap.cpp b/src/websnap.cpp index 8bacd3b2..05ea17a9 100644 --- a/src/websnap.cpp +++ b/src/websnap.cpp @@ -33,6 +33,7 @@  #include <QSize>  #include <QWebFrame> +#include <QWebSettings>  #include <QPainter>  #include <QTimer> @@ -43,10 +44,12 @@ WebSnap::WebSnap(const KUrl &url, const QString &fileName)      , m_image(QImage())      , m_fileName(fileName)  { +    // this to not register websnap history +    m_page.settings()->setAttribute(QWebSettings::PrivateBrowsingEnabled, true); +          m_targetSize = QSize(200, 150);      connect(&m_page, SIGNAL(loadFinished(bool)), this, SLOT(saveResult(bool)));      QTimer::singleShot(0, this, SLOT(load())); -  } diff --git a/src/websnap.h b/src/websnap.h index cbb786c7..8993fd08 100644 --- a/src/websnap.h +++ b/src/websnap.h @@ -46,7 +46,7 @@ class WebSnap : public QObject  public:      WebSnap(const KUrl &url, const QString &fileName); - +      signals:      void finished(); | 
