diff options
author | Andrea Diamantini <adjam7@gmail.com> | 2009-09-08 02:38:18 +0200 |
---|---|---|
committer | Andrea Diamantini <adjam7@gmail.com> | 2009-09-10 22:15:10 +0200 |
commit | 667bd0a8450835f9b95b8ce83fb4f04a7df6d4ca (patch) | |
tree | a202cb184a88313c24c407d94d5c3147d144a57e /src/homepage.cpp | |
parent | rekonq 0.2.56 with session management (recover on crash) (diff) | |
download | rekonq-667bd0a8450835f9b95b8ce83fb4f04a7df6d4ca.tar.xz |
HUGE HUGE HUGE COMMIT!
First implementation of "rekonq home page"
- Added icons && htmls for it
- fixed pics places && CMakeLists.txt
- Added a HomePage class to create the "rekonq home Page"
- Modified setting to load on new tab start
1) rekonq home page (default)
2) blank page
3) an url (to set)
- removed home page button
- fixed WebPage && loadUrl slot to load "home:" scheme
- Added a toolbar method in BookmarksProvider to load bookmarks in the homepage
The page needs a lot of love, but I think this is a really good starting point for.
Hope you like it :)
Diffstat (limited to 'src/homepage.cpp')
-rw-r--r-- | src/homepage.cpp | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/src/homepage.cpp b/src/homepage.cpp new file mode 100644 index 00000000..bba49999 --- /dev/null +++ b/src/homepage.cpp @@ -0,0 +1,173 @@ +/* ============================================================ +* +* 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 <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 ); + 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()->toolbar(); + 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 />"); + } + return "<a href=\"" + bookmark.url().prettyUrl() + "\">" + bookmark.text() + "</a><br />"; +} |