From 067b99a053b6f8b1ccab507be8e828b2f72a1e43 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Wed, 10 Feb 2010 10:57:57 +0100 Subject: Fix copyright for 0.4 beta release --- src/bookmarks/bookmarksmanager.cpp | 4 ++-- src/bookmarks/bookmarksmanager.h | 4 ++-- src/bookmarks/bookmarkspanel.cpp | 2 +- src/bookmarks/bookmarkspanel.h | 1 + src/bookmarks/bookmarksproxy.cpp | 1 + src/bookmarks/bookmarksproxy.h | 1 + src/bookmarks/bookmarkstreemodel.cpp | 1 + src/bookmarks/bookmarkstreemodel.h | 1 + 8 files changed, 10 insertions(+), 5 deletions(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarksmanager.cpp b/src/bookmarks/bookmarksmanager.cpp index 6442192a..3aab08ae 100644 --- a/src/bookmarks/bookmarksmanager.cpp +++ b/src/bookmarks/bookmarksmanager.cpp @@ -2,9 +2,9 @@ * * This file is a part of the rekonq project * -* Copyright (C) 2008-2009 by Andrea Diamantini +* Copyright (C) 2008-2010 by Andrea Diamantini * Copyright (C) 2009 by Paweł Prażak -* Copyright (C) 2009 by Lionel Chauvin +* Copyright (C) 2009-2010 by Lionel Chauvin * * * This program is free software; you can redistribute it and/or diff --git a/src/bookmarks/bookmarksmanager.h b/src/bookmarks/bookmarksmanager.h index febac234..200bfb4b 100644 --- a/src/bookmarks/bookmarksmanager.h +++ b/src/bookmarks/bookmarksmanager.h @@ -2,9 +2,9 @@ * * This file is a part of the rekonq project * -* Copyright (C) 2008-2009 by Andrea Diamantini +* Copyright (C) 2008-2010 by Andrea Diamantini * Copyright (C) 2009 by Paweł Prażak -* Copyright (C) 2009 by Lionel Chauvin +* Copyright (C) 2009-2010 by Lionel Chauvin * * * This program is free software; you can redistribute it and/or diff --git a/src/bookmarks/bookmarkspanel.cpp b/src/bookmarks/bookmarkspanel.cpp index 9164dbb6..48ca6537 100644 --- a/src/bookmarks/bookmarkspanel.cpp +++ b/src/bookmarks/bookmarkspanel.cpp @@ -3,7 +3,7 @@ * This file is a part of the rekonq project * * Copyright (C) 2009 by Nils Weigel -* +* Copyright (C) 2010 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 diff --git a/src/bookmarks/bookmarkspanel.h b/src/bookmarks/bookmarkspanel.h index 6c0e153f..64d68f70 100644 --- a/src/bookmarks/bookmarkspanel.h +++ b/src/bookmarks/bookmarkspanel.h @@ -3,6 +3,7 @@ * This file is a part of the rekonq project * * Copyright (C) 2009 by Nils Weigel +* Copyright (C) 2010 by Andrea Diamantini * * * This program is free software; you can redistribute it and/or diff --git a/src/bookmarks/bookmarksproxy.cpp b/src/bookmarks/bookmarksproxy.cpp index e94fbeff..7fa34b3f 100644 --- a/src/bookmarks/bookmarksproxy.cpp +++ b/src/bookmarks/bookmarksproxy.cpp @@ -3,6 +3,7 @@ * This file is a part of the rekonq project * * Copyright (C) 2009 by Nils Weigel +* Copyright (C) 2010 by Andrea Diamantini * * * This program is free software; you can redistribute it and/or diff --git a/src/bookmarks/bookmarksproxy.h b/src/bookmarks/bookmarksproxy.h index 99483331..fcd49673 100644 --- a/src/bookmarks/bookmarksproxy.h +++ b/src/bookmarks/bookmarksproxy.h @@ -3,6 +3,7 @@ * This file is a part of the rekonq project * * Copyright (C) 2009 by Nils Weigel +* Copyright (C) 2010 by Andrea Diamantini * * * This program is free software; you can redistribute it and/or diff --git a/src/bookmarks/bookmarkstreemodel.cpp b/src/bookmarks/bookmarkstreemodel.cpp index 140fa9c8..f80fdc74 100644 --- a/src/bookmarks/bookmarkstreemodel.cpp +++ b/src/bookmarks/bookmarkstreemodel.cpp @@ -3,6 +3,7 @@ * This file is a part of the rekonq project * * Copyright (C) 2009 by Nils Weigel +* Copyright (C) 2010 by Andrea Diamantini * * * This program is free software; you can redistribute it and/or diff --git a/src/bookmarks/bookmarkstreemodel.h b/src/bookmarks/bookmarkstreemodel.h index 9753999c..9b65d923 100644 --- a/src/bookmarks/bookmarkstreemodel.h +++ b/src/bookmarks/bookmarkstreemodel.h @@ -3,6 +3,7 @@ * This file is a part of the rekonq project * * Copyright (C) 2009 by Nils Weigel +* Copyright (C) 2010 by Andrea Diamantini * * * This program is free software; you can redistribute it and/or -- cgit v1.2.1 From 3e1ac6fb3f9865bf5bb0c156e985c1a4577b20e0 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Sun, 14 Feb 2010 11:23:37 +0100 Subject: Krazy issues (1st branch) --- src/bookmarks/bookmarksproxy.h | 8 ++++---- src/bookmarks/bookmarkstreemodel.cpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarksproxy.h b/src/bookmarks/bookmarksproxy.h index fcd49673..a1444218 100644 --- a/src/bookmarks/bookmarksproxy.h +++ b/src/bookmarks/bookmarksproxy.h @@ -37,13 +37,13 @@ class BookmarksProxy : public QSortFilterProxyModel Q_DISABLE_COPY(BookmarksProxy) public: - BookmarksProxy( QObject *parent = 0 ); + BookmarksProxy( QObject *parent = 0 ); protected: - virtual bool filterAcceptsRow( int source_row, const QModelIndex &source_parent ) const; + virtual bool filterAcceptsRow( int source_row, const QModelIndex &source_parent ) const; - // returns true if any child(or childs-child...) matches filter - bool recursiveMatch( const QModelIndex &index ) const; + // returns true if any child(or children-child...) matches filter + bool recursiveMatch( const QModelIndex &index ) const; }; #endif // BOOKMARKSPROXY_H diff --git a/src/bookmarks/bookmarkstreemodel.cpp b/src/bookmarks/bookmarkstreemodel.cpp index f80fdc74..95e5ad41 100644 --- a/src/bookmarks/bookmarkstreemodel.cpp +++ b/src/bookmarks/bookmarkstreemodel.cpp @@ -268,7 +268,7 @@ void BookmarksTreeModel::bookmarksChanged( const QString &groupAddress ) QModelIndex nodeIndex; QStringList indexChain( groupAddress.split( '/', QString::SkipEmptyParts) ); - foreach( QString sIndex, indexChain ) + foreach( const QString &sIndex, indexChain ) { bool ok; int i = sIndex.toInt( &ok ); -- cgit v1.2.1 From d92f82b200c2c9098cab32c2d9437ee2cfefa720 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Tue, 16 Feb 2010 09:43:56 +0100 Subject: Removed unuseful check (also if sometimes the bookmark toolbar let rekonq misteriously crash...) --- src/bookmarks/bookmarksmanager.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarksmanager.cpp b/src/bookmarks/bookmarksmanager.cpp index 3aab08ae..cfe26a55 100644 --- a/src/bookmarks/bookmarksmanager.cpp +++ b/src/bookmarks/bookmarksmanager.cpp @@ -219,16 +219,13 @@ void BookmarkProvider::slotBookmarksChanged(const QString &group, const QString if (toolBarGroup.isNull()) return; - if(m_bookmarkToolBar) - { - m_bookmarkToolBar->clear(); // FIXME CRASH + m_bookmarkToolBar->clear(); // FIXME CRASH - KBookmark bookmark = toolBarGroup.first(); - while (!bookmark.isNull()) - { - m_bookmarkToolBar->addAction(fillBookmarkBar(bookmark)); - bookmark = toolBarGroup.next(bookmark); - } + KBookmark bookmark = toolBarGroup.first(); + while (!bookmark.isNull()) + { + m_bookmarkToolBar->addAction(fillBookmarkBar(bookmark)); + bookmark = toolBarGroup.next(bookmark); } } -- cgit v1.2.1 From 8dda858403d283f1850c0298aac0fb5212a27952 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Fri, 26 Feb 2010 11:37:11 +0100 Subject: tests support for every Qt derived rekonq class --- src/bookmarks/bookmarksmanager.h | 3 ++- src/bookmarks/bookmarkspanel.h | 6 +++++- src/bookmarks/bookmarksproxy.h | 7 ++++++- src/bookmarks/bookmarkstreemodel.h | 11 ++++++++--- 4 files changed, 21 insertions(+), 6 deletions(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarksmanager.h b/src/bookmarks/bookmarksmanager.h index 200bfb4b..d4afb997 100644 --- a/src/bookmarks/bookmarksmanager.h +++ b/src/bookmarks/bookmarksmanager.h @@ -31,6 +31,7 @@ // Local Includes +#include "rekonqprivate_export.h" #include "application.h" // Qt Includes @@ -55,7 +56,7 @@ class KBookmarkManager; * bookmarks as actions * */ -class BookmarkOwner : public QObject , public KBookmarkOwner +class REKONQ_TESTS_EXPORT BookmarkOwner : public QObject , public KBookmarkOwner { Q_OBJECT diff --git a/src/bookmarks/bookmarkspanel.h b/src/bookmarks/bookmarkspanel.h index 64d68f70..f5376d98 100644 --- a/src/bookmarks/bookmarkspanel.h +++ b/src/bookmarks/bookmarkspanel.h @@ -28,6 +28,10 @@ #ifndef BOOKMARKSPANEL_H #define BOOKMARKSPANEL_H + +// Local Includes +#include "rekonqprivate_export.h" + // Qt Includes #include @@ -36,7 +40,7 @@ class KUrl; class QModelIndex; -class BookmarksPanel : public QDockWidget +class REKONQ_TESTS_EXPORT BookmarksPanel : public QDockWidget { Q_OBJECT diff --git a/src/bookmarks/bookmarksproxy.h b/src/bookmarks/bookmarksproxy.h index a1444218..2bf1d63a 100644 --- a/src/bookmarks/bookmarksproxy.h +++ b/src/bookmarks/bookmarksproxy.h @@ -28,10 +28,15 @@ #ifndef BOOKMARKSPROXY_H #define BOOKMARKSPROXY_H + +// Local Includes +#include "rekonqprivate_export.h" + // Qt Includes #include -class BookmarksProxy : public QSortFilterProxyModel + +class REKONQ_TESTS_EXPORT BookmarksProxy : public QSortFilterProxyModel { Q_OBJECT Q_DISABLE_COPY(BookmarksProxy) diff --git a/src/bookmarks/bookmarkstreemodel.h b/src/bookmarks/bookmarkstreemodel.h index 9b65d923..dfad52ba 100644 --- a/src/bookmarks/bookmarkstreemodel.h +++ b/src/bookmarks/bookmarkstreemodel.h @@ -28,13 +28,18 @@ #ifndef BOOKMARKSTREEMODEL_H #define BOOKMARKSTREEMODEL_H -// Qt Includes -#include + +// Local Includes +#include "rekonqprivate_export.h" // KDE includes #include -class BookmarksTreeModel : public QAbstractItemModel +// Qt Includes +#include + + +class REKONQ_TESTS_EXPORT BookmarksTreeModel : public QAbstractItemModel { Q_OBJECT Q_DISABLE_COPY(BookmarksTreeModel) -- cgit v1.2.1 From e9670c51fef2c8447a04a30778a24646df4ef915 Mon Sep 17 00:00:00 2001 From: Yoann Laissus Date: Tue, 23 Mar 2010 22:56:26 +0100 Subject: A lot of fix and improvements for the bookmark and the history panels --- src/bookmarks/bookmarksmanager.cpp | 4 +- src/bookmarks/bookmarksmanager.h | 4 +- src/bookmarks/bookmarkspanel.cpp | 441 +++++++++++++++++++++++++++++++++-- src/bookmarks/bookmarkspanel.h | 36 ++- src/bookmarks/bookmarkstreemodel.cpp | 265 ++++++++++++++------- src/bookmarks/bookmarkstreemodel.h | 51 ++-- 6 files changed, 677 insertions(+), 124 deletions(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarksmanager.cpp b/src/bookmarks/bookmarksmanager.cpp index cfe26a55..9feed63a 100644 --- a/src/bookmarks/bookmarksmanager.cpp +++ b/src/bookmarks/bookmarksmanager.cpp @@ -178,7 +178,9 @@ BookmarkProvider::BookmarkProvider(QObject *parent) bookfile = KUrl(bookmarksPath); } } - m_manager = KBookmarkManager::managerForExternalFile(bookfile.path()); + // A workaround to avoid a long delay between the two changed signals of the bookmark manager + m_manager = KBookmarkManager::managerForFile(bookfile.path(), "rekonq"); + connect(m_manager, SIGNAL(changed(const QString &, const QString &)), this, SLOT(slotBookmarksChanged(const QString &, const QString &))); diff --git a/src/bookmarks/bookmarksmanager.h b/src/bookmarks/bookmarksmanager.h index d4afb997..e50148e4 100644 --- a/src/bookmarks/bookmarksmanager.h +++ b/src/bookmarks/bookmarksmanager.h @@ -210,7 +210,9 @@ public: */ KBookmarkGroup rootGroup(); - KBookmarkManager *bookmarkManager() { return m_manager; } + KBookmarkManager *bookmarkManager() { return m_manager; } + BookmarkOwner *bookmarkOwner() { return m_owner; } + signals: /** * @short This signal is emitted when an url has to be loaded diff --git a/src/bookmarks/bookmarkspanel.cpp b/src/bookmarks/bookmarkspanel.cpp index 48ca6537..c50ebcdb 100644 --- a/src/bookmarks/bookmarkspanel.cpp +++ b/src/bookmarks/bookmarkspanel.cpp @@ -29,6 +29,7 @@ #include "bookmarkspanel.moc" // Local Includes +#include "bookmarksmanager.h" #include "bookmarkstreemodel.h" #include "bookmarksproxy.h" @@ -44,12 +45,21 @@ // KDE includes #include #include +#include +#include +#include +#include BookmarksPanel::BookmarksPanel(const QString &title, QWidget *parent, Qt::WindowFlags flags) - : QDockWidget(title, parent, flags) + : QDockWidget(title, parent, flags), + m_treeView(new UrlTreeView(this)), + m_ac(new KActionCollection(this)), + menu(new KMenu(this)), + expandLock(false) { setup(); + setupActions(); setShown(ReKonfig::showBookmarksPanel()); } @@ -60,13 +70,6 @@ BookmarksPanel::~BookmarksPanel() } -void BookmarksPanel::bookmarkActivated( const QModelIndex &index ) -{ - if( index.isValid() ) - emit openUrl( qVariantValue< KUrl >( index.data( Qt::UserRole ) ) ); -} - - void BookmarksPanel::setup() { setObjectName("bookmarksPanel"); @@ -85,19 +88,20 @@ void BookmarksPanel::setup() searchLabel->setBuddy( search ); // setup tree view - QTreeView *treeView = new QTreeView(ui); - treeView->setUniformRowHeights(true); - treeView->setSelectionBehavior(QAbstractItemView::SelectRows); - treeView->setTextElideMode(Qt::ElideMiddle); - treeView->setAlternatingRowColors(true); - treeView->header()->hide(); - treeView->setRootIsDecorated( false ); + m_treeView->setUniformRowHeights(true); + m_treeView->setTextElideMode(Qt::ElideMiddle); + m_treeView->setAlternatingRowColors(true); + m_treeView->header()->hide(); + m_treeView->setDragEnabled(true); + m_treeView->setAutoExpandDelay(750); + m_treeView->setDefaultDropAction(Qt::MoveAction); + m_treeView->viewport()->setAcceptDrops(true); // put everything together QVBoxLayout *vBoxLayout = new QVBoxLayout; vBoxLayout->setContentsMargins(0, 0, 0, 0); vBoxLayout->addLayout(searchLayout); - vBoxLayout->addWidget(treeView); + vBoxLayout->addWidget(m_treeView); // add it to the UI ui->setLayout(vBoxLayout); @@ -106,8 +110,407 @@ void BookmarksPanel::setup() BookmarksTreeModel *model = new BookmarksTreeModel( this ); BookmarksProxy *proxy = new BookmarksProxy(ui); proxy->setSourceModel( model ); - treeView->setModel( proxy ); + m_treeView->setModel( proxy ); + + connect(m_treeView, SIGNAL(contextMenuItemRequested(const QPoint &)), this, SLOT(contextMenuBk(const QPoint &))); + connect(m_treeView, SIGNAL(contextMenuGroupRequested(const QPoint &)), this, SLOT(contextMenuBkGroup(const QPoint &))); + connect(m_treeView, SIGNAL(contextMenuEmptyRequested(const QPoint &)), this, SLOT(contextMenuBlank(const QPoint &))); + connect(m_treeView, SIGNAL(delKeyPressed()), this, SLOT(deleteBookmark())); + connect(m_treeView, SIGNAL(collapsed(const QModelIndex &)), this, SLOT(onCollapse(const QModelIndex &))); + connect(m_treeView, SIGNAL(expanded(const QModelIndex &)), this, SLOT(onExpand(const QModelIndex &))); + connect(search, SIGNAL(textChanged(const QString &)), proxy, SLOT(setFilterFixedString(const QString &))); + callAutoExpand(); +} + + +void BookmarksPanel::onCollapse(const QModelIndex &index) +{ + if(expandLock) + return; + + KBookmark bookmark = bookmarkForIndex(index); + bookmark.internalElement().setAttribute("folded", "yes"); + Application::bookmarkProvider()->bookmarkManager()->emitChanged(); +} + + +void BookmarksPanel::onExpand(const QModelIndex &index) +{ + if(expandLock) + return; + + KBookmark bookmark = bookmarkForIndex(index); + bookmark.internalElement().setAttribute("folded", "no"); + Application::bookmarkProvider()->bookmarkManager()->emitChanged(); +} + + +void BookmarksPanel::callAutoExpand() +{ + expandLock = true; + autoExpand(); + expandLock = false; +} + + +void BookmarksPanel::autoExpand(const QModelIndex &root) +{ + + int count = m_treeView->model()->rowCount(root); + QModelIndex temp; + + for(int i = 0; i < count; i++) + { + temp = m_treeView->model()->index(i,0,root); + m_treeView->setExpanded(temp, bookmarkForIndex(temp).toGroup().isOpen()); + autoExpand(temp); + } +} + + +void BookmarksPanel::setupActions() +{ + KAction* action; + + action = new KAction(KIcon("tab-new"), i18n("Open"), this); + connect(action, SIGNAL(triggered()), m_treeView, SLOT(openInCurrentTab())); + m_ac.addAction("open", action); + + action = new KAction(KIcon("tab-new"), i18n("Open in New Tab"), this); + connect(action, SIGNAL(triggered()), m_treeView, SLOT(openInNewTab())); + m_ac.addAction("open_tab", action); + + action = new KAction(KIcon("window-new"), i18n("Open in New Window"), this); + connect(action, SIGNAL(triggered()), m_treeView, SLOT(openInNewWindow())); + m_ac.addAction("open_window", action); + + action = new KAction(KIcon("rating"), i18n("Bookmark Page"), this); + connect(action, SIGNAL(triggered()), this, SLOT(bookmarkPage())); + m_ac.addAction("bookmark_page", action); + + action = new KAction(KIcon("bookmark-new"), i18n("New Bookmark"), this); + connect(action, SIGNAL(triggered()), this, SLOT(newBookmark())); + m_ac.addAction("bookmark_new", action); + + action = new KAction(KIcon("folder-new"), i18n("New Bookmark Folder"), this); + connect(action, SIGNAL(triggered()), this, SLOT(newBookmarkGroup())); + m_ac.addAction("folder_new", action); + + action = new KAction(KIcon("edit-clear"), i18n("New Separator"), this); + connect(action, SIGNAL(triggered()), this, SLOT(newSeparator())); + m_ac.addAction("separator_new", action); + + action = new KAction(KIcon("edit-copy"), i18n("Copy Link"), this); + connect(action, SIGNAL(triggered()), m_treeView, SLOT(copyToClipboard())); + m_ac.addAction("copy", action); + + action = new KAction(KIcon("edit-delete"), i18n("Delete"), this); + connect(action, SIGNAL(triggered()), this, SLOT(deleteBookmark())); + m_ac.addAction("delete", action); + + action = new KAction(KIcon("configure"), i18n("Properties"), this); + connect(action, SIGNAL(triggered()), this, SLOT(editBookmark())); + m_ac.addAction("properties", action); + + action = new KAction(KIcon("tab-new"), i18n("Open all Bookmarks"), this); + connect(action, SIGNAL(triggered()), this, SLOT(openAll())); + m_ac.addAction("open_all", action); +} + + +KBookmark BookmarksPanel::bookmarkForIndex(const QModelIndex &index) +{ + if(!index.isValid()) + return KBookmark(); + + const QAbstractProxyModel* proxyModel = dynamic_cast< const QAbstractProxyModel* >(index.model()); + QModelIndex originalIndex = proxyModel->mapToSource(index); + + BtmItem *node = static_cast< BtmItem* >( originalIndex.internalPointer() ); + return node->getBkm(); +} + + +void BookmarksPanel::contextMenuBk(const QPoint &pos) +{ + QPoint position = m_treeView->mapToGlobal(pos); + QModelIndex index = m_treeView->indexAt(pos); + if(!index.isValid() || expandLock) + return; + + KBookmark selected = bookmarkForIndex(index); + + if(selected.isGroup()) + { + contextMenuBkGroup(pos, true); + return; + } + + if(selected.isSeparator()) + { + contextMenuSeparator(pos); + return; + } + + menu = new KMenu(this); + + menu->addAction(m_ac.action("open")); + menu->addAction(m_ac.action("open_tab")); + menu->addAction(m_ac.action("open_window")); + + menu->addSeparator(); + + menu->addAction(m_ac.action("bookmark_page")); + menu->addAction(m_ac.action("bookmark_new")); + menu->addAction(m_ac.action("folder_new")); + menu->addAction(m_ac.action("separator_new")); + + menu->addSeparator(); + + menu->addAction(m_ac.action("copy")); + + menu->addSeparator(); + + menu->addAction(m_ac.action("delete")); + menu->addAction(m_ac.action("properties")); + + menu->popup(position); +} + + +void BookmarksPanel::contextMenuBkGroup(const QPoint &pos, bool emptyGroup) +{ + if(expandLock) + return; + + QPoint position = m_treeView->mapToGlobal(pos); + menu = new KMenu(this); + + if(!emptyGroup) + { + menu->addAction(m_ac.action("open_all")); + menu->addSeparator(); + } + + menu->addAction(m_ac.action("bookmark_page")); + menu->addAction(m_ac.action("bookmark_new")); + menu->addAction(m_ac.action("folder_new")); + menu->addAction(m_ac.action("separator_new")); + + menu->addSeparator(); + + menu->addAction(m_ac.action("delete")); + menu->addAction(m_ac.action("properties")); + + menu->popup(position); +} + + +void BookmarksPanel::contextMenuSeparator(const QPoint &pos) +{ + QPoint position = m_treeView->mapToGlobal(pos); + menu = new KMenu(this); + + menu->addAction(m_ac.action("bookmark_page")); + menu->addAction(m_ac.action("bookmark_new")); + menu->addAction(m_ac.action("folder_new")); + menu->addAction(m_ac.action("separator_new")); + + menu->addSeparator(); + + menu->addAction(m_ac.action("delete")); + + menu->popup(position); +} + + +void BookmarksPanel::contextMenuBlank(const QPoint &pos) +{ + QPoint position = m_treeView->mapToGlobal(pos); + menu = new KMenu(this); + + menu->addAction(m_ac.action("bookmark_page")); + menu->addAction(m_ac.action("bookmark_new")); + menu->addAction(m_ac.action("folder_new")); + menu->addAction(m_ac.action("separator_new")); + + menu->popup(position); +} + + +void BookmarksPanel::deleteBookmark() +{ + QModelIndex index = m_treeView->currentIndex(); + if(!index.isValid()) + return; + + KBookmark selected = bookmarkForIndex(index); + KBookmarkGroup parent = selected.parentGroup(); + + parent.deleteBookmark(selected); + Application::instance()->bookmarkProvider()->bookmarkManager()->emitChanged(); +} + + +void BookmarksPanel::editBookmark() +{ + QModelIndex index = m_treeView->currentIndex(); + if(!index.isValid()) + return; + + KBookmark selected = bookmarkForIndex(index); + + KBookmarkDialog *dialog = Application::bookmarkProvider()->bookmarkOwner()->bookmarkDialog(Application::bookmarkProvider()->bookmarkManager(), QApplication::activeWindow()); + dialog->editBookmark(selected); + delete dialog; +} + + +void BookmarksPanel::openAll() +{ + QModelIndex index = m_treeView->currentIndex(); + if(!index.isValid()) + return; + + QList allChild = bookmarkForIndex(index).toGroup().groupUrlList(); + + if(allChild.length() > 8) // 8, a good choice ? + { + if(!(KMessageBox::warningContinueCancel(this, i18n("You are about to open a lot of tabs : %1\nAre you sure ?", QString::number(allChild.length()))) == KMessageBox::Continue)) + return; + } + + for(int i = 0; i < allChild.length(); i++) + emit openUrl(allChild.at(i).url(), Rekonq::SettingOpenTab); +} + + +void BookmarksPanel::newBookmark() +{ + QModelIndex index = m_treeView->currentIndex(); + + KBookmark selected; + KBookmark newBk; + + KBookmarkDialog *dialog = Application::bookmarkProvider()->bookmarkOwner()->bookmarkDialog(Application::bookmarkProvider()->bookmarkManager(), QApplication::activeWindow()); + + if(index.isValid()) + { + selected = bookmarkForIndex(index); + + if(selected.isGroup()) + newBk = dialog->addBookmark("New bookmark", KUrl("www.kde.org"), selected); + else + newBk = dialog->addBookmark("New bookmark", KUrl("www.kde.org"), selected.parentGroup()); + } + + else + { + newBk = dialog->addBookmark("New bookmark", KUrl("www.kde.org")); + } + + delete dialog; + + // addBookmark already added the bookmark, but without the default favicon + KBookmarkGroup parent = newBk.parentGroup(); + parent.deleteBookmark(newBk); + newBk.setIcon(("text-html")); + parent.addBookmark(newBk); + + if(index.isValid()) + parent.moveBookmark(newBk, selected); + + Application::bookmarkProvider()->bookmarkManager()->emitChanged(); +} + + +void BookmarksPanel::newBookmarkGroup() +{ + QModelIndex index = m_treeView->currentIndex(); + KBookmark newBk; + + KBookmarkDialog *dialog = Application::bookmarkProvider()->bookmarkOwner()->bookmarkDialog(Application::bookmarkProvider()->bookmarkManager(), QApplication::activeWindow()); + + if(index.isValid()) + { + KBookmark selected = bookmarkForIndex(index); + + if(selected.isGroup()) + { + newBk = dialog->createNewFolder("New folder", selected); + } + + else + { + newBk = dialog->createNewFolder("New folder", selected.parentGroup()); + selected.parentGroup().moveBookmark(newBk, selected); + Application::bookmarkProvider()->bookmarkManager()->emitChanged(); + } + } + + else + { + dialog->createNewFolder("New folder"); + } + + delete dialog; +} + + +void BookmarksPanel::newSeparator() +{ + QModelIndex index = m_treeView->currentIndex(); + + KBookmark selected; + KBookmark newBk; + + if(index.isValid()) + { + selected = bookmarkForIndex(index); + + if(selected.isGroup()) + newBk = selected.toGroup().createNewSeparator(); + else + newBk = selected.parentGroup().createNewSeparator(); + } + + else + { + newBk = Application::bookmarkProvider()->rootGroup().createNewSeparator(); + } + + KBookmarkGroup parent = newBk.parentGroup(); + newBk.setIcon(("edit-clear")); + parent.addBookmark(newBk); + + if(index.isValid()) + parent.moveBookmark(newBk, selected); + + Application::bookmarkProvider()->bookmarkManager()->emitChanged(); +} + + +void BookmarksPanel::bookmarkPage() +{ + QModelIndex index = m_treeView->currentIndex(); + KBookmarkGroup parent = Application::bookmarkProvider()->rootGroup(); + + if(index.isValid()) + { + KBookmark selected = bookmarkForIndex(index); + parent = selected.parentGroup(); + + if(selected.isGroup()) + parent = selected.toGroup(); + + KBookmark newBk = parent.addBookmark(Application::bookmarkProvider()->bookmarkOwner()->currentTitle(), KUrl(Application::bookmarkProvider()->bookmarkOwner()->currentUrl()), "text-html"); + parent.moveBookmark(newBk, selected); + } + + else + { + parent.addBookmark(Application::bookmarkProvider()->bookmarkOwner()->currentTitle(), KUrl(Application::bookmarkProvider()->bookmarkOwner()->currentUrl()), "text-html"); + } - connect(search, SIGNAL(textChanged(QString)), proxy, SLOT(setFilterFixedString(QString))); - connect(treeView, SIGNAL( activated(QModelIndex) ), this, SLOT( bookmarkActivated(QModelIndex) ) ); + Application::bookmarkProvider()->bookmarkManager()->emitChanged(); } diff --git a/src/bookmarks/bookmarkspanel.h b/src/bookmarks/bookmarkspanel.h index f5376d98..ea33e265 100644 --- a/src/bookmarks/bookmarkspanel.h +++ b/src/bookmarks/bookmarkspanel.h @@ -31,10 +31,17 @@ // Local Includes #include "rekonqprivate_export.h" +#include "application.h" +#include "urltreeview.h" // Qt Includes #include +// KDE Includes +#include +#include +#include + // Forward Declarations class KUrl; class QModelIndex; @@ -49,13 +56,38 @@ public: ~BookmarksPanel(); signals: - void openUrl(const KUrl &); + void openUrl(const KUrl &, const Rekonq::OpenType &); + void itemHovered(const QString &); + void saveExpFinished(const QString &); + void saveRequested(); private slots: - void bookmarkActivated( const QModelIndex &index ); + void contextMenuBk(const QPoint &pos); + void contextMenuBkGroup(const QPoint &pos, const bool emptyGroup = false); + void contextMenuBlank(const QPoint &pos); + void deleteBookmark(); + void openAll(); + void editBookmark(); + void newBookmark(); + void newBookmarkGroup(); + void newSeparator(); + void bookmarkPage(); + void autoExpand(const QModelIndex &root = QModelIndex()); + void onCollapse(const QModelIndex &index); + void onExpand(const QModelIndex &index); + void callAutoExpand(); private: void setup(); + void setupActions(); + void contextMenuSeparator(const QPoint &pos); + KBookmark bookmarkForIndex(const QModelIndex &index); + + UrlTreeView *m_treeView; + QStringList m_expList; + KActionCollection m_ac; + KMenu *menu; + bool expandLock; }; #endif // BOOKMARKSPANEL_H diff --git a/src/bookmarks/bookmarkstreemodel.cpp b/src/bookmarks/bookmarkstreemodel.cpp index 95e5ad41..d63c92d3 100644 --- a/src/bookmarks/bookmarkstreemodel.cpp +++ b/src/bookmarks/bookmarkstreemodel.cpp @@ -33,94 +33,112 @@ #include "application.h" #include "bookmarksmanager.h" +// Qt Includes +#include + // KDE includes #include #include -class BookmarksTreeModel::BtmItem +BtmItem::BtmItem(const KBookmark &bm) + : m_parent(0) + , m_kbm(bm) { -public: - BtmItem(const KBookmark &bm) - : m_parent(0) - , m_kbm(bm) - { - } - - - ~BtmItem() - { - qDeleteAll(m_children); - } +} - QVariant data( int role = Qt::DisplayRole ) const - { - if( m_kbm.isNull() ) - return QVariant(); // should only happen for root item +BtmItem::~BtmItem() +{ + qDeleteAll(m_children); +} - if( role == Qt::DisplayRole ) - return m_kbm.text(); - if( role == Qt::DecorationRole ) - return KIcon( m_kbm.icon() ); - if( role == Qt::UserRole ) - return m_kbm.url(); - return QVariant(); +QVariant BtmItem::data( int role ) const +{ + if( m_kbm.isNull() ) + return QVariant(); // should only happen for root item + + if( role == Qt::DisplayRole ) + return m_kbm.text(); + if( role == Qt::DecorationRole ) + return KIcon( m_kbm.icon() ); + if( role == Qt::UserRole ) + return m_kbm.url(); + if( role == Qt::ToolTipRole) + { + QString tooltip = ""; + + if(!m_kbm.text().isEmpty()) + { + tooltip += m_kbm.text(); + } + if(m_kbm.isGroup()) + { + tooltip += " [" + QString::number(childCount()) + " " + i18n("Items") + "]"; + } + if(!m_kbm.url().url().isEmpty()) + { + if(!tooltip.isEmpty()) + tooltip += "\n"; + tooltip += m_kbm.url().url(); + } + return tooltip; } + return QVariant(); +} - int row() const - { - if(m_parent) - return m_parent->m_children.indexOf( const_cast< BtmItem* >( this ) ); - return 0; - } +int BtmItem::row() const +{ + if(m_parent) + return m_parent->m_children.indexOf( const_cast< BtmItem* >( this ) ); + return 0; +} - int childCount() const - { - return m_children.count(); - } +int BtmItem::childCount() const +{ + return m_children.count(); +} - BtmItem* child( int n ) - { - Q_ASSERT(n>=0); - Q_ASSERT(n=0); + Q_ASSERT(nm_parent = this; - m_children << child; - } +void BtmItem::appendChild(BtmItem *child) +{ + if( !child ) + return; + child->m_parent = this; + m_children << child; +} - void clear() - { - qDeleteAll(m_children); - m_children.clear(); - } -private: - BtmItem *m_parent; - QList< BtmItem* > m_children; - KBookmark m_kbm; -}; +void BtmItem::clear() +{ + qDeleteAll(m_children); + m_children.clear(); +} +KBookmark BtmItem::getBkm() const +{ + return m_kbm; +} // ------------------------------------------------------------------------------------- @@ -130,8 +148,8 @@ BookmarksTreeModel::BookmarksTreeModel(QObject *parent) , m_root(0) { resetModel(); + connect( this, SIGNAL(bookmarkChangedFinished()), parent, SLOT(callAutoExpand())); connect( Application::bookmarkProvider()->bookmarkManager(), SIGNAL( changed(QString,QString) ), this, SLOT( bookmarksChanged(QString) ) ); - connect( Application::bookmarkProvider()->bookmarkManager(), SIGNAL( bookmarksChanged(QString) ), this, SLOT( bookmarksChanged(QString) ) ); } @@ -179,8 +197,17 @@ QVariant BookmarksTreeModel::headerData(int section, Qt::Orientation orientation Qt::ItemFlags BookmarksTreeModel::flags(const QModelIndex &index) const { - Q_UNUSED(index) - return Qt::ItemIsEnabled | Qt::ItemIsSelectable; + Qt::ItemFlags flags = QAbstractItemModel::flags(index); + + if(!index.isValid()) + return flags | Qt::ItemIsDropEnabled; + + flags = Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled; + + if(bookmarkForIndex(index).isGroup()) + flags |= Qt::ItemIsDropEnabled; + + return flags; } @@ -258,30 +285,9 @@ QVariant BookmarksTreeModel::data(const QModelIndex &index, int role) const void BookmarksTreeModel::bookmarksChanged( const QString &groupAddress ) { - if( groupAddress.isEmpty() ) - { - resetModel(); - return; - } - - BtmItem *node = m_root; - QModelIndex nodeIndex; - - QStringList indexChain( groupAddress.split( '/', QString::SkipEmptyParts) ); - foreach( const QString &sIndex, indexChain ) - { - bool ok; - int i = sIndex.toInt( &ok ); - if( !ok ) - break; - - if( i < 0 || i >= node->childCount() ) - break; - - node = node->child( i ); - nodeIndex = index( i, 0, nodeIndex ); - } - emit dataChanged( index( 0, 0, nodeIndex ), index( node->childCount(), 0, nodeIndex ) ); + Q_UNUSED(groupAddress); + resetModel(); + emit bookmarkChangedFinished(); } @@ -322,3 +328,86 @@ void BookmarksTreeModel::populate( BtmItem *node, KBookmarkGroup bmg) bm = bmg.next( bm ); } } + + +KBookmark BookmarksTreeModel::bookmarkForIndex(const QModelIndex index) const +{ + return static_cast(index.internalPointer())->getBkm(); +} + + +Qt::DropActions BookmarksTreeModel::supportedDropActions () const +{ + return Qt::MoveAction; +} + + +QStringList BookmarksTreeModel::mimeTypes () const +{ + return KBookmark::List::mimeDataTypes(); +} + + +QMimeData* BookmarksTreeModel::mimeData( const QModelIndexList & indexes ) const +{ + QMimeData *mimeData = new QMimeData; + + QByteArray addresse = bookmarkForIndex(indexes.first()).address().toLatin1(); + mimeData->setData( "application/rekonq-bookmark", addresse); + bookmarkForIndex(indexes.first()).populateMimeData(mimeData); + + return mimeData; +} + + +bool BookmarksTreeModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex & parent) +{ + if(action == Qt::MoveAction) + { + if(data->hasFormat("application/rekonq-bookmark")) + { + QByteArray addresses = data->data("application/rekonq-bookmark"); + KBookmark bookmark = Application::bookmarkProvider()->bookmarkManager()->findByAddress(QString::fromLatin1(addresses.data())); + + QModelIndex destIndex = index(row, column, parent); + + KBookmark dropDestBookmark; + if(destIndex.isValid()) + dropDestBookmark = bookmarkForIndex(destIndex); + + KBookmarkGroup root = Application::bookmarkProvider()->rootGroup(); + if(parent.isValid()) + root = bookmarkForIndex(parent).toGroup(); + + if(!destIndex.isValid()) + { + if(!parent.isValid()) // Drop into a blank area + { + Application::bookmarkProvider()->rootGroup().deleteBookmark(bookmark); + Application::bookmarkProvider()->rootGroup().addBookmark(bookmark); + } + else // Drop at the last item of the group or directly on the main item of the group + { + root.deleteBookmark(bookmark); + root.addBookmark(bookmark); + } + } + + else + { + if(row == -1) + { + root.deleteBookmark(bookmark); + root.addBookmark(bookmark); + } + else // A classic drop + { + root.moveBookmark(bookmark, root.previous(dropDestBookmark)); + } + } + + Application::bookmarkProvider()->bookmarkManager()->emitChanged(root); + } + } + return true; +} diff --git a/src/bookmarks/bookmarkstreemodel.h b/src/bookmarks/bookmarkstreemodel.h index dfad52ba..4ff19e5f 100644 --- a/src/bookmarks/bookmarkstreemodel.h +++ b/src/bookmarks/bookmarkstreemodel.h @@ -38,6 +38,26 @@ // Qt Includes #include +class BtmItem +{ +public: + BtmItem(const KBookmark &bm); + ~BtmItem(); + QVariant data( int role = Qt::DisplayRole ) const; + int row() const; + int childCount() const; + BtmItem* child( int n ); + BtmItem* parent() const; + void appendChild(BtmItem *child); + void clear(); + KBookmark getBkm() const; + +private: + BtmItem *m_parent; + QList< BtmItem* > m_children; + KBookmark m_kbm; +}; + class REKONQ_TESTS_EXPORT BookmarksTreeModel : public QAbstractItemModel { @@ -48,28 +68,33 @@ public: explicit BookmarksTreeModel(QObject *parent = 0); ~BookmarksTreeModel(); - virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; + virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; - virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; - virtual Qt::ItemFlags flags(const QModelIndex &index) const; + virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; + virtual Qt::ItemFlags flags(const QModelIndex &index) const; - virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; + virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex parent(const QModelIndex &index) const; - virtual QVariant data(const QModelIndex &index, int role) const; -// virtual bool setData(const QModelIndex &index, const QVariant &value, int role); + virtual QVariant data(const QModelIndex &index, int role) const; -private slots: - void bookmarksChanged( const QString &groupAddress ); + virtual QStringList mimeTypes () const; + virtual bool dropMimeData(const QMimeData * data, Qt::DropAction action, int row, int column, const QModelIndex & parent); + virtual Qt::DropActions supportedDropActions () const; + virtual QMimeData *mimeData( const QModelIndexList & indexes ) const; -private: - class BtmItem; - BtmItem *m_root; +private slots: + void bookmarksChanged( const QString &groupAddress ); - void resetModel(); +signals: + void bookmarkChangedFinished(); +private: + BtmItem *m_root; + void resetModel(); void setRoot(KBookmarkGroup bmg); - void populate( BtmItem *node, KBookmarkGroup bmg); + void populate( BtmItem *node, KBookmarkGroup bmg); + KBookmark bookmarkForIndex(const QModelIndex index) const; }; #endif // BOOKMARKSTREEMODEL_H -- cgit v1.2.1 From 9ede70edadea14f3a1ee4d66ca03ec20a6133f72 Mon Sep 17 00:00:00 2001 From: Yoann Laissus Date: Thu, 25 Mar 2010 12:22:04 +0100 Subject: Add tests for the bookmark before toGroup() --- src/bookmarks/bookmarkspanel.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarkspanel.cpp b/src/bookmarks/bookmarkspanel.cpp index c50ebcdb..fdf1b3d8 100644 --- a/src/bookmarks/bookmarkspanel.cpp +++ b/src/bookmarks/bookmarkspanel.cpp @@ -157,13 +157,16 @@ void BookmarksPanel::autoExpand(const QModelIndex &root) { int count = m_treeView->model()->rowCount(root); - QModelIndex temp; + QModelIndex index; for(int i = 0; i < count; i++) { - temp = m_treeView->model()->index(i,0,root); - m_treeView->setExpanded(temp, bookmarkForIndex(temp).toGroup().isOpen()); - autoExpand(temp); + index = m_treeView->model()->index(i, 0, root); + if(index.isValid() && bookmarkForIndex(index).isGroup()) + { + m_treeView->setExpanded(index, bookmarkForIndex(index).toGroup().isOpen()); + autoExpand(index); + } } } @@ -369,7 +372,7 @@ void BookmarksPanel::editBookmark() void BookmarksPanel::openAll() { QModelIndex index = m_treeView->currentIndex(); - if(!index.isValid()) + if(!index.isValid() || !bookmarkForIndex(index).isGroup()) return; QList allChild = bookmarkForIndex(index).toGroup().groupUrlList(); -- cgit v1.2.1 From 632389517ca496031bb1cbe468d904884961bf57 Mon Sep 17 00:00:00 2001 From: Yoann Laissus Date: Sat, 27 Mar 2010 19:04:11 +0100 Subject: - Fix a crash when the cancel button of the add bookmark menu is clicked - Use the same behaviour for delete bookmark as the toolbar - Some strings changed - Keep the selection of a folder when it's expanded/collapsed - Fix the name of some methods and properties - Code cleaned a bit --- src/bookmarks/bookmarkspanel.cpp | 153 +++++++++++++++++++---------------- src/bookmarks/bookmarkspanel.h | 19 ++--- src/bookmarks/bookmarkstreemodel.cpp | 24 ++++-- src/bookmarks/bookmarkstreemodel.h | 7 +- 4 files changed, 116 insertions(+), 87 deletions(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarkspanel.cpp b/src/bookmarks/bookmarkspanel.cpp index fdf1b3d8..c5c2f548 100644 --- a/src/bookmarks/bookmarkspanel.cpp +++ b/src/bookmarks/bookmarkspanel.cpp @@ -55,8 +55,7 @@ BookmarksPanel::BookmarksPanel(const QString &title, QWidget *parent, Qt::Window : QDockWidget(title, parent, flags), m_treeView(new UrlTreeView(this)), m_ac(new KActionCollection(this)), - menu(new KMenu(this)), - expandLock(false) + m_loadingState(false) { setup(); setupActions(); @@ -119,41 +118,41 @@ void BookmarksPanel::setup() connect(m_treeView, SIGNAL(collapsed(const QModelIndex &)), this, SLOT(onCollapse(const QModelIndex &))); connect(m_treeView, SIGNAL(expanded(const QModelIndex &)), this, SLOT(onExpand(const QModelIndex &))); connect(search, SIGNAL(textChanged(const QString &)), proxy, SLOT(setFilterFixedString(const QString &))); - callAutoExpand(); + loadFoldedState(); } void BookmarksPanel::onCollapse(const QModelIndex &index) { - if(expandLock) + if(m_loadingState) return; KBookmark bookmark = bookmarkForIndex(index); bookmark.internalElement().setAttribute("folded", "yes"); - Application::bookmarkProvider()->bookmarkManager()->emitChanged(); + emit saveOnlyRequested(); } void BookmarksPanel::onExpand(const QModelIndex &index) { - if(expandLock) + if(m_loadingState) return; KBookmark bookmark = bookmarkForIndex(index); bookmark.internalElement().setAttribute("folded", "no"); - Application::bookmarkProvider()->bookmarkManager()->emitChanged(); + emit saveOnlyRequested(); } -void BookmarksPanel::callAutoExpand() +void BookmarksPanel::loadFoldedState() { - expandLock = true; - autoExpand(); - expandLock = false; + m_loadingState = true; + loadFoldedState(QModelIndex()); + m_loadingState = false; } -void BookmarksPanel::autoExpand(const QModelIndex &root) +void BookmarksPanel::loadFoldedState(const QModelIndex &root) { int count = m_treeView->model()->rowCount(root); @@ -165,7 +164,7 @@ void BookmarksPanel::autoExpand(const QModelIndex &root) if(index.isValid() && bookmarkForIndex(index).isGroup()) { m_treeView->setExpanded(index, bookmarkForIndex(index).toGroup().isOpen()); - autoExpand(index); + loadFoldedState(index); } } } @@ -177,47 +176,47 @@ void BookmarksPanel::setupActions() action = new KAction(KIcon("tab-new"), i18n("Open"), this); connect(action, SIGNAL(triggered()), m_treeView, SLOT(openInCurrentTab())); - m_ac.addAction("open", action); + m_ac->addAction("open", action); action = new KAction(KIcon("tab-new"), i18n("Open in New Tab"), this); connect(action, SIGNAL(triggered()), m_treeView, SLOT(openInNewTab())); - m_ac.addAction("open_tab", action); + m_ac->addAction("open_tab", action); action = new KAction(KIcon("window-new"), i18n("Open in New Window"), this); connect(action, SIGNAL(triggered()), m_treeView, SLOT(openInNewWindow())); - m_ac.addAction("open_window", action); + m_ac->addAction("open_window", action); - action = new KAction(KIcon("rating"), i18n("Bookmark Page"), this); + action = new KAction(KIcon("rating"), i18n("Bookmark Current Page"), this); connect(action, SIGNAL(triggered()), this, SLOT(bookmarkPage())); - m_ac.addAction("bookmark_page", action); + m_ac->addAction("bookmark_page", action); action = new KAction(KIcon("bookmark-new"), i18n("New Bookmark"), this); connect(action, SIGNAL(triggered()), this, SLOT(newBookmark())); - m_ac.addAction("bookmark_new", action); + m_ac->addAction("bookmark_new", action); action = new KAction(KIcon("folder-new"), i18n("New Bookmark Folder"), this); connect(action, SIGNAL(triggered()), this, SLOT(newBookmarkGroup())); - m_ac.addAction("folder_new", action); + m_ac->addAction("folder_new", action); action = new KAction(KIcon("edit-clear"), i18n("New Separator"), this); connect(action, SIGNAL(triggered()), this, SLOT(newSeparator())); - m_ac.addAction("separator_new", action); + m_ac->addAction("separator_new", action); - action = new KAction(KIcon("edit-copy"), i18n("Copy Link"), this); + action = new KAction(KIcon("edit-copy"), i18n("Copy Link Adress"), this); connect(action, SIGNAL(triggered()), m_treeView, SLOT(copyToClipboard())); - m_ac.addAction("copy", action); + m_ac->addAction("copy", action); - action = new KAction(KIcon("edit-delete"), i18n("Delete"), this); + action = new KAction(KIcon("edit-delete"), i18n("Delete Bookmark"), this); connect(action, SIGNAL(triggered()), this, SLOT(deleteBookmark())); - m_ac.addAction("delete", action); + m_ac->addAction("delete", action); action = new KAction(KIcon("configure"), i18n("Properties"), this); connect(action, SIGNAL(triggered()), this, SLOT(editBookmark())); - m_ac.addAction("properties", action); + m_ac->addAction("properties", action); - action = new KAction(KIcon("tab-new"), i18n("Open all Bookmarks"), this); - connect(action, SIGNAL(triggered()), this, SLOT(openAll())); - m_ac.addAction("open_all", action); + action = new KAction(KIcon("tab-new"), i18n("Open Folder in Tabs"), this); + connect(action, SIGNAL(triggered()), this, SLOT(openFolderInTabs())); + m_ac->addAction("open_all", action); } @@ -238,7 +237,7 @@ void BookmarksPanel::contextMenuBk(const QPoint &pos) { QPoint position = m_treeView->mapToGlobal(pos); QModelIndex index = m_treeView->indexAt(pos); - if(!index.isValid() || expandLock) + if(!index.isValid() || m_loadingState) return; KBookmark selected = bookmarkForIndex(index); @@ -255,27 +254,27 @@ void BookmarksPanel::contextMenuBk(const QPoint &pos) return; } - menu = new KMenu(this); + KMenu *menu = new KMenu(this); - menu->addAction(m_ac.action("open")); - menu->addAction(m_ac.action("open_tab")); - menu->addAction(m_ac.action("open_window")); + menu->addAction(m_ac->action("open")); + menu->addAction(m_ac->action("open_tab")); + menu->addAction(m_ac->action("open_window")); menu->addSeparator(); - menu->addAction(m_ac.action("bookmark_page")); - menu->addAction(m_ac.action("bookmark_new")); - menu->addAction(m_ac.action("folder_new")); - menu->addAction(m_ac.action("separator_new")); + menu->addAction(m_ac->action("bookmark_page")); + menu->addAction(m_ac->action("bookmark_new")); + menu->addAction(m_ac->action("folder_new")); + menu->addAction(m_ac->action("separator_new")); menu->addSeparator(); - menu->addAction(m_ac.action("copy")); + menu->addAction(m_ac->action("copy")); menu->addSeparator(); - menu->addAction(m_ac.action("delete")); - menu->addAction(m_ac.action("properties")); + menu->addAction(m_ac->action("delete")); + menu->addAction(m_ac->action("properties")); menu->popup(position); } @@ -283,27 +282,27 @@ void BookmarksPanel::contextMenuBk(const QPoint &pos) void BookmarksPanel::contextMenuBkGroup(const QPoint &pos, bool emptyGroup) { - if(expandLock) + if(m_loadingState) return; QPoint position = m_treeView->mapToGlobal(pos); - menu = new KMenu(this); + KMenu *menu = new KMenu(this); if(!emptyGroup) { - menu->addAction(m_ac.action("open_all")); + menu->addAction(m_ac->action("open_all")); menu->addSeparator(); } - menu->addAction(m_ac.action("bookmark_page")); - menu->addAction(m_ac.action("bookmark_new")); - menu->addAction(m_ac.action("folder_new")); - menu->addAction(m_ac.action("separator_new")); + menu->addAction(m_ac->action("bookmark_page")); + menu->addAction(m_ac->action("bookmark_new")); + menu->addAction(m_ac->action("folder_new")); + menu->addAction(m_ac->action("separator_new")); menu->addSeparator(); - menu->addAction(m_ac.action("delete")); - menu->addAction(m_ac.action("properties")); + menu->addAction(m_ac->action("delete")); + menu->addAction(m_ac->action("properties")); menu->popup(position); } @@ -312,16 +311,16 @@ void BookmarksPanel::contextMenuBkGroup(const QPoint &pos, bool emptyGroup) void BookmarksPanel::contextMenuSeparator(const QPoint &pos) { QPoint position = m_treeView->mapToGlobal(pos); - menu = new KMenu(this); + KMenu *menu = new KMenu(this); - menu->addAction(m_ac.action("bookmark_page")); - menu->addAction(m_ac.action("bookmark_new")); - menu->addAction(m_ac.action("folder_new")); - menu->addAction(m_ac.action("separator_new")); + menu->addAction(m_ac->action("bookmark_page")); + menu->addAction(m_ac->action("bookmark_new")); + menu->addAction(m_ac->action("folder_new")); + menu->addAction(m_ac->action("separator_new")); menu->addSeparator(); - menu->addAction(m_ac.action("delete")); + menu->addAction(m_ac->action("delete")); menu->popup(position); } @@ -330,12 +329,12 @@ void BookmarksPanel::contextMenuSeparator(const QPoint &pos) void BookmarksPanel::contextMenuBlank(const QPoint &pos) { QPoint position = m_treeView->mapToGlobal(pos); - menu = new KMenu(this); + KMenu *menu = new KMenu(this); - menu->addAction(m_ac.action("bookmark_page")); - menu->addAction(m_ac.action("bookmark_new")); - menu->addAction(m_ac.action("folder_new")); - menu->addAction(m_ac.action("separator_new")); + menu->addAction(m_ac->action("bookmark_page")); + menu->addAction(m_ac->action("bookmark_new")); + menu->addAction(m_ac->action("folder_new")); + menu->addAction(m_ac->action("separator_new")); menu->popup(position); } @@ -347,10 +346,22 @@ void BookmarksPanel::deleteBookmark() if(!index.isValid()) return; - KBookmark selected = bookmarkForIndex(index); - KBookmarkGroup parent = selected.parentGroup(); + KBookmark bm = bookmarkForIndex(index); + bool folder = bm.isGroup(); + + if (KMessageBox::warningContinueCancel( + QApplication::activeWindow(), + folder ? i18n("Are you sure you wish to remove the bookmark folder\n\"%1\"?", bm.text()) + : i18n("Are you sure you wish to remove the bookmark\n\"%1\"?", bm.text()), + folder ? i18n("Bookmark Folder Deletion") + : i18n("Bookmark Deletion"), + KStandardGuiItem::del()) + != KMessageBox::Continue + ) + return; - parent.deleteBookmark(selected); + + bm.parentGroup().deleteBookmark(bm); Application::instance()->bookmarkProvider()->bookmarkManager()->emitChanged(); } @@ -369,7 +380,7 @@ void BookmarksPanel::editBookmark() } -void BookmarksPanel::openAll() +void BookmarksPanel::openFolderInTabs() { QModelIndex index = m_treeView->currentIndex(); if(!index.isValid() || !bookmarkForIndex(index).isGroup()) @@ -402,18 +413,22 @@ void BookmarksPanel::newBookmark() selected = bookmarkForIndex(index); if(selected.isGroup()) - newBk = dialog->addBookmark("New bookmark", KUrl("www.kde.org"), selected); + newBk = dialog->addBookmark("New bookmark", KUrl(), selected); else - newBk = dialog->addBookmark("New bookmark", KUrl("www.kde.org"), selected.parentGroup()); + newBk = dialog->addBookmark("New bookmark", KUrl(), selected.parentGroup()); } else { - newBk = dialog->addBookmark("New bookmark", KUrl("www.kde.org")); + newBk = dialog->addBookmark("New bookmark", KUrl()); } delete dialog; + // a click on cancel + if(newBk.isNull()) + return; + // addBookmark already added the bookmark, but without the default favicon KBookmarkGroup parent = newBk.parentGroup(); parent.deleteBookmark(newBk); @@ -493,7 +508,7 @@ void BookmarksPanel::newSeparator() } -void BookmarksPanel::bookmarkPage() +void BookmarksPanel::bookmarkCurrentPage() { QModelIndex index = m_treeView->currentIndex(); KBookmarkGroup parent = Application::bookmarkProvider()->rootGroup(); diff --git a/src/bookmarks/bookmarkspanel.h b/src/bookmarks/bookmarkspanel.h index ea33e265..be52804f 100644 --- a/src/bookmarks/bookmarkspanel.h +++ b/src/bookmarks/bookmarkspanel.h @@ -40,7 +40,6 @@ // KDE Includes #include #include -#include // Forward Declarations class KUrl; @@ -58,24 +57,24 @@ public: signals: void openUrl(const KUrl &, const Rekonq::OpenType &); void itemHovered(const QString &); - void saveExpFinished(const QString &); - void saveRequested(); + void saveOnlyRequested(); private slots: void contextMenuBk(const QPoint &pos); void contextMenuBkGroup(const QPoint &pos, const bool emptyGroup = false); void contextMenuBlank(const QPoint &pos); void deleteBookmark(); - void openAll(); + void openFolderInTabs(); void editBookmark(); void newBookmark(); void newBookmarkGroup(); void newSeparator(); - void bookmarkPage(); - void autoExpand(const QModelIndex &root = QModelIndex()); void onCollapse(const QModelIndex &index); void onExpand(const QModelIndex &index); - void callAutoExpand(); + void bookmarkCurrentPage(); + void loadFoldedState(const QModelIndex &root); + void loadFoldedState(); + private: void setup(); @@ -84,10 +83,8 @@ private: KBookmark bookmarkForIndex(const QModelIndex &index); UrlTreeView *m_treeView; - QStringList m_expList; - KActionCollection m_ac; - KMenu *menu; - bool expandLock; + KActionCollection *m_ac; + bool m_loadingState; }; #endif // BOOKMARKSPANEL_H diff --git a/src/bookmarks/bookmarkstreemodel.cpp b/src/bookmarks/bookmarkstreemodel.cpp index d63c92d3..836401a6 100644 --- a/src/bookmarks/bookmarkstreemodel.cpp +++ b/src/bookmarks/bookmarkstreemodel.cpp @@ -148,8 +148,9 @@ BookmarksTreeModel::BookmarksTreeModel(QObject *parent) , m_root(0) { resetModel(); - connect( this, SIGNAL(bookmarkChangedFinished()), parent, SLOT(callAutoExpand())); - connect( Application::bookmarkProvider()->bookmarkManager(), SIGNAL( changed(QString,QString) ), this, SLOT( bookmarksChanged(QString) ) ); + connect( this, SIGNAL(bookmarksUpdated()), parent, SLOT(loadFoldedState())); + connect( Application::bookmarkProvider()->bookmarkManager(), SIGNAL( changed(QString,QString) ), this, SLOT( bookmarksChanged() ) ); + connect( parent, SIGNAL(saveOnlyRequested()), this, SLOT(saveOnly()) ); } @@ -283,11 +284,10 @@ QVariant BookmarksTreeModel::data(const QModelIndex &index, int role) const } -void BookmarksTreeModel::bookmarksChanged( const QString &groupAddress ) +void BookmarksTreeModel::bookmarksChanged() { - Q_UNUSED(groupAddress); resetModel(); - emit bookmarkChangedFinished(); + emit bookmarksUpdated(); } @@ -336,6 +336,20 @@ KBookmark BookmarksTreeModel::bookmarkForIndex(const QModelIndex index) const } +void BookmarksTreeModel::saveOnly() +{ + disconnect(Application::bookmarkProvider()->bookmarkManager(), SIGNAL(changed(QString,QString)), this, SLOT(bookmarksChanged())); + connect(Application::bookmarkProvider()->bookmarkManager(), SIGNAL(changed(QString,QString)), this, SLOT(reconnectManager())); + Application::bookmarkProvider()->bookmarkManager()->emitChanged(); +} + + +void BookmarksTreeModel::reconnectManager() +{ + connect(Application::bookmarkProvider()->bookmarkManager(), SIGNAL( changed(QString,QString) ), this, SLOT(bookmarksChanged())); +} + + Qt::DropActions BookmarksTreeModel::supportedDropActions () const { return Qt::MoveAction; diff --git a/src/bookmarks/bookmarkstreemodel.h b/src/bookmarks/bookmarkstreemodel.h index 4ff19e5f..b312ab2d 100644 --- a/src/bookmarks/bookmarkstreemodel.h +++ b/src/bookmarks/bookmarkstreemodel.h @@ -84,13 +84,16 @@ public: virtual QMimeData *mimeData( const QModelIndexList & indexes ) const; private slots: - void bookmarksChanged( const QString &groupAddress ); + void bookmarksChanged(); + void saveOnly(); + void reconnectManager(); signals: - void bookmarkChangedFinished(); + void bookmarksUpdated(); private: BtmItem *m_root; + void resetModel(); void setRoot(KBookmarkGroup bmg); void populate( BtmItem *node, KBookmarkGroup bmg); -- cgit v1.2.1 From f5a40919219ef5210598a87054af34b331ebe31e Mon Sep 17 00:00:00 2001 From: Yoann Laissus Date: Sat, 27 Mar 2010 20:08:59 +0100 Subject: Fix the bookmarkCurrentPage slot name --- src/bookmarks/bookmarkspanel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarkspanel.cpp b/src/bookmarks/bookmarkspanel.cpp index c5c2f548..a1bc4f51 100644 --- a/src/bookmarks/bookmarkspanel.cpp +++ b/src/bookmarks/bookmarkspanel.cpp @@ -187,7 +187,7 @@ void BookmarksPanel::setupActions() m_ac->addAction("open_window", action); action = new KAction(KIcon("rating"), i18n("Bookmark Current Page"), this); - connect(action, SIGNAL(triggered()), this, SLOT(bookmarkPage())); + connect(action, SIGNAL(triggered()), this, SLOT(bookmarkCurrentPage())); m_ac->addAction("bookmark_page", action); action = new KAction(KIcon("bookmark-new"), i18n("New Bookmark"), this); -- cgit v1.2.1 From a3020fb4be790a79af806b4d22b5d9bdc790ee7f Mon Sep 17 00:00:00 2001 From: Yoann Laissus Date: Sat, 27 Mar 2010 20:20:12 +0100 Subject: Fix missing strings on the history panel --- src/bookmarks/bookmarkspanel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarkspanel.cpp b/src/bookmarks/bookmarkspanel.cpp index a1bc4f51..c249566d 100644 --- a/src/bookmarks/bookmarkspanel.cpp +++ b/src/bookmarks/bookmarkspanel.cpp @@ -202,7 +202,7 @@ void BookmarksPanel::setupActions() connect(action, SIGNAL(triggered()), this, SLOT(newSeparator())); m_ac->addAction("separator_new", action); - action = new KAction(KIcon("edit-copy"), i18n("Copy Link Adress"), this); + action = new KAction(KIcon("edit-copy"), i18n("Copy Link Address"), this); connect(action, SIGNAL(triggered()), m_treeView, SLOT(copyToClipboard())); m_ac->addAction("copy", action); -- cgit v1.2.1 From 6183e8e1c21807299f04f4e84c43486cf684f140 Mon Sep 17 00:00:00 2001 From: Yoann Laissus Date: Sat, 27 Mar 2010 22:17:20 +0100 Subject: - Remove the Add Bookmark action from the different context menus - Add Bookmark Here now add the bookmark on top of the selected item - ctor initialisation for the UrlTreeView of the history panel --- src/bookmarks/bookmarkspanel.cpp | 55 ++-------------------------------------- src/bookmarks/bookmarkspanel.h | 1 - 2 files changed, 2 insertions(+), 54 deletions(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarkspanel.cpp b/src/bookmarks/bookmarkspanel.cpp index c249566d..2f530c6c 100644 --- a/src/bookmarks/bookmarkspanel.cpp +++ b/src/bookmarks/bookmarkspanel.cpp @@ -186,14 +186,10 @@ void BookmarksPanel::setupActions() connect(action, SIGNAL(triggered()), m_treeView, SLOT(openInNewWindow())); m_ac->addAction("open_window", action); - action = new KAction(KIcon("rating"), i18n("Bookmark Current Page"), this); + action = new KAction(KIcon("bookmark-new"), i18n("Add Bookmark Here"), this); connect(action, SIGNAL(triggered()), this, SLOT(bookmarkCurrentPage())); m_ac->addAction("bookmark_page", action); - action = new KAction(KIcon("bookmark-new"), i18n("New Bookmark"), this); - connect(action, SIGNAL(triggered()), this, SLOT(newBookmark())); - m_ac->addAction("bookmark_new", action); - action = new KAction(KIcon("folder-new"), i18n("New Bookmark Folder"), this); connect(action, SIGNAL(triggered()), this, SLOT(newBookmarkGroup())); m_ac->addAction("folder_new", action); @@ -263,7 +259,6 @@ void BookmarksPanel::contextMenuBk(const QPoint &pos) menu->addSeparator(); menu->addAction(m_ac->action("bookmark_page")); - menu->addAction(m_ac->action("bookmark_new")); menu->addAction(m_ac->action("folder_new")); menu->addAction(m_ac->action("separator_new")); @@ -295,7 +290,6 @@ void BookmarksPanel::contextMenuBkGroup(const QPoint &pos, bool emptyGroup) } menu->addAction(m_ac->action("bookmark_page")); - menu->addAction(m_ac->action("bookmark_new")); menu->addAction(m_ac->action("folder_new")); menu->addAction(m_ac->action("separator_new")); @@ -314,7 +308,6 @@ void BookmarksPanel::contextMenuSeparator(const QPoint &pos) KMenu *menu = new KMenu(this); menu->addAction(m_ac->action("bookmark_page")); - menu->addAction(m_ac->action("bookmark_new")); menu->addAction(m_ac->action("folder_new")); menu->addAction(m_ac->action("separator_new")); @@ -332,7 +325,6 @@ void BookmarksPanel::contextMenuBlank(const QPoint &pos) KMenu *menu = new KMenu(this); menu->addAction(m_ac->action("bookmark_page")); - menu->addAction(m_ac->action("bookmark_new")); menu->addAction(m_ac->action("folder_new")); menu->addAction(m_ac->action("separator_new")); @@ -399,49 +391,6 @@ void BookmarksPanel::openFolderInTabs() } -void BookmarksPanel::newBookmark() -{ - QModelIndex index = m_treeView->currentIndex(); - - KBookmark selected; - KBookmark newBk; - - KBookmarkDialog *dialog = Application::bookmarkProvider()->bookmarkOwner()->bookmarkDialog(Application::bookmarkProvider()->bookmarkManager(), QApplication::activeWindow()); - - if(index.isValid()) - { - selected = bookmarkForIndex(index); - - if(selected.isGroup()) - newBk = dialog->addBookmark("New bookmark", KUrl(), selected); - else - newBk = dialog->addBookmark("New bookmark", KUrl(), selected.parentGroup()); - } - - else - { - newBk = dialog->addBookmark("New bookmark", KUrl()); - } - - delete dialog; - - // a click on cancel - if(newBk.isNull()) - return; - - // addBookmark already added the bookmark, but without the default favicon - KBookmarkGroup parent = newBk.parentGroup(); - parent.deleteBookmark(newBk); - newBk.setIcon(("text-html")); - parent.addBookmark(newBk); - - if(index.isValid()) - parent.moveBookmark(newBk, selected); - - Application::bookmarkProvider()->bookmarkManager()->emitChanged(); -} - - void BookmarksPanel::newBookmarkGroup() { QModelIndex index = m_treeView->currentIndex(); @@ -522,7 +471,7 @@ void BookmarksPanel::bookmarkCurrentPage() parent = selected.toGroup(); KBookmark newBk = parent.addBookmark(Application::bookmarkProvider()->bookmarkOwner()->currentTitle(), KUrl(Application::bookmarkProvider()->bookmarkOwner()->currentUrl()), "text-html"); - parent.moveBookmark(newBk, selected); + parent.moveBookmark(newBk, selected.parentGroup().previous(selected)); } else diff --git a/src/bookmarks/bookmarkspanel.h b/src/bookmarks/bookmarkspanel.h index be52804f..f8528b71 100644 --- a/src/bookmarks/bookmarkspanel.h +++ b/src/bookmarks/bookmarkspanel.h @@ -66,7 +66,6 @@ private slots: void deleteBookmark(); void openFolderInTabs(); void editBookmark(); - void newBookmark(); void newBookmarkGroup(); void newSeparator(); void onCollapse(const QModelIndex &index); -- cgit v1.2.1 From 942c55b945443a2e6dd9a2d3660347fc2176630a Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Mon, 29 Mar 2010 11:47:42 +0200 Subject: This commit merge all our work about new UrlBar. DISCLAIMER: this is far from perfect, but we finally have a good starting point to work on.. :) Jonas Gastal started working on it in the 0.3 times, startin from CompletionBase code .. .. I did some work on another idea, proposing (in code) a new "suggest engine" created from scratch... Lionel Chauvin finally merged our ideas and implemented what you are seeing (and improved it, too!).. - New suggestion items (Firefox style) - a mockup on the known urls (rekonq style) - for now, automatic Google and Wikipedia searches (more coming).. - a beautiful animation :) - quite all rough edges smoothed -------------------------------------------------------- Squashed commit of the following: commit d9cf43da421c7f6c71f78444ff1935c414468b98 commit 9dcb6e18f8a3e9ae8ef1cd1299d47d37393aa6e5 commit 6c4bf2b2040ea20c78c5703f20c6bc88b7e40169 commit 8488df67115d186489f34210b638c150c66f62d3 commit 066ab907661282b1ffa4cf640739c20b4c7b6556 commit c23e23cbca7ab3197c570651a95d3f8fea270d78 commit 60655b0a8685a76e2b8b7a457bfded974bc98b4c commit 9a8817db124b55f501c9e5d3415a975ee6f92d68 commit 61312b6b577a535a4d56758b3bd3ea38812d5139 commit b6a3f4ea12423a063eafa641cedd13b890b9d392 commit 5e8e2f851edb42bc2deed296c26c58c3d7570381 commit 2904d828f71ac8ff46a53e58da8f45b5aa16e7ef --------------------------------------------------------- --- src/bookmarks/bookmarksmanager.cpp | 14 +++++++++++++- src/bookmarks/bookmarksmanager.h | 7 +++++++ 2 files changed, 20 insertions(+), 1 deletion(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarksmanager.cpp b/src/bookmarks/bookmarksmanager.cpp index 9feed63a..89e39ef8 100644 --- a/src/bookmarks/bookmarksmanager.cpp +++ b/src/bookmarks/bookmarksmanager.cpp @@ -161,7 +161,12 @@ BookmarkProvider::BookmarkProvider(QObject *parent) , m_actionCollection(new KActionCollection(this)) , m_bookmarkMenu(0) , m_bookmarkToolBar(0) + , m_completion(0) { + // take care of the completion object + m_completion = new KCompletion; + m_completion->setOrder( KCompletion::Weighted ); + KUrl bookfile = KUrl("~/.kde/share/apps/konqueror/bookmarks.xml"); // share konqueror bookmarks if (!QFile::exists(bookfile.path())) @@ -222,6 +227,7 @@ void BookmarkProvider::slotBookmarksChanged(const QString &group, const QString return; m_bookmarkToolBar->clear(); // FIXME CRASH + m_completion->clear(); KBookmark bookmark = toolBarGroup.first(); while (!bookmark.isNull()) @@ -287,7 +293,8 @@ KAction *BookmarkProvider::fillBookmarkBar(const KBookmark &bookmark) return a; } else - { + { + m_completion->addItem(bookmark.url().path()); return new KBookmarkAction(bookmark, m_owner, this); } } @@ -297,3 +304,8 @@ KBookmarkGroup BookmarkProvider::rootGroup() { return m_manager->root(); } + +KCompletion *BookmarkProvider::completionObject() const +{ + return m_completion; +} diff --git a/src/bookmarks/bookmarksmanager.h b/src/bookmarks/bookmarksmanager.h index e50148e4..18ff3ef0 100644 --- a/src/bookmarks/bookmarksmanager.h +++ b/src/bookmarks/bookmarksmanager.h @@ -39,6 +39,7 @@ // KDE Includes #include +#include // Forward Declarations class BookmarkProvider; @@ -213,6 +214,11 @@ public: KBookmarkManager *bookmarkManager() { return m_manager; } BookmarkOwner *bookmarkOwner() { return m_owner; } + /** + * @returns the KCompletion object. + */ + KCompletion *completionObject() const; + signals: /** * @short This signal is emitted when an url has to be loaded @@ -247,6 +253,7 @@ private: KActionCollection *m_actionCollection; BookmarkMenu *m_bookmarkMenu; KToolBar *m_bookmarkToolBar; + KCompletion *m_completion; }; #endif -- cgit v1.2.1 From b1f39e13b1d2199b2f8a9bef3c213715a36dd146 Mon Sep 17 00:00:00 2001 From: megabigbug Date: Mon, 29 Mar 2010 23:20:37 +0200 Subject: add title for bookmarks in the list --- src/bookmarks/bookmarksmanager.cpp | 50 +++++++++++++++++++++++++++++++++++++- src/bookmarks/bookmarksmanager.h | 4 +++ 2 files changed, 53 insertions(+), 1 deletion(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarksmanager.cpp b/src/bookmarks/bookmarksmanager.cpp index 89e39ef8..9c3201e6 100644 --- a/src/bookmarks/bookmarksmanager.cpp +++ b/src/bookmarks/bookmarksmanager.cpp @@ -294,7 +294,7 @@ KAction *BookmarkProvider::fillBookmarkBar(const KBookmark &bookmark) } else { - m_completion->addItem(bookmark.url().path()); + m_completion->addItem(bookmark.url().url()); return new KBookmarkAction(bookmark, m_owner, this); } } @@ -309,3 +309,51 @@ KCompletion *BookmarkProvider::completionObject() const { return m_completion; } + + + + + +QString BookmarkProvider::titleForBookmarkUrl(QString url) +{ + QString title = ""; + KBookmarkGroup bookGroup = Application::bookmarkProvider()->rootGroup(); + if (bookGroup.isNull()) + { + return title; + } + + KBookmark bookmark = bookGroup.first(); + while (!bookmark.isNull() && title.isEmpty()) + { + title = titleForBookmarkUrl(bookmark, url); + bookmark = bookGroup.next(bookmark); + } + + return title; +} + + +QString BookmarkProvider::titleForBookmarkUrl(const KBookmark &bookmark, QString url) +{ + QString title = ""; + if (bookmark.isGroup()) + { + KBookmarkGroup group = bookmark.toGroup(); + KBookmark bm = group.first(); + while (!bm.isNull() && title.isEmpty()) + { + title = titleForBookmarkUrl(bm, url); // it is .bookfolder + bm = group.next(bm); + } + } + else if(!bookmark.isSeparator() && bookmark.url()==url) + { + title = bookmark.fullText(); + } + + return title; +} + + + diff --git a/src/bookmarks/bookmarksmanager.h b/src/bookmarks/bookmarksmanager.h index 18ff3ef0..ace06e95 100644 --- a/src/bookmarks/bookmarksmanager.h +++ b/src/bookmarks/bookmarksmanager.h @@ -219,6 +219,8 @@ public: */ KCompletion *completionObject() const; + QString titleForBookmarkUrl(QString url); + signals: /** * @short This signal is emitted when an url has to be loaded @@ -245,8 +247,10 @@ public slots: */ void slotBookmarksChanged(const QString &group, const QString &caller); + private: KAction *fillBookmarkBar(const KBookmark &bookmark); + QString titleForBookmarkUrl(const KBookmark &bookmark, QString url); KBookmarkManager *m_manager; BookmarkOwner *m_owner; -- cgit v1.2.1 From a2cb9efc54c78c47e41196f0121ca00255a4a7ab Mon Sep 17 00:00:00 2001 From: lionelc Date: Tue, 30 Mar 2010 11:37:25 +0200 Subject: add title for history items --- src/bookmarks/bookmarksmanager.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarksmanager.cpp b/src/bookmarks/bookmarksmanager.cpp index 9c3201e6..95adf387 100644 --- a/src/bookmarks/bookmarksmanager.cpp +++ b/src/bookmarks/bookmarksmanager.cpp @@ -330,6 +330,11 @@ QString BookmarkProvider::titleForBookmarkUrl(QString url) bookmark = bookGroup.next(bookmark); } + if (title.isEmpty()) + { + title = url; + } + return title; } -- cgit v1.2.1 From c28496c854a41baf865fc6e34b9d0453034ee84b Mon Sep 17 00:00:00 2001 From: Yoann Laissus Date: Sat, 3 Apr 2010 23:09:25 +0200 Subject: - Add the control modifier support for back, next and home actions and for the UrlTreeView - Use SettingsOpenTab to open a link in a new tab with the bookmark toolbar --- src/bookmarks/bookmarksmanager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarksmanager.cpp b/src/bookmarks/bookmarksmanager.cpp index 95adf387..6a5417fc 100644 --- a/src/bookmarks/bookmarksmanager.cpp +++ b/src/bookmarks/bookmarksmanager.cpp @@ -66,7 +66,7 @@ void BookmarkOwner::openBookmark(const KBookmark & bookmark, { if (keyboardModifiers & Qt::ControlModifier || mouseButtons == Qt::MidButton) { - emit openUrl(bookmark.url(), Rekonq::NewCurrentTab); + emit openUrl(bookmark.url(), Rekonq::SettingOpenTab); } else { -- cgit v1.2.1 From a48a5a4157e9af22adb3a7673203ed8ced5ceeab Mon Sep 17 00:00:00 2001 From: Yoann Laissus Date: Tue, 6 Apr 2010 12:43:21 +0200 Subject: - Enable context menu for folders and separators of the bookmark bar - Use the same context menu for the bookmark panel and the bookmark bar - Use a list to store the different bookmark bars - Fix the different crashes when there are more than one window - When the bookmarks are changed, all the bars are refreshed --- src/bookmarks/bookmarkcontextmenu.cpp | 309 ++++++++++++++++++++++++++++++++++ src/bookmarks/bookmarkcontextmenu.h | 63 +++++++ src/bookmarks/bookmarksmanager.cpp | 132 +++++++++++---- src/bookmarks/bookmarksmanager.h | 27 ++- src/bookmarks/bookmarkspanel.cpp | 307 +++------------------------------ src/bookmarks/bookmarkspanel.h | 14 +- 6 files changed, 518 insertions(+), 334 deletions(-) create mode 100644 src/bookmarks/bookmarkcontextmenu.cpp create mode 100644 src/bookmarks/bookmarkcontextmenu.h (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarkcontextmenu.cpp b/src/bookmarks/bookmarkcontextmenu.cpp new file mode 100644 index 00000000..ccb63143 --- /dev/null +++ b/src/bookmarks/bookmarkcontextmenu.cpp @@ -0,0 +1,309 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2010 by Yoann Laissus +* +* +* 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 "bookmarkcontextmenu.h" + +// Local Includes +#include "application.h" +#include "bookmarksmanager.h" + +// KDE Includes +#include +#include +#include + + +BookmarkContextMenu::BookmarkContextMenu(const KBookmark & bookmark, KBookmarkManager *manager, KBookmarkOwner *owner, QWidget *parent) + : KBookmarkContextMenu(bookmark, manager, owner, parent) + , m_ac(new KActionCollection(this)) +{ + setupActions(); +} + + +void BookmarkContextMenu::setupActions() +{ + KAction* action; + + action = new KAction(KIcon("tab-new"), i18n("Open"), this); + connect(action, SIGNAL(triggered()), this, SLOT(openInCurrentTab())); + m_ac->addAction("open", action); + + action = new KAction(KIcon("tab-new"), i18n("Open in New Tab"), this); + connect(action, SIGNAL(triggered()), this, SLOT(openInNewTab())); + m_ac->addAction("open_tab", action); + + action = new KAction(KIcon("window-new"), i18n("Open in New Window"), this); + connect(action, SIGNAL(triggered()), this, SLOT(openInNewWindow())); + m_ac->addAction("open_window", action); + + action = new KAction(KIcon("bookmark-new"), i18n("Add Bookmark Here"), this); + connect(action, SIGNAL(triggered()), this, SLOT(bookmarkCurrentPage())); + m_ac->addAction("bookmark_page", action); + + action = new KAction(KIcon("folder-new"), i18n("New Bookmark Folder"), this); + connect(action, SIGNAL(triggered()), this, SLOT(newBookmarkGroup())); + m_ac->addAction("folder_new", action); + + action = new KAction(KIcon("edit-clear"), i18n("New Separator"), this); + connect(action, SIGNAL(triggered()), this, SLOT(newSeparator())); + m_ac->addAction("separator_new", action); + + action = new KAction(KIcon("edit-copy"), i18n("Copy Link Address"), this); + connect(action, SIGNAL(triggered()), this, SLOT(copyToClipboard())); + m_ac->addAction("copy", action); + + action = new KAction(KIcon("edit-delete"), i18n("Delete Bookmark"), this); + connect(action, SIGNAL(triggered()), this, SLOT(deleteBookmark())); + m_ac->addAction("delete", action); + + action = new KAction(KIcon("configure"), i18n("Properties"), this); + connect(action, SIGNAL(triggered()), this, SLOT(editBookmark())); + m_ac->addAction("properties", action); + + action = new KAction(KIcon("tab-new"), i18n("Open Folder in Tabs"), this); + connect(action, SIGNAL(triggered()), this, SLOT(openFolderInTabs())); + m_ac->addAction("open_all", action); +} + + +void BookmarkContextMenu::addBookmarkActions() +{ + addAction(m_ac->action("open")); + addAction(m_ac->action("open_tab")); + addAction(m_ac->action("open_window")); + + addSeparator(); + + addAction(m_ac->action("bookmark_page")); + addAction(m_ac->action("folder_new")); + addAction(m_ac->action("separator_new")); + + addSeparator(); + + addAction(m_ac->action("copy")); + + addSeparator(); + + addAction(m_ac->action("delete")); + addAction(m_ac->action("properties")); +} + + +void BookmarkContextMenu::addFolderActions() +{ + if(!bookmark().toGroup().first().isNull()) + { + addAction(m_ac->action("open_all")); + addSeparator(); + } + + addAction(m_ac->action("bookmark_page")); + addAction(m_ac->action("folder_new")); + addAction(m_ac->action("separator_new")); + + addSeparator(); + + addAction(m_ac->action("delete")); + addAction(m_ac->action("properties")); +} + + +void BookmarkContextMenu::addSeparatorActions() +{ + addAction(m_ac->action("bookmark_page")); + addAction(m_ac->action("folder_new")); + addAction(m_ac->action("separator_new")); + + addSeparator(); + + addAction(m_ac->action("delete")); +} + + +void BookmarkContextMenu::addActions() +{ + if(bookmark().isGroup()) + { + addFolderActions(); + } + + else if(bookmark().isSeparator()) + { + addSeparatorActions(); + } + + else if(bookmark().isNull()) + { + addAction(m_ac->action("bookmark_page")); + addAction(m_ac->action("folder_new")); + addAction(m_ac->action("separator_new")); + } + + else + { + addBookmarkActions(); + } +} + + +void BookmarkContextMenu::openInCurrentTab() +{ + Application::instance()->loadUrl(bookmark().url()); +} + + +void BookmarkContextMenu::openInNewTab() +{ + Application::instance()->loadUrl(bookmark().url(), Rekonq::SettingOpenTab); +} + + +void BookmarkContextMenu::openInNewWindow() +{ + Application::instance()->loadUrl(bookmark().url(), Rekonq::NewWindow); +} + +void BookmarkContextMenu::deleteBookmark() +{ + KBookmark bm = bookmark(); + bool folder = bm.isGroup(); + + if (KMessageBox::warningContinueCancel( + QApplication::activeWindow(), + folder ? i18n("Are you sure you wish to remove the bookmark folder\n\"%1\"?", bm.text()) + : i18n("Are you sure you wish to remove the bookmark\n\"%1\"?", bm.text()), + folder ? i18n("Bookmark Folder Deletion") + : i18n("Bookmark Deletion"), + KStandardGuiItem::del()) + != KMessageBox::Continue + ) + return; + + bm.parentGroup().deleteBookmark(bm); + manager()->emitChanged(); +} + + +void BookmarkContextMenu::editBookmark() +{ + KBookmark selected = bookmark(); + + KBookmarkDialog *dialog = owner()->bookmarkDialog(manager(), QApplication::activeWindow()); + dialog->editBookmark(selected); + delete dialog; +} + + +void BookmarkContextMenu::openFolderInTabs() +{ + if(bookmark().isGroup()) + owner()->openFolderinTabs(bookmark().toGroup()); +} + + +void BookmarkContextMenu::newBookmarkGroup() +{ + KBookmark newBk; + KBookmark selected = bookmark(); + KBookmarkDialog *dialog = owner()->bookmarkDialog(manager(), QApplication::activeWindow()); + + if(!selected.isNull()) + { + if(selected.isGroup()) + { + newBk = dialog->createNewFolder("New folder", selected); + } + + else + { + newBk = dialog->createNewFolder("New folder", selected.parentGroup()); + selected.parentGroup().moveBookmark(newBk, selected); + manager()->emitChanged(); + } + } + else + { + dialog->createNewFolder("New folder"); + } + + delete dialog; +} + + +void BookmarkContextMenu::newSeparator() +{ + KBookmark selected = bookmark(); + KBookmark newBk; + + if(!selected.isNull()) + { + if(selected.isGroup()) + newBk = selected.toGroup().createNewSeparator(); + else + newBk = selected.parentGroup().createNewSeparator(); + } + + else + { + newBk = Application::bookmarkProvider()->rootGroup().createNewSeparator(); + } + + KBookmarkGroup parent = newBk.parentGroup(); + newBk.setIcon(("edit-clear")); + parent.addBookmark(newBk); + + if(!selected.isNull()) + parent.moveBookmark(newBk, selected); + + manager()->emitChanged(); +} + + +void BookmarkContextMenu::bookmarkCurrentPage() +{ + KBookmarkGroup parent = Application::bookmarkProvider()->rootGroup(); + KBookmark selected = bookmark(); + + if(!selected.isNull()) + { + parent = selected.parentGroup(); + + if(selected.isGroup()) + parent = selected.toGroup(); + + KBookmark newBk = parent.addBookmark(owner()->currentTitle(), KUrl(owner()->currentUrl()), "text-html"); + parent.moveBookmark(newBk, selected.parentGroup().previous(selected)); + } + + else + { + parent.addBookmark(owner()->currentTitle(), KUrl(owner()->currentUrl()), "text-html"); + } + + manager()->emitChanged(); +} diff --git a/src/bookmarks/bookmarkcontextmenu.h b/src/bookmarks/bookmarkcontextmenu.h new file mode 100644 index 00000000..38fbc71a --- /dev/null +++ b/src/bookmarks/bookmarkcontextmenu.h @@ -0,0 +1,63 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2010 by Yoann Laissus +* +* +* 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 BOOKMARKCONTEXTMENU_H +#define BOOKMARKCONTEXTMENU_H + +// Local Includes +#include "application.h" + +// Qt Includes +#include + + +class BookmarkContextMenu : public KBookmarkContextMenu +{ + Q_OBJECT +public: + BookmarkContextMenu(const KBookmark & bk, KBookmarkManager * manager, KBookmarkOwner *owner, QWidget * parent = 0); + virtual void addActions(); + +private slots: + void openInCurrentTab(); + void openInNewTab(); + void openInNewWindow(); + void deleteBookmark(); + void openFolderInTabs(); + void editBookmark(); + void newBookmarkGroup(); + void newSeparator(); + void bookmarkCurrentPage(); + +private: + void setupActions(); + void addFolderActions(); + void addBookmarkActions(); + void addSeparatorActions(); + KActionCollection *m_ac; +}; + +#endif // BOOKMARKCONTEXTMENU_H diff --git a/src/bookmarks/bookmarksmanager.cpp b/src/bookmarks/bookmarksmanager.cpp index 6a5417fc..8cdc5d8e 100644 --- a/src/bookmarks/bookmarksmanager.cpp +++ b/src/bookmarks/bookmarksmanager.cpp @@ -34,18 +34,18 @@ #include "mainwindow.h" #include "webtab.h" #include "webview.h" +#include "bookmarkcontextmenu.h" // KDE Includes #include -#include #include #include -#include #include #include #include #include #include +#include // Qt Includes #include @@ -96,6 +96,13 @@ QString BookmarkOwner::currentTitle() const void BookmarkOwner::openFolderinTabs(const KBookmarkGroup &bm) { QList urlList = bm.groupUrlList(); + + if(urlList.length() > 8) + { + if(!(KMessageBox::warningContinueCancel(Application::instance()->mainWindow(), i18n("You are about to open %1 tabs.\nAre you sure ?", QString::number(urlList.length()))) == KMessageBox::Continue)) + return; + } + QList::iterator url; for (url = urlList.begin(); url != urlList.end(); ++url) { @@ -126,12 +133,10 @@ BookmarkMenu::~BookmarkMenu() KMenu *BookmarkMenu::viewContextMenu(QAction *action) { - // contextMenu() returns an invalid KMenu (seg fault) for the folders in the toolbar - KMenu *menu = contextMenu(action); - if(menu) - return menu; - - return 0; // new KMenu(); + KBookmarkActionInterface* act = dynamic_cast(action); + if (!act) + return 0; + return new BookmarkContextMenu(act->bookmark(), manager(), owner()); } @@ -160,7 +165,6 @@ BookmarkProvider::BookmarkProvider(QObject *parent) , m_owner(0) , m_actionCollection(new KActionCollection(this)) , m_bookmarkMenu(0) - , m_bookmarkToolBar(0) , m_completion(0) { // take care of the completion object @@ -204,36 +208,44 @@ BookmarkProvider::~BookmarkProvider() } -void BookmarkProvider::setupBookmarkBar(KToolBar *t) +void BookmarkProvider::setupBookmarkBar(KToolBar *toolbar) { - m_bookmarkToolBar = t; - connect(m_bookmarkToolBar, SIGNAL(customContextMenuRequested(const QPoint &)), + KToolBar *bookmarkToolBar = toolbar; + m_bookmarkToolBars.append(toolbar); + connect(bookmarkToolBar, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(contextMenu(const QPoint &))); slotBookmarksChanged("", ""); } +void BookmarkProvider::removeToolBar(KToolBar *toolbar) +{ + m_bookmarkToolBars.removeOne(toolbar); +} void BookmarkProvider::slotBookmarksChanged(const QString &group, const QString &caller) { Q_UNUSED(group) Q_UNUSED(caller) - if (!m_bookmarkToolBar) - return; - - KBookmarkGroup toolBarGroup = m_manager->toolbar(); - if (toolBarGroup.isNull()) - return; - - m_bookmarkToolBar->clear(); // FIXME CRASH - m_completion->clear(); - - KBookmark bookmark = toolBarGroup.first(); - while (!bookmark.isNull()) + foreach(KToolBar *bookmarkToolBar, m_bookmarkToolBars) { - m_bookmarkToolBar->addAction(fillBookmarkBar(bookmark)); - bookmark = toolBarGroup.next(bookmark); + if (bookmarkToolBar) + { + KBookmarkGroup toolBarGroup = m_manager->toolbar(); + if (toolBarGroup.isNull()) + return; + + bookmarkToolBar->clear(); + m_completion->clear(); + + KBookmark bookmark = toolBarGroup.first(); + while (!bookmark.isNull()) + { + bookmarkToolBar->addAction(fillBookmarkBar(bookmark)); + bookmark = toolBarGroup.next(bookmark); + } + } } } @@ -249,13 +261,22 @@ QAction *BookmarkProvider::actionByName(const QString &name) void BookmarkProvider::contextMenu(const QPoint &point) { - KAction* action = dynamic_cast(m_bookmarkToolBar->actionAt(point)); + if(m_bookmarkToolBars.isEmpty()) + return; + + KToolBar *bookmarkToolBar = m_bookmarkToolBars.at(0); + if(!bookmarkToolBar) + return; + + KAction* action = dynamic_cast(bookmarkToolBar->actionAt(point)); if (!action) return; + KMenu *menu = m_bookmarkMenu->viewContextMenu(action); if (!menu) return; - menu->popup(m_bookmarkToolBar->mapToGlobal(point)); + + menu->popup(bookmarkToolBar->mapToGlobal(point)); } @@ -276,19 +297,23 @@ KAction *BookmarkProvider::fillBookmarkBar(const KBookmark &bookmark) { KBookmarkGroup group = bookmark.toGroup(); KBookmark bm = group.first(); - KActionMenu *menuAction = new KActionMenu(KIcon(bookmark.icon()), bookmark.text(), this); - menuAction->setDelayed(false); + BookmarkActionMenu *menuAction = new BookmarkActionMenu(group, this); + while (!bm.isNull()) { menuAction->addAction(fillBookmarkBar(bm)); bm = group.next(bm); } + + menuAction->addFolderActions(); return menuAction; } if(bookmark.isSeparator()) { - KAction *a = new KAction(this); + KAction *a = new KBookmarkAction(bookmark, m_owner, this); + a->setText(""); + a->setIcon(QIcon()); a->setSeparator(true); return a; } @@ -305,15 +330,13 @@ KBookmarkGroup BookmarkProvider::rootGroup() return m_manager->root(); } + KCompletion *BookmarkProvider::completionObject() const { return m_completion; } - - - QString BookmarkProvider::titleForBookmarkUrl(QString url) { QString title = ""; @@ -361,4 +384,45 @@ QString BookmarkProvider::titleForBookmarkUrl(const KBookmark &bookmark, QString } +// ---------------------------------------------------------------------------------------------- + + +BookmarkActionMenu::BookmarkActionMenu(const KBookmarkGroup &bm, QObject *parent) + : KBookmarkActionMenu(bm, bm.text(), parent) + , m_group(bm) +{ + setIcon(KIcon(bm.icon())); + setDelayed(false); +} + + +void BookmarkActionMenu::addFolderActions() +{ + addSeparator(); + KAction *action; + + if(!m_group.first().isNull()) + { + action = new KAction(KIcon("tab-new"), i18n("Open Folder in Tabs"), this); + connect(action, SIGNAL(triggered(bool)), this, SLOT(openActionInTabs())); + addAction(action); + } + + action = new KAction(KIcon("bookmark-new"), i18n("Add Bookmark Here"), this); + connect(action, SIGNAL(triggered(bool)), this, SLOT(bookmarkCurrentPage())); + addAction(action); +} + + +void BookmarkActionMenu::bookmarkCurrentPage() +{ + m_group.addBookmark(Application::bookmarkProvider()->bookmarkOwner()->currentTitle(), KUrl(Application::bookmarkProvider()->bookmarkOwner()->currentUrl())); + Application::bookmarkProvider()->bookmarkManager()->emitChanged(); +} + +void BookmarkActionMenu::openActionInTabs() +{ + if(!m_group.isNull()) + Application::bookmarkProvider()->bookmarkOwner()->openFolderinTabs(m_group); +} diff --git a/src/bookmarks/bookmarksmanager.h b/src/bookmarks/bookmarksmanager.h index ace06e95..3c21bc67 100644 --- a/src/bookmarks/bookmarksmanager.h +++ b/src/bookmarks/bookmarksmanager.h @@ -194,6 +194,7 @@ public: */ void setupBookmarkBar(KToolBar *); + void removeToolBar(KToolBar*); /** * @short Get action by name @@ -220,7 +221,7 @@ public: KCompletion *completionObject() const; QString titleForBookmarkUrl(QString url); - + signals: /** * @short This signal is emitted when an url has to be loaded @@ -256,8 +257,30 @@ private: BookmarkOwner *m_owner; KActionCollection *m_actionCollection; BookmarkMenu *m_bookmarkMenu; - KToolBar *m_bookmarkToolBar; + QList m_bookmarkToolBars; KCompletion *m_completion; }; + +// ------------------------------------------------------------------------------------------ + + +class BookmarkActionMenu : public KBookmarkActionMenu +{ + Q_OBJECT + +public: + BookmarkActionMenu (const KBookmarkGroup &bm, QObject *parent); + void addFolderActions(); + +private slots: + void openActionInTabs(); + void bookmarkCurrentPage(); + +private: + KBookmarkGroup m_group; + +}; + + #endif diff --git a/src/bookmarks/bookmarkspanel.cpp b/src/bookmarks/bookmarkspanel.cpp index 2f530c6c..6360b313 100644 --- a/src/bookmarks/bookmarkspanel.cpp +++ b/src/bookmarks/bookmarkspanel.cpp @@ -32,6 +32,7 @@ #include "bookmarksmanager.h" #include "bookmarkstreemodel.h" #include "bookmarksproxy.h" +#include "bookmarkcontextmenu.h" // Auto Includes #include "rekonq.h" @@ -39,26 +40,21 @@ // Qt includes #include #include -#include #include // KDE includes #include #include -#include #include -#include #include BookmarksPanel::BookmarksPanel(const QString &title, QWidget *parent, Qt::WindowFlags flags) : QDockWidget(title, parent, flags), m_treeView(new UrlTreeView(this)), - m_ac(new KActionCollection(this)), m_loadingState(false) { setup(); - setupActions(); setShown(ReKonfig::showBookmarksPanel()); } @@ -111,9 +107,9 @@ void BookmarksPanel::setup() proxy->setSourceModel( model ); m_treeView->setModel( proxy ); - connect(m_treeView, SIGNAL(contextMenuItemRequested(const QPoint &)), this, SLOT(contextMenuBk(const QPoint &))); - connect(m_treeView, SIGNAL(contextMenuGroupRequested(const QPoint &)), this, SLOT(contextMenuBkGroup(const QPoint &))); - connect(m_treeView, SIGNAL(contextMenuEmptyRequested(const QPoint &)), this, SLOT(contextMenuBlank(const QPoint &))); + connect(m_treeView, SIGNAL(contextMenuItemRequested(const QPoint &)), this, SLOT(contextMenu(const QPoint &))); + connect(m_treeView, SIGNAL(contextMenuGroupRequested(const QPoint &)), this, SLOT(contextMenu(const QPoint &))); + connect(m_treeView, SIGNAL(contextMenuEmptyRequested(const QPoint &)), this, SLOT(contextMenu(const QPoint &))); connect(m_treeView, SIGNAL(delKeyPressed()), this, SLOT(deleteBookmark())); connect(m_treeView, SIGNAL(collapsed(const QModelIndex &)), this, SLOT(onCollapse(const QModelIndex &))); connect(m_treeView, SIGNAL(expanded(const QModelIndex &)), this, SLOT(onExpand(const QModelIndex &))); @@ -122,6 +118,19 @@ void BookmarksPanel::setup() } +KBookmark BookmarksPanel::bookmarkForIndex(const QModelIndex &index) +{ + if(!index.isValid()) + return KBookmark(); + + const QAbstractProxyModel* proxyModel = dynamic_cast< const QAbstractProxyModel* >(index.model()); + QModelIndex originalIndex = proxyModel->mapToSource(index); + + BtmItem *node = static_cast< BtmItem* >( originalIndex.internalPointer() ); + return node->getBkm(); +} + + void BookmarksPanel::onCollapse(const QModelIndex &index) { if(m_loadingState) @@ -170,165 +179,16 @@ void BookmarksPanel::loadFoldedState(const QModelIndex &root) } -void BookmarksPanel::setupActions() +void BookmarksPanel::contextMenu(const QPoint &pos) { - KAction* action; - - action = new KAction(KIcon("tab-new"), i18n("Open"), this); - connect(action, SIGNAL(triggered()), m_treeView, SLOT(openInCurrentTab())); - m_ac->addAction("open", action); - - action = new KAction(KIcon("tab-new"), i18n("Open in New Tab"), this); - connect(action, SIGNAL(triggered()), m_treeView, SLOT(openInNewTab())); - m_ac->addAction("open_tab", action); - - action = new KAction(KIcon("window-new"), i18n("Open in New Window"), this); - connect(action, SIGNAL(triggered()), m_treeView, SLOT(openInNewWindow())); - m_ac->addAction("open_window", action); - - action = new KAction(KIcon("bookmark-new"), i18n("Add Bookmark Here"), this); - connect(action, SIGNAL(triggered()), this, SLOT(bookmarkCurrentPage())); - m_ac->addAction("bookmark_page", action); - - action = new KAction(KIcon("folder-new"), i18n("New Bookmark Folder"), this); - connect(action, SIGNAL(triggered()), this, SLOT(newBookmarkGroup())); - m_ac->addAction("folder_new", action); - - action = new KAction(KIcon("edit-clear"), i18n("New Separator"), this); - connect(action, SIGNAL(triggered()), this, SLOT(newSeparator())); - m_ac->addAction("separator_new", action); - - action = new KAction(KIcon("edit-copy"), i18n("Copy Link Address"), this); - connect(action, SIGNAL(triggered()), m_treeView, SLOT(copyToClipboard())); - m_ac->addAction("copy", action); - - action = new KAction(KIcon("edit-delete"), i18n("Delete Bookmark"), this); - connect(action, SIGNAL(triggered()), this, SLOT(deleteBookmark())); - m_ac->addAction("delete", action); - - action = new KAction(KIcon("configure"), i18n("Properties"), this); - connect(action, SIGNAL(triggered()), this, SLOT(editBookmark())); - m_ac->addAction("properties", action); - - action = new KAction(KIcon("tab-new"), i18n("Open Folder in Tabs"), this); - connect(action, SIGNAL(triggered()), this, SLOT(openFolderInTabs())); - m_ac->addAction("open_all", action); -} - - -KBookmark BookmarksPanel::bookmarkForIndex(const QModelIndex &index) -{ - if(!index.isValid()) - return KBookmark(); - - const QAbstractProxyModel* proxyModel = dynamic_cast< const QAbstractProxyModel* >(index.model()); - QModelIndex originalIndex = proxyModel->mapToSource(index); - - BtmItem *node = static_cast< BtmItem* >( originalIndex.internalPointer() ); - return node->getBkm(); -} - - -void BookmarksPanel::contextMenuBk(const QPoint &pos) -{ - QPoint position = m_treeView->mapToGlobal(pos); QModelIndex index = m_treeView->indexAt(pos); - if(!index.isValid() || m_loadingState) - return; - - KBookmark selected = bookmarkForIndex(index); - - if(selected.isGroup()) - { - contextMenuBkGroup(pos, true); - return; - } - - if(selected.isSeparator()) - { - contextMenuSeparator(pos); - return; - } - - KMenu *menu = new KMenu(this); - - menu->addAction(m_ac->action("open")); - menu->addAction(m_ac->action("open_tab")); - menu->addAction(m_ac->action("open_window")); - - menu->addSeparator(); - - menu->addAction(m_ac->action("bookmark_page")); - menu->addAction(m_ac->action("folder_new")); - menu->addAction(m_ac->action("separator_new")); - - menu->addSeparator(); - - menu->addAction(m_ac->action("copy")); - - menu->addSeparator(); - - menu->addAction(m_ac->action("delete")); - menu->addAction(m_ac->action("properties")); - - menu->popup(position); -} - - -void BookmarksPanel::contextMenuBkGroup(const QPoint &pos, bool emptyGroup) -{ if(m_loadingState) return; - QPoint position = m_treeView->mapToGlobal(pos); - KMenu *menu = new KMenu(this); - - if(!emptyGroup) - { - menu->addAction(m_ac->action("open_all")); - menu->addSeparator(); - } - - menu->addAction(m_ac->action("bookmark_page")); - menu->addAction(m_ac->action("folder_new")); - menu->addAction(m_ac->action("separator_new")); - - menu->addSeparator(); - - menu->addAction(m_ac->action("delete")); - menu->addAction(m_ac->action("properties")); - - menu->popup(position); -} - - -void BookmarksPanel::contextMenuSeparator(const QPoint &pos) -{ - QPoint position = m_treeView->mapToGlobal(pos); - KMenu *menu = new KMenu(this); - - menu->addAction(m_ac->action("bookmark_page")); - menu->addAction(m_ac->action("folder_new")); - menu->addAction(m_ac->action("separator_new")); - - menu->addSeparator(); - - menu->addAction(m_ac->action("delete")); - - menu->popup(position); -} - - -void BookmarksPanel::contextMenuBlank(const QPoint &pos) -{ - QPoint position = m_treeView->mapToGlobal(pos); - KMenu *menu = new KMenu(this); - - menu->addAction(m_ac->action("bookmark_page")); - menu->addAction(m_ac->action("folder_new")); - menu->addAction(m_ac->action("separator_new")); + KBookmark selected = bookmarkForIndex(index); - menu->popup(position); + BookmarkContextMenu *menu = new BookmarkContextMenu(selected, Application::bookmarkProvider()->bookmarkManager(), Application::bookmarkProvider()->bookmarkOwner(), this); + menu->popup(m_treeView->mapToGlobal(pos)); } @@ -356,128 +216,3 @@ void BookmarksPanel::deleteBookmark() bm.parentGroup().deleteBookmark(bm); Application::instance()->bookmarkProvider()->bookmarkManager()->emitChanged(); } - - -void BookmarksPanel::editBookmark() -{ - QModelIndex index = m_treeView->currentIndex(); - if(!index.isValid()) - return; - - KBookmark selected = bookmarkForIndex(index); - - KBookmarkDialog *dialog = Application::bookmarkProvider()->bookmarkOwner()->bookmarkDialog(Application::bookmarkProvider()->bookmarkManager(), QApplication::activeWindow()); - dialog->editBookmark(selected); - delete dialog; -} - - -void BookmarksPanel::openFolderInTabs() -{ - QModelIndex index = m_treeView->currentIndex(); - if(!index.isValid() || !bookmarkForIndex(index).isGroup()) - return; - - QList allChild = bookmarkForIndex(index).toGroup().groupUrlList(); - - if(allChild.length() > 8) // 8, a good choice ? - { - if(!(KMessageBox::warningContinueCancel(this, i18n("You are about to open a lot of tabs : %1\nAre you sure ?", QString::number(allChild.length()))) == KMessageBox::Continue)) - return; - } - - for(int i = 0; i < allChild.length(); i++) - emit openUrl(allChild.at(i).url(), Rekonq::SettingOpenTab); -} - - -void BookmarksPanel::newBookmarkGroup() -{ - QModelIndex index = m_treeView->currentIndex(); - KBookmark newBk; - - KBookmarkDialog *dialog = Application::bookmarkProvider()->bookmarkOwner()->bookmarkDialog(Application::bookmarkProvider()->bookmarkManager(), QApplication::activeWindow()); - - if(index.isValid()) - { - KBookmark selected = bookmarkForIndex(index); - - if(selected.isGroup()) - { - newBk = dialog->createNewFolder("New folder", selected); - } - - else - { - newBk = dialog->createNewFolder("New folder", selected.parentGroup()); - selected.parentGroup().moveBookmark(newBk, selected); - Application::bookmarkProvider()->bookmarkManager()->emitChanged(); - } - } - - else - { - dialog->createNewFolder("New folder"); - } - - delete dialog; -} - - -void BookmarksPanel::newSeparator() -{ - QModelIndex index = m_treeView->currentIndex(); - - KBookmark selected; - KBookmark newBk; - - if(index.isValid()) - { - selected = bookmarkForIndex(index); - - if(selected.isGroup()) - newBk = selected.toGroup().createNewSeparator(); - else - newBk = selected.parentGroup().createNewSeparator(); - } - - else - { - newBk = Application::bookmarkProvider()->rootGroup().createNewSeparator(); - } - - KBookmarkGroup parent = newBk.parentGroup(); - newBk.setIcon(("edit-clear")); - parent.addBookmark(newBk); - - if(index.isValid()) - parent.moveBookmark(newBk, selected); - - Application::bookmarkProvider()->bookmarkManager()->emitChanged(); -} - - -void BookmarksPanel::bookmarkCurrentPage() -{ - QModelIndex index = m_treeView->currentIndex(); - KBookmarkGroup parent = Application::bookmarkProvider()->rootGroup(); - - if(index.isValid()) - { - KBookmark selected = bookmarkForIndex(index); - parent = selected.parentGroup(); - - if(selected.isGroup()) - parent = selected.toGroup(); - - KBookmark newBk = parent.addBookmark(Application::bookmarkProvider()->bookmarkOwner()->currentTitle(), KUrl(Application::bookmarkProvider()->bookmarkOwner()->currentUrl()), "text-html"); - parent.moveBookmark(newBk, selected.parentGroup().previous(selected)); - } - - else - { - parent.addBookmark(Application::bookmarkProvider()->bookmarkOwner()->currentTitle(), KUrl(Application::bookmarkProvider()->bookmarkOwner()->currentUrl()), "text-html"); - } - - Application::bookmarkProvider()->bookmarkManager()->emitChanged(); -} diff --git a/src/bookmarks/bookmarkspanel.h b/src/bookmarks/bookmarkspanel.h index f8528b71..374c48f4 100644 --- a/src/bookmarks/bookmarkspanel.h +++ b/src/bookmarks/bookmarkspanel.h @@ -39,7 +39,6 @@ // KDE Includes #include -#include // Forward Declarations class KUrl; @@ -60,29 +59,20 @@ signals: void saveOnlyRequested(); private slots: - void contextMenuBk(const QPoint &pos); - void contextMenuBkGroup(const QPoint &pos, const bool emptyGroup = false); - void contextMenuBlank(const QPoint &pos); + void contextMenu(const QPoint &pos); + void deleteBookmark(); - void openFolderInTabs(); - void editBookmark(); - void newBookmarkGroup(); - void newSeparator(); void onCollapse(const QModelIndex &index); void onExpand(const QModelIndex &index); - void bookmarkCurrentPage(); void loadFoldedState(const QModelIndex &root); void loadFoldedState(); private: void setup(); - void setupActions(); - void contextMenuSeparator(const QPoint &pos); KBookmark bookmarkForIndex(const QModelIndex &index); UrlTreeView *m_treeView; - KActionCollection *m_ac; bool m_loadingState; }; -- cgit v1.2.1 From c53637d8b4c45b444c5e5d1d74d4a2bc0a34ef97 Mon Sep 17 00:00:00 2001 From: Yoann Laissus Date: Tue, 6 Apr 2010 16:48:05 +0200 Subject: Add a missing slot --- src/bookmarks/bookmarkcontextmenu.cpp | 18 ++++++++++++++++-- src/bookmarks/bookmarkcontextmenu.h | 1 + src/bookmarks/bookmarksmanager.cpp | 2 ++ 3 files changed, 19 insertions(+), 2 deletions(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarkcontextmenu.cpp b/src/bookmarks/bookmarkcontextmenu.cpp index ccb63143..1d50cfe9 100644 --- a/src/bookmarks/bookmarkcontextmenu.cpp +++ b/src/bookmarks/bookmarkcontextmenu.cpp @@ -31,6 +31,9 @@ #include "application.h" #include "bookmarksmanager.h" +// Qt Includes +#include + // KDE Includes #include #include @@ -188,6 +191,17 @@ void BookmarkContextMenu::openInNewWindow() Application::instance()->loadUrl(bookmark().url(), Rekonq::NewWindow); } + +void BookmarkContextMenu::copyToClipboard() +{ + if(bookmark().isNull()) + return; + + QClipboard *cb = QApplication::clipboard(); + cb->setText(bookmark().url().url()); +} + + void BookmarkContextMenu::deleteBookmark() { KBookmark bm = bookmark(); @@ -228,7 +242,6 @@ void BookmarkContextMenu::openFolderInTabs() void BookmarkContextMenu::newBookmarkGroup() { - KBookmark newBk; KBookmark selected = bookmark(); KBookmarkDialog *dialog = owner()->bookmarkDialog(manager(), QApplication::activeWindow()); @@ -236,11 +249,12 @@ void BookmarkContextMenu::newBookmarkGroup() { if(selected.isGroup()) { - newBk = dialog->createNewFolder("New folder", selected); + dialog->createNewFolder("New folder", selected); } else { + KBookmark newBk; newBk = dialog->createNewFolder("New folder", selected.parentGroup()); selected.parentGroup().moveBookmark(newBk, selected); manager()->emitChanged(); diff --git a/src/bookmarks/bookmarkcontextmenu.h b/src/bookmarks/bookmarkcontextmenu.h index 38fbc71a..7f00738a 100644 --- a/src/bookmarks/bookmarkcontextmenu.h +++ b/src/bookmarks/bookmarkcontextmenu.h @@ -45,6 +45,7 @@ private slots: void openInCurrentTab(); void openInNewTab(); void openInNewWindow(); + void copyToClipboard(); void deleteBookmark(); void openFolderInTabs(); void editBookmark(); diff --git a/src/bookmarks/bookmarksmanager.cpp b/src/bookmarks/bookmarksmanager.cpp index 8cdc5d8e..07b0238f 100644 --- a/src/bookmarks/bookmarksmanager.cpp +++ b/src/bookmarks/bookmarksmanager.cpp @@ -218,11 +218,13 @@ void BookmarkProvider::setupBookmarkBar(KToolBar *toolbar) slotBookmarksChanged("", ""); } + void BookmarkProvider::removeToolBar(KToolBar *toolbar) { m_bookmarkToolBars.removeOne(toolbar); } + void BookmarkProvider::slotBookmarksChanged(const QString &group, const QString &caller) { Q_UNUSED(group) -- cgit v1.2.1 From c51282fb7d0092c6a5587e33b1bdfb609290edf1 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Wed, 7 Apr 2010 02:10:20 +0200 Subject: Some stupid not so important fixes --- src/bookmarks/bookmarkcontextmenu.cpp | 7 ++++--- src/bookmarks/bookmarkcontextmenu.h | 2 ++ 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarkcontextmenu.cpp b/src/bookmarks/bookmarkcontextmenu.cpp index 1d50cfe9..dedec097 100644 --- a/src/bookmarks/bookmarkcontextmenu.cpp +++ b/src/bookmarks/bookmarkcontextmenu.cpp @@ -31,14 +31,14 @@ #include "application.h" #include "bookmarksmanager.h" -// Qt Includes -#include - // KDE Includes #include #include #include +// Qt Includes +#include + BookmarkContextMenu::BookmarkContextMenu(const KBookmark & bookmark, KBookmarkManager *manager, KBookmarkOwner *owner, QWidget *parent) : KBookmarkContextMenu(bookmark, manager, owner, parent) @@ -321,3 +321,4 @@ void BookmarkContextMenu::bookmarkCurrentPage() manager()->emitChanged(); } + diff --git a/src/bookmarks/bookmarkcontextmenu.h b/src/bookmarks/bookmarkcontextmenu.h index 7f00738a..2028df39 100644 --- a/src/bookmarks/bookmarkcontextmenu.h +++ b/src/bookmarks/bookmarkcontextmenu.h @@ -37,6 +37,7 @@ class BookmarkContextMenu : public KBookmarkContextMenu { Q_OBJECT + public: BookmarkContextMenu(const KBookmark & bk, KBookmarkManager * manager, KBookmarkOwner *owner, QWidget * parent = 0); virtual void addActions(); @@ -62,3 +63,4 @@ private: }; #endif // BOOKMARKCONTEXTMENU_H + -- cgit v1.2.1 From c5fb79456e9bc46094bddbc5c3375e7d3b4e0a80 Mon Sep 17 00:00:00 2001 From: Yoann Laissus Date: Wed, 7 Apr 2010 03:03:05 +0200 Subject: Add Copyright --- src/bookmarks/bookmarksmanager.cpp | 1 + src/bookmarks/bookmarksmanager.h | 1 + src/bookmarks/bookmarkspanel.cpp | 1 + src/bookmarks/bookmarkspanel.h | 1 + 4 files changed, 4 insertions(+) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarksmanager.cpp b/src/bookmarks/bookmarksmanager.cpp index 07b0238f..31bf2278 100644 --- a/src/bookmarks/bookmarksmanager.cpp +++ b/src/bookmarks/bookmarksmanager.cpp @@ -5,6 +5,7 @@ * Copyright (C) 2008-2010 by Andrea Diamantini * Copyright (C) 2009 by Paweł Prażak * Copyright (C) 2009-2010 by Lionel Chauvin +* Copyright (C) 2010 by Yoann Laissus * * * This program is free software; you can redistribute it and/or diff --git a/src/bookmarks/bookmarksmanager.h b/src/bookmarks/bookmarksmanager.h index 3c21bc67..c8264633 100644 --- a/src/bookmarks/bookmarksmanager.h +++ b/src/bookmarks/bookmarksmanager.h @@ -5,6 +5,7 @@ * Copyright (C) 2008-2010 by Andrea Diamantini * Copyright (C) 2009 by Paweł Prażak * Copyright (C) 2009-2010 by Lionel Chauvin +* Copyright (C) 2010 by Yoann Laissus * * * This program is free software; you can redistribute it and/or diff --git a/src/bookmarks/bookmarkspanel.cpp b/src/bookmarks/bookmarkspanel.cpp index 6360b313..611031b5 100644 --- a/src/bookmarks/bookmarkspanel.cpp +++ b/src/bookmarks/bookmarkspanel.cpp @@ -4,6 +4,7 @@ * * Copyright (C) 2009 by Nils Weigel * Copyright (C) 2010 by Andrea Diamantini +* Copyright (C) 2010 by Yoann Laissus * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as diff --git a/src/bookmarks/bookmarkspanel.h b/src/bookmarks/bookmarkspanel.h index 374c48f4..86794d3a 100644 --- a/src/bookmarks/bookmarkspanel.h +++ b/src/bookmarks/bookmarkspanel.h @@ -4,6 +4,7 @@ * * Copyright (C) 2009 by Nils Weigel * Copyright (C) 2010 by Andrea Diamantini +* Copyright (C) 2010 by Yoann Laissus * * * This program is free software; you can redistribute it and/or -- cgit v1.2.1 From 6a5f7762fa7e2876d63c4adb9a1842acef0c7333 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Wed, 14 Apr 2010 10:39:36 +0200 Subject: Stupid commit :) Renamed urltreeview files to paneltreeviews one to let my konsole tab completion easily work. Blame me for this.. --- src/bookmarks/bookmarkspanel.cpp | 6 +++--- src/bookmarks/bookmarkspanel.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarkspanel.cpp b/src/bookmarks/bookmarkspanel.cpp index 611031b5..0caf0f31 100644 --- a/src/bookmarks/bookmarkspanel.cpp +++ b/src/bookmarks/bookmarkspanel.cpp @@ -51,9 +51,9 @@ BookmarksPanel::BookmarksPanel(const QString &title, QWidget *parent, Qt::WindowFlags flags) - : QDockWidget(title, parent, flags), - m_treeView(new UrlTreeView(this)), - m_loadingState(false) + : QDockWidget(title, parent, flags) + , m_treeView(new PanelTreeView(this)) + , m_loadingState(false) { setup(); setShown(ReKonfig::showBookmarksPanel()); diff --git a/src/bookmarks/bookmarkspanel.h b/src/bookmarks/bookmarkspanel.h index 86794d3a..90597c73 100644 --- a/src/bookmarks/bookmarkspanel.h +++ b/src/bookmarks/bookmarkspanel.h @@ -33,7 +33,7 @@ // Local Includes #include "rekonqprivate_export.h" #include "application.h" -#include "urltreeview.h" +#include "paneltreeview.h" // Qt Includes #include @@ -73,7 +73,7 @@ private: void setup(); KBookmark bookmarkForIndex(const QModelIndex &index); - UrlTreeView *m_treeView; + PanelTreeView *m_treeView; bool m_loadingState; }; -- cgit v1.2.1 From e8e18f0b164c78c2ea410cad0e1e1033b1b24ab2 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Wed, 14 Apr 2010 11:36:47 +0200 Subject: Set default background to white BUG:232552 --- src/bookmarks/bookmarksmanager.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarksmanager.cpp b/src/bookmarks/bookmarksmanager.cpp index 31bf2278..d54abb3c 100644 --- a/src/bookmarks/bookmarksmanager.cpp +++ b/src/bookmarks/bookmarksmanager.cpp @@ -55,8 +55,8 @@ BookmarkOwner::BookmarkOwner(QObject *parent) - : QObject(parent) - , KBookmarkOwner() + : QObject(parent) + , KBookmarkOwner() { } @@ -119,11 +119,10 @@ BookmarkMenu::BookmarkMenu(KBookmarkManager *manager, KBookmarkOwner *owner, KMenu *menu, KActionCollection* actionCollection) - : KBookmarkMenu(manager, owner, menu, actionCollection) + : KBookmarkMenu(manager, owner, menu, actionCollection) { KAction *a = KStandardAction::addBookmark(this, SLOT(slotAddBookmark()), this); -// a->setText(i18n("Bookmark this Page")); actionCollection->addAction(QLatin1String("rekonq_add_bookmark"),a); } -- cgit v1.2.1 From a219ae2f7306d2d513eccf988ad9d2fd679c934c Mon Sep 17 00:00:00 2001 From: Yoann Laissus Date: Wed, 14 Apr 2010 11:58:50 +0200 Subject: Don't create "Open Folder in Tabs" action when there are only folders or separators Implement a missing method : currentBookmarkList() which now allow "Bookmarks Tabs as Folder BUG: 234234 --- src/bookmarks/bookmarksmanager.cpp | 34 ++++++++++++++++++++++++++++++---- src/bookmarks/bookmarksmanager.h | 2 ++ 2 files changed, 32 insertions(+), 4 deletions(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarksmanager.cpp b/src/bookmarks/bookmarksmanager.cpp index d54abb3c..7e933599 100644 --- a/src/bookmarks/bookmarksmanager.cpp +++ b/src/bookmarks/bookmarksmanager.cpp @@ -35,6 +35,7 @@ #include "mainwindow.h" #include "webtab.h" #include "webview.h" +#include "mainview.h" #include "bookmarkcontextmenu.h" // KDE Includes @@ -53,7 +54,6 @@ #include - BookmarkOwner::BookmarkOwner(QObject *parent) : QObject(parent) , KBookmarkOwner() @@ -112,6 +112,22 @@ void BookmarkOwner::openFolderinTabs(const KBookmarkGroup &bm) } +QList< QPair > BookmarkOwner::currentBookmarkList() const +{ + QList< QPair > bkList; + int tabNumber = Application::instance()->mainWindow()->mainView()->count(); + + for(int i = 0; i < tabNumber; i++) + { + QPair item; + item.first = Application::instance()->mainWindow()->mainView()->webTab(i)->view()->title(); + item.second = Application::instance()->mainWindow()->mainView()->webTab(i)->url().url(); + bkList += item; + } + return bkList; +} + + // ------------------------------------------------------------------------------------------------------ @@ -405,9 +421,19 @@ void BookmarkActionMenu::addFolderActions() if(!m_group.first().isNull()) { - action = new KAction(KIcon("tab-new"), i18n("Open Folder in Tabs"), this); - connect(action, SIGNAL(triggered(bool)), this, SLOT(openActionInTabs())); - addAction(action); + KBookmark bookmark = m_group.first(); + + while(bookmark.isGroup() || bookmark.isSeparator()) + { + bookmark = m_group.next(bookmark); + } + + if(!bookmark.isNull()) + { + action = new KAction(KIcon("tab-new"), i18n("Open Folder in Tabs"), this); + connect(action, SIGNAL(triggered(bool)), this, SLOT(openActionInTabs())); + addAction(action); + } } action = new KAction(KIcon("bookmark-new"), i18n("Add Bookmark Here"), this); diff --git a/src/bookmarks/bookmarksmanager.h b/src/bookmarks/bookmarksmanager.h index c8264633..7fb02970 100644 --- a/src/bookmarks/bookmarksmanager.h +++ b/src/bookmarks/bookmarksmanager.h @@ -115,6 +115,8 @@ public: */ virtual void openFolderinTabs(const KBookmarkGroup &bm); + virtual QList< QPair > currentBookmarkList() const; + signals: /** * This signal is emitted when an url has to be loaded -- cgit v1.2.1 From fa2287de034db6ce80dd1d966bde4844350f9e87 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Wed, 14 Apr 2010 16:19:35 +0200 Subject: moc fixes --- src/bookmarks/bookmarkcontextmenu.cpp | 1 + src/bookmarks/bookmarkcontextmenu.h | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarkcontextmenu.cpp b/src/bookmarks/bookmarkcontextmenu.cpp index dedec097..aab6af90 100644 --- a/src/bookmarks/bookmarkcontextmenu.cpp +++ b/src/bookmarks/bookmarkcontextmenu.cpp @@ -26,6 +26,7 @@ // Self Includes #include "bookmarkcontextmenu.h" +#include "bookmarkcontextmenu.moc" // Local Includes #include "application.h" diff --git a/src/bookmarks/bookmarkcontextmenu.h b/src/bookmarks/bookmarkcontextmenu.h index 2028df39..c8c903d8 100644 --- a/src/bookmarks/bookmarkcontextmenu.h +++ b/src/bookmarks/bookmarkcontextmenu.h @@ -63,4 +63,3 @@ private: }; #endif // BOOKMARKCONTEXTMENU_H - -- cgit v1.2.1 From ad1b58215550c99f708a1ef03b5f8f38c179348b Mon Sep 17 00:00:00 2001 From: Yoann Laissus Date: Sat, 17 Apr 2010 16:03:25 +0200 Subject: - Enable context menu for actions inside bookmark bar folder - Reverse bookmarks and bookmark managing option on the bookmarkActionMenu (as we discussed with Lionel) - Common actionMenu between bookmark bars and the bookmarkActionMenu - Use BookmarkContextMenu instead of KBookmarkContextMenu in the bookmarkActionMenu --- src/bookmarks/bookmarksmanager.cpp | 182 ++++++++++++++++++++--------------- src/bookmarks/bookmarksmanager.h | 36 +++---- src/bookmarks/bookmarkstreemodel.cpp | 5 + 3 files changed, 119 insertions(+), 104 deletions(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarksmanager.cpp b/src/bookmarks/bookmarksmanager.cpp index 7e933599..e7b24a09 100644 --- a/src/bookmarks/bookmarksmanager.cpp +++ b/src/bookmarks/bookmarksmanager.cpp @@ -94,9 +94,9 @@ QString BookmarkOwner::currentTitle() const } -void BookmarkOwner::openFolderinTabs(const KBookmarkGroup &bm) +void BookmarkOwner::openFolderinTabs(const KBookmarkGroup &bookmark) { - QList urlList = bm.groupUrlList(); + QList urlList = bookmark.groupUrlList(); if(urlList.length() > 8) { @@ -107,7 +107,7 @@ void BookmarkOwner::openFolderinTabs(const KBookmarkGroup &bm) QList::iterator url; for (url = urlList.begin(); url != urlList.end(); ++url) { - Application::instance()->loadUrl(*url, Rekonq::NewCurrentTab); + emit openUrl(*url, Rekonq::NewCurrentTab); } } @@ -136,23 +136,35 @@ BookmarkMenu::BookmarkMenu(KBookmarkManager *manager, KMenu *menu, KActionCollection* actionCollection) : KBookmarkMenu(manager, owner, menu, actionCollection) - { KAction *a = KStandardAction::addBookmark(this, SLOT(slotAddBookmark()), this); actionCollection->addAction(QLatin1String("rekonq_add_bookmark"),a); + refill(); +} + + +BookmarkMenu::BookmarkMenu(KBookmarkManager *manager, + KBookmarkOwner *owner, + KMenu *parentMenu, + const QString &parentAddress) + : KBookmarkMenu(manager, owner, parentMenu, parentAddress) +{ + refill(); } + BookmarkMenu::~BookmarkMenu() { } -KMenu *BookmarkMenu::viewContextMenu(QAction *action) +KMenu * BookmarkMenu::contextMenu(QAction *act) { - KBookmarkActionInterface* act = dynamic_cast(action); - if (!act) + + KBookmarkActionInterface* action = dynamic_cast(act); + if (!action) return 0; - return new BookmarkContextMenu(act->bookmark(), manager(), owner()); + return new BookmarkContextMenu(action->bookmark(), manager(), owner()); } @@ -172,6 +184,76 @@ void BookmarkMenu::slotAddBookmark() } +QAction * BookmarkMenu::actionForBookmark(const KBookmark &bookmark) +{ + if(bookmark.isGroup()) + { + KBookmarkActionMenu *actionMenu = new KBookmarkActionMenu(bookmark, this); + new BookmarkMenu(manager(), owner(), actionMenu->menu(), bookmark.address()); + return actionMenu; + } + else if(bookmark.isSeparator()) + { + return KBookmarkMenu::actionForBookmark(bookmark); + } + else + { + Application::bookmarkProvider()->completionObject()->addItem(bookmark.url().url()); + return new KBookmarkAction( bookmark, owner(), this ); + } +} + + +void BookmarkMenu::refill() +{ + fillBookmarks(); + + if(parentMenu()->actions().count() > 0) + parentMenu()->addSeparator(); + + if(isRoot()) + { + addAddBookmark(); + addAddBookmarksList(); + addNewFolder(); + addEditBookmarks(); + + } + else + { + addOpenFolderInTabs(); + addAddBookmark(); + addAddBookmarksList(); + addNewFolder(); + } +} + + +void BookmarkMenu::addOpenFolderInTabs() +{ + KAction *action; + KBookmarkGroup group = manager()->findByAddress(parentAddress()).toGroup(); + + if(!group.first().isNull()) + { + KBookmark bookmark = group.first(); + + while(bookmark.isGroup() || bookmark.isSeparator()) + { + bookmark = group.next(bookmark); + } + + if(!bookmark.isNull()) + { + action = new KAction(KIcon("tab-new"), i18n("Open Folder in Tabs"), this); + action->setHelpText( i18n( "Open all bookmarks in this folder as a new tab." ) ); + connect(action, SIGNAL(triggered(bool)), this, SLOT(slotOpenFolderInTabs())); + parentMenu()->addAction(action); + } + } +} + + // ------------------------------------------------------------------------------------------------------ @@ -203,7 +285,7 @@ BookmarkProvider::BookmarkProvider(QObject *parent) bookfile = KUrl(bookmarksPath); } } - // A workaround to avoid a long delay between the two changed signals of the bookmark manager + m_manager = KBookmarkManager::managerForFile(bookfile.path(), "rekonq"); connect(m_manager, SIGNAL(changed(const QString &, const QString &)), @@ -227,8 +309,9 @@ BookmarkProvider::~BookmarkProvider() void BookmarkProvider::setupBookmarkBar(KToolBar *toolbar) { KToolBar *bookmarkToolBar = toolbar; - m_bookmarkToolBars.append(toolbar); - connect(bookmarkToolBar, SIGNAL(customContextMenuRequested(const QPoint &)), + m_bookmarkToolBars.append(bookmarkToolBar); + bookmarkToolBar->setContextMenuPolicy(Qt::CustomContextMenu); + connect(bookmarkToolbar, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(contextMenu(const QPoint &))); slotBookmarksChanged("", ""); @@ -246,6 +329,8 @@ void BookmarkProvider::slotBookmarksChanged(const QString &group, const QString Q_UNUSED(group) Q_UNUSED(caller) + m_completion->clear(); + foreach(KToolBar *bookmarkToolBar, m_bookmarkToolBars) { if (bookmarkToolBar) @@ -255,7 +340,6 @@ void BookmarkProvider::slotBookmarksChanged(const QString &group, const QString return; bookmarkToolBar->clear(); - m_completion->clear(); KBookmark bookmark = toolBarGroup.first(); while (!bookmark.isNull()) @@ -286,11 +370,11 @@ void BookmarkProvider::contextMenu(const QPoint &point) if(!bookmarkToolBar) return; - KAction* action = dynamic_cast(bookmarkToolBar->actionAt(point)); + KBookmarkActionInterface* action = dynamic_cast(bookmarkToolBar->actionAt(point)); if (!action) return; - KMenu *menu = m_bookmarkMenu->viewContextMenu(action); + KMenu *menu = new BookmarkContextMenu(action->bookmark(), bookmarkManager(), bookmarkOwner()); if (!menu) return; @@ -313,17 +397,10 @@ KAction *BookmarkProvider::fillBookmarkBar(const KBookmark &bookmark) { if (bookmark.isGroup()) { - KBookmarkGroup group = bookmark.toGroup(); - KBookmark bm = group.first(); - BookmarkActionMenu *menuAction = new BookmarkActionMenu(group, this); - - while (!bm.isNull()) - { - menuAction->addAction(fillBookmarkBar(bm)); - bm = group.next(bm); - } + KBookmarkActionMenu *menuAction = new KBookmarkActionMenu(bookmark.toGroup(), this); + menuAction->setDelayed(false); + new BookmarkMenu(bookmarkManager(), bookmarkOwner(), menuAction->menu(), bookmark.address()); - menuAction->addFolderActions(); return menuAction; } @@ -336,8 +413,7 @@ KAction *BookmarkProvider::fillBookmarkBar(const KBookmark &bookmark) return a; } else - { - m_completion->addItem(bookmark.url().url()); + { return new KBookmarkAction(bookmark, m_owner, this); } } @@ -400,57 +476,3 @@ QString BookmarkProvider::titleForBookmarkUrl(const KBookmark &bookmark, QString return title; } - - -// ---------------------------------------------------------------------------------------------- - - -BookmarkActionMenu::BookmarkActionMenu(const KBookmarkGroup &bm, QObject *parent) - : KBookmarkActionMenu(bm, bm.text(), parent) - , m_group(bm) -{ - setIcon(KIcon(bm.icon())); - setDelayed(false); -} - - -void BookmarkActionMenu::addFolderActions() -{ - addSeparator(); - KAction *action; - - if(!m_group.first().isNull()) - { - KBookmark bookmark = m_group.first(); - - while(bookmark.isGroup() || bookmark.isSeparator()) - { - bookmark = m_group.next(bookmark); - } - - if(!bookmark.isNull()) - { - action = new KAction(KIcon("tab-new"), i18n("Open Folder in Tabs"), this); - connect(action, SIGNAL(triggered(bool)), this, SLOT(openActionInTabs())); - addAction(action); - } - } - - action = new KAction(KIcon("bookmark-new"), i18n("Add Bookmark Here"), this); - connect(action, SIGNAL(triggered(bool)), this, SLOT(bookmarkCurrentPage())); - addAction(action); -} - - -void BookmarkActionMenu::bookmarkCurrentPage() -{ - m_group.addBookmark(Application::bookmarkProvider()->bookmarkOwner()->currentTitle(), KUrl(Application::bookmarkProvider()->bookmarkOwner()->currentUrl())); - Application::bookmarkProvider()->bookmarkManager()->emitChanged(); -} - - -void BookmarkActionMenu::openActionInTabs() -{ - if(!m_group.isNull()) - Application::bookmarkProvider()->bookmarkOwner()->openFolderinTabs(m_group); -} diff --git a/src/bookmarks/bookmarksmanager.h b/src/bookmarks/bookmarksmanager.h index 7fb02970..8d09e122 100644 --- a/src/bookmarks/bookmarksmanager.h +++ b/src/bookmarks/bookmarksmanager.h @@ -113,7 +113,7 @@ public: * The default implementation does nothing. * This is only called if supportsTabs() returns true */ - virtual void openFolderinTabs(const KBookmarkGroup &bm); + virtual void openFolderinTabs(const KBookmarkGroup &bookmark); virtual QList< QPair > currentBookmarkList() const; @@ -133,7 +133,6 @@ signals: // KDE Includes #include - /** * This class represent the rekonq bookmarks menu. * It's just a simple class inherited from KBookmarkMenu @@ -148,13 +147,23 @@ public: KBookmarkOwner* owner, KMenu* menu, KActionCollection* actionCollection); + BookmarkMenu(KBookmarkManager *manager, + KBookmarkOwner *owner, + KMenu *parentMenu, + const QString &parentAddress); ~BookmarkMenu(); - virtual KMenu *viewContextMenu(QAction* action); +protected: + virtual KMenu * contextMenu(QAction * act); + virtual void refill(); + virtual QAction* actionForBookmark(const KBookmark &bookmark); protected slots: void slotAddBookmark(); +private: + void addOpenFolderInTabs(); + }; @@ -265,25 +274,4 @@ private: }; -// ------------------------------------------------------------------------------------------ - - -class BookmarkActionMenu : public KBookmarkActionMenu -{ - Q_OBJECT - -public: - BookmarkActionMenu (const KBookmarkGroup &bm, QObject *parent); - void addFolderActions(); - -private slots: - void openActionInTabs(); - void bookmarkCurrentPage(); - -private: - KBookmarkGroup m_group; - -}; - - #endif diff --git a/src/bookmarks/bookmarkstreemodel.cpp b/src/bookmarks/bookmarkstreemodel.cpp index 836401a6..e731940c 100644 --- a/src/bookmarks/bookmarkstreemodel.cpp +++ b/src/bookmarks/bookmarkstreemodel.cpp @@ -323,6 +323,11 @@ void BookmarksTreeModel::populate( BtmItem *node, KBookmarkGroup bmg) BtmItem *newChild = new BtmItem( bm ); if( bm.isGroup() ) populate( newChild, bm.toGroup() ); + else + { + Application::bookmarkProvider()->completionObject()->addItem(bm.url().url()); + //QMessageBox::information(new QWidget(), "", bm.url().url()); + } node->appendChild( newChild ); bm = bmg.next( bm ); -- cgit v1.2.1 From bac4a843a3e11fe2a7af52cb4fab189761515e7c Mon Sep 17 00:00:00 2001 From: Yoann Laissus Date: Sat, 17 Apr 2010 16:18:39 +0200 Subject: Forget to save file --- src/bookmarks/bookmarkstreemodel.cpp | 5 ----- 1 file changed, 5 deletions(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarkstreemodel.cpp b/src/bookmarks/bookmarkstreemodel.cpp index e731940c..836401a6 100644 --- a/src/bookmarks/bookmarkstreemodel.cpp +++ b/src/bookmarks/bookmarkstreemodel.cpp @@ -323,11 +323,6 @@ void BookmarksTreeModel::populate( BtmItem *node, KBookmarkGroup bmg) BtmItem *newChild = new BtmItem( bm ); if( bm.isGroup() ) populate( newChild, bm.toGroup() ); - else - { - Application::bookmarkProvider()->completionObject()->addItem(bm.url().url()); - //QMessageBox::information(new QWidget(), "", bm.url().url()); - } node->appendChild( newChild ); bm = bmg.next( bm ); -- cgit v1.2.1 From 7fe3643b5401e73d2e27e552fb64222fe44dc643 Mon Sep 17 00:00:00 2001 From: Yoann Laissus Date: Sat, 17 Apr 2010 17:55:04 +0200 Subject: Fix compile --- src/bookmarks/bookmarksmanager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/bookmarks') diff --git a/src/bookmarks/bookmarksmanager.cpp b/src/bookmarks/bookmarksmanager.cpp index e7b24a09..df6bc54b 100644 --- a/src/bookmarks/bookmarksmanager.cpp +++ b/src/bookmarks/bookmarksmanager.cpp @@ -311,7 +311,7 @@ void BookmarkProvider::setupBookmarkBar(KToolBar *toolbar) KToolBar *bookmarkToolBar = toolbar; m_bookmarkToolBars.append(bookmarkToolBar); bookmarkToolBar->setContextMenuPolicy(Qt::CustomContextMenu); - connect(bookmarkToolbar, SIGNAL(customContextMenuRequested(const QPoint &)), + connect(bookmarkToolBar, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(contextMenu(const QPoint &))); slotBookmarksChanged("", ""); -- cgit v1.2.1