From 9fff1383205279a747c09bf07af84cfa37dd3403 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Wed, 11 Nov 2009 15:32:59 +0100 Subject: cleaning home :) In Italy we say "Pulizie di Pasqua". Just some changes to reorganize things better --- src/rekonqpage/newtabpage.cpp | 285 ++++++++++++++++++++++++++++++++++++++++++ src/rekonqpage/newtabpage.h | 72 +++++++++++ 2 files changed, 357 insertions(+) create mode 100644 src/rekonqpage/newtabpage.cpp create mode 100644 src/rekonqpage/newtabpage.h (limited to 'src/rekonqpage') diff --git a/src/rekonqpage/newtabpage.cpp b/src/rekonqpage/newtabpage.cpp new file mode 100644 index 00000000..b34990fc --- /dev/null +++ b/src/rekonqpage/newtabpage.cpp @@ -0,0 +1,285 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2009 by Andrea Diamantini +* +* +* 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 . +* +* ============================================================ */ + + +// Self Includes +#include "newtabpage.h" + +// Auto Includes +#include "rekonq.h" + +// Local Includes +#include "historymodels.h" +#include "bookmarks.h" +#include "application.h" +#include "mainwindow.h" +#include "mainview.h" + +// KDE Includes +#include +#include +#include +#include +#include + +// Qt Includes +#include + + +NewTabPage::NewTabPage() +{ + m_htmlFilePath = KStandardDirs::locate("data", "rekonq/htmls/home.html"); +} + + +NewTabPage::~NewTabPage() +{ +} + + +QString NewTabPage::newTabPageCode(const KUrl &url) +{ + QFile file(m_htmlFilePath); + bool isOpened = file.open(QIODevice::ReadOnly); + if (!isOpened) + { + kWarning() << "Couldn't open the home.html file"; + return QString(""); + } + QString imagesPath = QString("file://") + KGlobal::dirs()->findResourceDir("data", "rekonq/pics/bg.png") + QString("rekonq/pics"); + QString menu = browsingMenu(url); + + QString speed; + QString title; + if(url == KUrl("about:closedTabs")) + { + speed = closedTabsPage(); + title = i18n("Closed Tabs"); + } + if(url == KUrl("about:history")) + { + speed = historyPage(); + title = i18n("History"); + } + if(url == KUrl("about:bookmarks")) + { + speed = bookmarksPage(); + title = i18n("Bookmarks"); + } + if(url == KUrl("about:home") || url == KUrl("about:favorites")) + { + speed = favoritesPage(); + title = i18n("Favorites"); + } + + QString html = QString(QLatin1String(file.readAll())) + .arg(title) + .arg(imagesPath) + .arg(menu) + .arg(speed) + ; + + return html; +} + + +QString NewTabPage::favoritesPage() +{ + QStringList names = ReKonfig::previewNames(); + QStringList urls = ReKonfig::previewUrls(); + + QString speed = "
"; + for(int i=0; i<8; ++i) + { + speed += "
"; + speed += ""; + speed += ""; + speed += ""; + speed += ""; + speed += ""; + speed += "
"; + } + + speed += "
"; + return speed; +} + + +// FIXME : port to new PreviewImage API to use... +QString NewTabPage::lastVisitedPage() +{ + QString last; + QList history = Application::historyManager()->history(); + for (int i = 0; i < 8 && i < history.size(); ++i) + { + HistoryItem it = history.at(i); + last += "
"; + last += ""; + last += ""; + last += "
"; + last += "" + it.title + "
"; + } + + return last; + +} + + +QString NewTabPage::browsingMenu(const KUrl ¤tUrl) +{ + QString menu; + + KIconLoader *loader = KIconLoader::global(); + + menu += ""; + + menu += ""; + + menu += ""; + + menu += ""; + + return menu; +} + + +QString NewTabPage::historyPage() +{ + HistoryTreeModel *model = Application::historyManager()->historyTreeModel(); + + QString history; + int i = 0; + do + { + QModelIndex index = model->index(i, 0, QModelIndex() ); + if(model->hasChildren(index)) + { + history += "

" + index.data().toString() + "

"; + for(int j=0; j< model->rowCount(index); ++j) + { + QModelIndex son = model->index(j, 0, index ); + history += son.data(HistoryModel::DateTimeRole).toDateTime().toString("hh:mm"); + history += ' '; + history += QString("") + + son.data().toString() + QString(""); + history += "
"; + } + } + i++; + } + while( model->hasIndex( i , 0 , QModelIndex() ) ); + + history += ""; + return history; +} + + +QString NewTabPage::bookmarksPage() +{ + KBookmarkGroup bookGroup = Application::bookmarkProvider()->rootGroup(); + if (bookGroup.isNull()) + { + return QString("Error retrieving bookmarks!"); + } + + QString str; + KBookmark bookmark = bookGroup.first(); + while (!bookmark.isNull()) + { + str += createBookItem(bookmark); + bookmark = bookGroup.next(bookmark); + } + return str; +} + + +QString NewTabPage::createBookItem(const KBookmark &bookmark) +{ + if (bookmark.isGroup()) + { + QString result; + KBookmarkGroup group = bookmark.toGroup(); + KBookmark bm = group.first(); + result += "

" + bookmark.text() + "

"; + result += "

"; + while (!bm.isNull()) + { + result += createBookItem(bm); + bm = group.next(bm); + } + result += "

"; + return result; + } + + if(bookmark.isSeparator()) + { + return QString("
"); + } + + QString books = "" + bookmark.text() + "
"; + return books; +} + + +QString NewTabPage::closedTabsPage() +{ + QList links = Application::instance()->mainWindow()->mainView()->recentlyClosedTabs(); + QString closed; + + Q_FOREACH( const HistoryItem &item, links) + { + closed += "
"; + closed += ""; + closed += ""; + closed += ""; + closed += "
"; + } + + return closed; +} diff --git a/src/rekonqpage/newtabpage.h b/src/rekonqpage/newtabpage.h new file mode 100644 index 00000000..2d8d50bd --- /dev/null +++ b/src/rekonqpage/newtabpage.h @@ -0,0 +1,72 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2009 by Andrea Diamantini +* +* +* 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 . +* +* ============================================================ */ + + +#ifndef REKONQ_NEW_TAB_PAGE +#define REKONQ_NEW_TAB_PAGE + + +// KDE Includes +#include + +// Qt Includes +#include +#include + +// Forward Includes +class KBookmark; + + +class NewTabPage +{ + +public: + NewTabPage(); + ~NewTabPage(); + + /** + * This is the unique NewTabPage public method. It takes an + * about: url and loads the corresponding part of the + * new tab page + */ + QString newTabPageCode(const KUrl &url = KUrl("about:home")); + +protected: // these are the function to build the new tab page + + QString browsingMenu(const KUrl ¤tUrl); + + QString favoritesPage(); + QString lastVisitedPage(); + QString historyPage(); + QString bookmarksPage(); + QString closedTabsPage(); + +private: + QString createBookItem(const KBookmark &bookmark); + + QString m_htmlFilePath; +}; + +#endif // REKONQ_NEW_TAB_PAGE -- cgit v1.2.1