/* ============================================================ * * 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 "homepage.h" #include "homepage.moc" // Local Includes #include "historymodels.h" #include "bookmarks.h" #include "application.h" // KDE Includes #include <KStandardDirs> #include <KIconLoader> #include <KDebug> // Qt Includes #include <QFile> HomePage::HomePage(QObject *parent) : QObject(parent) { m_homePagePath = KStandardDirs::locate("data", "rekonq/htmls/home.html"); m_imagesPath = "file://" + KStandardDirs::locate("appdata", "pics/"); } HomePage::~HomePage() { } QString HomePage::rekonqHomePage() { QFile file(m_homePagePath); bool isOpened = file.open(QIODevice::ReadOnly); if (!isOpened) { kWarning() << "Couldn't open the home.html file"; return QString(""); } QString history = fillHistory(); QString bookmarks = fillBookmarks(); QString html = QString(QLatin1String(file.readAll())) .arg(m_imagesPath) .arg(history) .arg(bookmarks); return html; } QString HomePage::fillHistory() { QString history = QString(); HistoryTreeModel *model = Application::historyManager()->historyTreeModel(); int i = 0; do { QModelIndex index = model->index(i, 0, QModelIndex() ); if(model->hasChildren(index)) { QString s = QString::number(i); history += createSubMenu(index.data().toString(), s); history += "<p id=\"y" + s + "\" class=\"indent\" style=\"display:none\">"; for(int j=0; j< model->rowCount(index); ++j) { QModelIndex son = model->index(j, 0, index ); // FIXME add an icon to each history item history += "<img src=\"" + ciao + "\" alt=\"icon\" />"; history += QString("<a href=\"") + son.data(HistoryModel::UrlStringRole).toString() + QString("\">") + son.data().toString() + QString("</a><br />"); } history += "</p>"; } else { history += QString("<p> NO CHILDREN: ") + index.data().toString() + QString("</p>"); } i++; } while( model->hasIndex( i , 0 , QModelIndex() ) ); return history; } QString HomePage::fillBookmarks() { KBookmarkGroup toolBarGroup = Application::bookmarkProvider()->rootGroup(); if (toolBarGroup.isNull()) { return QString("Error retrieving bookmarks!"); } QString str = QString(""); KBookmark bookmark = toolBarGroup.first(); while (!bookmark.isNull()) { str += createBookItem(bookmark); bookmark = toolBarGroup.next(bookmark); } return str; } QString HomePage::createSubMenu(const QString &item, const QString &s) { QString menu = "<div onClick=\"ToggleVisibility('x" + s + "','y" + s + "')\">"; menu += "<p><img id=\"x" + s + "\" src=\"" + m_imagesPath + "closed.png\" /> <b><u>" + item + "</u></b></p></div>"; return menu; } QString HomePage::createBookItem(const KBookmark &bookmark) { static int i = 0; if (bookmark.isGroup()) { QString result = QString(""); QString ss = "b" + QString::number(i); i++; KBookmarkGroup group = bookmark.toGroup(); KBookmark bm = group.first(); result += createSubMenu( bookmark.text() , ss ); result += "<p id=\"y" + ss + "\" class=\"indent\" style=\"display:none\">"; while (!bm.isNull()) { result += createBookItem(bm); //menuAction->addAction(fillBookmarkBar(bm)); bm = group.next(bm); } result += "</p>"; return result; } if(bookmark.isSeparator()) { return QString("<hr />"); } QString str = ""; // FIXME Add icon "<img src=\"" + KStandardDirs::findResource( "icon", bookmark.icon() + ".png" ) + "\" alt=\"icon\" />"; str += "<a href=\"" + bookmark.url().prettyUrl() + "\">" + bookmark.text() + "</a><br />"; return str; }